blob: 65b06c636e81d75fa1003e715dc30781a2e7f250 [file] [log] [blame]
Jingwen Chen164e0862021-02-19 00:48:40 -05001package bp2build
2
3import (
4 "android/soong/android"
5 "fmt"
6)
7
8// Simple metrics struct to collect information about a Blueprint to BUILD
9// conversion process.
10type CodegenMetrics struct {
11 // Total number of Soong/Blueprint modules
12 TotalModuleCount int
13
14 // Counts of generated Bazel targets per Bazel rule class
15 RuleClassCount map[string]int
Liz Kammerba3ea162021-02-17 13:22:03 -050016
17 // Total number of handcrafted targets
18 handCraftedTargetCount int
Jingwen Chen164e0862021-02-19 00:48:40 -050019}
20
21// Print the codegen metrics to stdout.
22func (metrics CodegenMetrics) Print() {
23 generatedTargetCount := 0
24 for _, ruleClass := range android.SortedStringKeys(metrics.RuleClassCount) {
25 count := metrics.RuleClassCount[ruleClass]
26 fmt.Printf("[bp2build] %s: %d targets\n", ruleClass, count)
27 generatedTargetCount += count
28 }
29 fmt.Printf(
Liz Kammerba3ea162021-02-17 13:22:03 -050030 "[bp2build] Generated %d total BUILD targets and included %d handcrafted BUILD targets from %d Android.bp modules.\n",
Jingwen Chen164e0862021-02-19 00:48:40 -050031 generatedTargetCount,
Liz Kammerba3ea162021-02-17 13:22:03 -050032 metrics.handCraftedTargetCount,
Jingwen Chen164e0862021-02-19 00:48:40 -050033 metrics.TotalModuleCount)
34}