diff options
Diffstat (limited to 'bp2build/metrics.go')
-rw-r--r-- | bp2build/metrics.go | 60 |
1 files changed, 49 insertions, 11 deletions
diff --git a/bp2build/metrics.go b/bp2build/metrics.go index 645ef2d19..1cc4143c5 100644 --- a/bp2build/metrics.go +++ b/bp2build/metrics.go @@ -9,31 +9,69 @@ import ( // Simple metrics struct to collect information about a Blueprint to BUILD // conversion process. type CodegenMetrics struct { - // Total number of Soong/Blueprint modules - TotalModuleCount int + // Total number of Soong modules converted to generated targets + generatedModuleCount int - // Counts of generated Bazel targets per Bazel rule class - RuleClassCount map[string]int + // Total number of Soong modules converted to handcrafted targets + handCraftedModuleCount int + + // Total number of unconverted Soong modules + unconvertedModuleCount int - // Total number of handcrafted targets - handCraftedTargetCount int + // Counts of generated Bazel targets per Bazel rule class + ruleClassCount map[string]int moduleWithUnconvertedDepsMsgs []string + + convertedModules []string } // Print the codegen metrics to stdout. -func (metrics CodegenMetrics) Print() { +func (metrics *CodegenMetrics) Print() { generatedTargetCount := 0 - for _, ruleClass := range android.SortedStringKeys(metrics.RuleClassCount) { - count := metrics.RuleClassCount[ruleClass] + for _, ruleClass := range android.SortedStringKeys(metrics.ruleClassCount) { + count := metrics.ruleClassCount[ruleClass] fmt.Printf("[bp2build] %s: %d targets\n", ruleClass, count) generatedTargetCount += count } fmt.Printf( "[bp2build] Generated %d total BUILD targets and included %d handcrafted BUILD targets from %d Android.bp modules.\n With %d modules with unconverted deps \n\t%s", generatedTargetCount, - metrics.handCraftedTargetCount, - metrics.TotalModuleCount, + metrics.handCraftedModuleCount, + metrics.TotalModuleCount(), len(metrics.moduleWithUnconvertedDepsMsgs), strings.Join(metrics.moduleWithUnconvertedDepsMsgs, "\n\t")) } + +func (metrics *CodegenMetrics) IncrementRuleClassCount(ruleClass string) { + metrics.ruleClassCount[ruleClass] += 1 +} + +func (metrics *CodegenMetrics) IncrementUnconvertedCount() { + metrics.unconvertedModuleCount += 1 +} + +func (metrics *CodegenMetrics) TotalModuleCount() int { + return metrics.handCraftedModuleCount + + metrics.generatedModuleCount + + metrics.unconvertedModuleCount +} + +type ConversionType int + +const ( + Generated ConversionType = iota + Handcrafted +) + +func (metrics *CodegenMetrics) AddConvertedModule(moduleName string, conversionType ConversionType) { + // Undo prebuilt_ module name prefix modifications + moduleName = android.RemoveOptionalPrebuiltPrefix(moduleName) + metrics.convertedModules = append(metrics.convertedModules, moduleName) + + if conversionType == Handcrafted { + metrics.handCraftedModuleCount += 1 + } else if conversionType == Generated { + metrics.generatedModuleCount += 1 + } +} |