Add bp2build metrics per module type
For example, new metrics at HEAD highlight that 99 of 1379 total cc_library_static modules are converted. Test: m bp2build, printproto Change-Id: I6cc4227124e9a130b75911f3e40e6585d731d00a
This commit is contained in:
parent
e7421c15dd
commit
492bd91a51
4 changed files with 97 additions and 29 deletions
|
@ -259,7 +259,9 @@ func GenerateBazelTargets(ctx *CodegenContext, generateFilegroups bool) (convers
|
|||
|
||||
// Simple metrics tracking for bp2build
|
||||
metrics := CodegenMetrics{
|
||||
ruleClassCount: make(map[string]uint64),
|
||||
ruleClassCount: make(map[string]uint64),
|
||||
convertedModuleTypeCount: make(map[string]uint64),
|
||||
totalModuleTypeCount: make(map[string]uint64),
|
||||
}
|
||||
|
||||
dirs := make(map[string]bool)
|
||||
|
@ -269,6 +271,7 @@ func GenerateBazelTargets(ctx *CodegenContext, generateFilegroups bool) (convers
|
|||
bpCtx := ctx.Context()
|
||||
bpCtx.VisitAllModules(func(m blueprint.Module) {
|
||||
dir := bpCtx.ModuleDir(m)
|
||||
moduleType := bpCtx.ModuleType(m)
|
||||
dirs[dir] = true
|
||||
|
||||
var targets []BazelTarget
|
||||
|
@ -292,7 +295,7 @@ func GenerateBazelTargets(ctx *CodegenContext, generateFilegroups bool) (convers
|
|||
// targets in the same BUILD file (or package).
|
||||
|
||||
// Log the module.
|
||||
metrics.AddConvertedModule(m.Name(), Handcrafted)
|
||||
metrics.AddConvertedModule(m, moduleType, Handcrafted)
|
||||
|
||||
pathToBuildFile := getBazelPackagePath(b)
|
||||
if _, exists := buildFileToAppend[pathToBuildFile]; exists {
|
||||
|
@ -312,7 +315,7 @@ func GenerateBazelTargets(ctx *CodegenContext, generateFilegroups bool) (convers
|
|||
// Handle modules converted to generated targets.
|
||||
|
||||
// Log the module.
|
||||
metrics.AddConvertedModule(m.Name(), Generated)
|
||||
metrics.AddConvertedModule(aModule, moduleType, Generated)
|
||||
|
||||
// Handle modules with unconverted deps. By default, emit a warning.
|
||||
if unconvertedDeps := aModule.GetUnconvertedBp2buildDeps(); len(unconvertedDeps) > 0 {
|
||||
|
@ -340,7 +343,7 @@ func GenerateBazelTargets(ctx *CodegenContext, generateFilegroups bool) (convers
|
|||
metrics.IncrementRuleClassCount(t.ruleClass)
|
||||
}
|
||||
} else {
|
||||
metrics.IncrementUnconvertedCount()
|
||||
metrics.AddUnconvertedModule(moduleType)
|
||||
return
|
||||
}
|
||||
case QueryView:
|
||||
|
|
|
@ -9,6 +9,7 @@ import (
|
|||
"android/soong/android"
|
||||
"android/soong/shared"
|
||||
"android/soong/ui/metrics/bp2build_metrics_proto"
|
||||
"github.com/google/blueprint"
|
||||
)
|
||||
|
||||
// Simple metrics struct to collect information about a Blueprint to BUILD
|
||||
|
@ -36,16 +37,24 @@ type CodegenMetrics struct {
|
|||
|
||||
// List of converted modules
|
||||
convertedModules []string
|
||||
|
||||
// Counts of converted modules by module type.
|
||||
convertedModuleTypeCount map[string]uint64
|
||||
|
||||
// Counts of total modules by module type.
|
||||
totalModuleTypeCount map[string]uint64
|
||||
}
|
||||
|
||||
// Serialize returns the protoized version of CodegenMetrics: bp2build_metrics_proto.Bp2BuildMetrics
|
||||
func (metrics *CodegenMetrics) Serialize() bp2build_metrics_proto.Bp2BuildMetrics {
|
||||
return bp2build_metrics_proto.Bp2BuildMetrics{
|
||||
GeneratedModuleCount: metrics.generatedModuleCount,
|
||||
HandCraftedModuleCount: metrics.handCraftedModuleCount,
|
||||
UnconvertedModuleCount: metrics.unconvertedModuleCount,
|
||||
RuleClassCount: metrics.ruleClassCount,
|
||||
ConvertedModules: metrics.convertedModules,
|
||||
GeneratedModuleCount: metrics.generatedModuleCount,
|
||||
HandCraftedModuleCount: metrics.handCraftedModuleCount,
|
||||
UnconvertedModuleCount: metrics.unconvertedModuleCount,
|
||||
RuleClassCount: metrics.ruleClassCount,
|
||||
ConvertedModules: metrics.convertedModules,
|
||||
ConvertedModuleTypeCount: metrics.convertedModuleTypeCount,
|
||||
TotalModuleTypeCount: metrics.totalModuleTypeCount,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -113,8 +122,9 @@ func (metrics *CodegenMetrics) IncrementRuleClassCount(ruleClass string) {
|
|||
metrics.ruleClassCount[ruleClass] += 1
|
||||
}
|
||||
|
||||
func (metrics *CodegenMetrics) IncrementUnconvertedCount() {
|
||||
func (metrics *CodegenMetrics) AddUnconvertedModule(moduleType string) {
|
||||
metrics.unconvertedModuleCount += 1
|
||||
metrics.totalModuleTypeCount[moduleType] += 1
|
||||
}
|
||||
|
||||
func (metrics *CodegenMetrics) TotalModuleCount() uint64 {
|
||||
|
@ -136,10 +146,12 @@ const (
|
|||
Handcrafted
|
||||
)
|
||||
|
||||
func (metrics *CodegenMetrics) AddConvertedModule(moduleName string, conversionType ConversionType) {
|
||||
func (metrics *CodegenMetrics) AddConvertedModule(m blueprint.Module, moduleType string, conversionType ConversionType) {
|
||||
// Undo prebuilt_ module name prefix modifications
|
||||
moduleName = android.RemoveOptionalPrebuiltPrefix(moduleName)
|
||||
moduleName := android.RemoveOptionalPrebuiltPrefix(m.Name())
|
||||
metrics.convertedModules = append(metrics.convertedModules, moduleName)
|
||||
metrics.convertedModuleTypeCount[moduleType] += 1
|
||||
metrics.totalModuleTypeCount[moduleType] += 1
|
||||
|
||||
if conversionType == Handcrafted {
|
||||
metrics.handCraftedModuleCount += 1
|
||||
|
|
|
@ -49,6 +49,10 @@ type Bp2BuildMetrics struct {
|
|||
RuleClassCount map[string]uint64 `protobuf:"bytes,4,rep,name=ruleClassCount,proto3" json:"ruleClassCount,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
|
||||
// List of converted modules
|
||||
ConvertedModules []string `protobuf:"bytes,5,rep,name=convertedModules,proto3" json:"convertedModules,omitempty"`
|
||||
// Counts of converted modules by module type.
|
||||
ConvertedModuleTypeCount map[string]uint64 `protobuf:"bytes,6,rep,name=convertedModuleTypeCount,proto3" json:"convertedModuleTypeCount,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
|
||||
// Counts of total modules by module type.
|
||||
TotalModuleTypeCount map[string]uint64 `protobuf:"bytes,7,rep,name=totalModuleTypeCount,proto3" json:"totalModuleTypeCount,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
|
||||
}
|
||||
|
||||
func (x *Bp2BuildMetrics) Reset() {
|
||||
|
@ -118,13 +122,27 @@ func (x *Bp2BuildMetrics) GetConvertedModules() []string {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (x *Bp2BuildMetrics) GetConvertedModuleTypeCount() map[string]uint64 {
|
||||
if x != nil {
|
||||
return x.ConvertedModuleTypeCount
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *Bp2BuildMetrics) GetTotalModuleTypeCount() map[string]uint64 {
|
||||
if x != nil {
|
||||
return x.TotalModuleTypeCount
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
var File_bp2build_metrics_proto protoreflect.FileDescriptor
|
||||
|
||||
var file_bp2build_metrics_proto_rawDesc = []byte{
|
||||
0x0a, 0x16, 0x62, 0x70, 0x32, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69,
|
||||
0x63, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f,
|
||||
0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x62, 0x70, 0x32, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d,
|
||||
0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0x8f, 0x03, 0x0a, 0x0f, 0x42, 0x70, 0x32, 0x42, 0x75,
|
||||
0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0xac, 0x06, 0x0a, 0x0f, 0x42, 0x70, 0x32, 0x42, 0x75,
|
||||
0x69, 0x6c, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x32, 0x0a, 0x14, 0x67, 0x65,
|
||||
0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x75,
|
||||
0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61,
|
||||
|
@ -145,15 +163,40 @@ var file_bp2build_metrics_proto_rawDesc = []byte{
|
|||
0x6c, 0x61, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6e,
|
||||
0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20,
|
||||
0x03, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x4d, 0x6f,
|
||||
0x64, 0x75, 0x6c, 0x65, 0x73, 0x1a, 0x41, 0x0a, 0x13, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6c, 0x61,
|
||||
0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
|
||||
0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
|
||||
0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76,
|
||||
0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x31, 0x5a, 0x2f, 0x61, 0x6e, 0x64, 0x72,
|
||||
0x6f, 0x69, 0x64, 0x2f, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x2f, 0x75, 0x69, 0x2f, 0x6d, 0x65, 0x74,
|
||||
0x72, 0x69, 0x63, 0x73, 0x2f, 0x62, 0x70, 0x32, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65,
|
||||
0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f,
|
||||
0x74, 0x6f, 0x33,
|
||||
0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x87, 0x01, 0x0a, 0x18, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72,
|
||||
0x74, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75,
|
||||
0x6e, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x73, 0x6f, 0x6f, 0x6e, 0x67,
|
||||
0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x62, 0x70, 0x32, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f,
|
||||
0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x42, 0x70, 0x32, 0x42, 0x75, 0x69, 0x6c, 0x64,
|
||||
0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65,
|
||||
0x64, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74,
|
||||
0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x18, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64,
|
||||
0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12,
|
||||
0x7b, 0x0a, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x79,
|
||||
0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x47, 0x2e,
|
||||
0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x62, 0x70, 0x32, 0x62,
|
||||
0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x42, 0x70, 0x32,
|
||||
0x42, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x54, 0x6f, 0x74,
|
||||
0x61, 0x6c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e,
|
||||
0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x6f, 0x64,
|
||||
0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x41, 0x0a, 0x13,
|
||||
0x52, 0x75, 0x6c, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6e,
|
||||
0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
|
||||
0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
|
||||
0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
|
||||
0x4b, 0x0a, 0x1d, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x75,
|
||||
0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79,
|
||||
0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
|
||||
0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
|
||||
0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x47, 0x0a, 0x19,
|
||||
0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43,
|
||||
0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
|
||||
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
|
||||
0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
|
||||
0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x31, 0x5a, 0x2f, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64,
|
||||
0x2f, 0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x2f, 0x75, 0x69, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
|
||||
0x73, 0x2f, 0x62, 0x70, 0x32, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69,
|
||||
0x63, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
}
|
||||
|
||||
var (
|
||||
|
@ -168,18 +211,22 @@ func file_bp2build_metrics_proto_rawDescGZIP() []byte {
|
|||
return file_bp2build_metrics_proto_rawDescData
|
||||
}
|
||||
|
||||
var file_bp2build_metrics_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
|
||||
var file_bp2build_metrics_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
|
||||
var file_bp2build_metrics_proto_goTypes = []interface{}{
|
||||
(*Bp2BuildMetrics)(nil), // 0: soong_build_bp2build_metrics.Bp2BuildMetrics
|
||||
nil, // 1: soong_build_bp2build_metrics.Bp2BuildMetrics.RuleClassCountEntry
|
||||
nil, // 2: soong_build_bp2build_metrics.Bp2BuildMetrics.ConvertedModuleTypeCountEntry
|
||||
nil, // 3: soong_build_bp2build_metrics.Bp2BuildMetrics.TotalModuleTypeCountEntry
|
||||
}
|
||||
var file_bp2build_metrics_proto_depIdxs = []int32{
|
||||
1, // 0: soong_build_bp2build_metrics.Bp2BuildMetrics.ruleClassCount:type_name -> soong_build_bp2build_metrics.Bp2BuildMetrics.RuleClassCountEntry
|
||||
1, // [1:1] is the sub-list for method output_type
|
||||
1, // [1:1] is the sub-list for method input_type
|
||||
1, // [1:1] is the sub-list for extension type_name
|
||||
1, // [1:1] is the sub-list for extension extendee
|
||||
0, // [0:1] is the sub-list for field type_name
|
||||
2, // 1: soong_build_bp2build_metrics.Bp2BuildMetrics.convertedModuleTypeCount:type_name -> soong_build_bp2build_metrics.Bp2BuildMetrics.ConvertedModuleTypeCountEntry
|
||||
3, // 2: soong_build_bp2build_metrics.Bp2BuildMetrics.totalModuleTypeCount:type_name -> soong_build_bp2build_metrics.Bp2BuildMetrics.TotalModuleTypeCountEntry
|
||||
3, // [3:3] is the sub-list for method output_type
|
||||
3, // [3:3] is the sub-list for method input_type
|
||||
3, // [3:3] is the sub-list for extension type_name
|
||||
3, // [3:3] is the sub-list for extension extendee
|
||||
0, // [0:3] is the sub-list for field type_name
|
||||
}
|
||||
|
||||
func init() { file_bp2build_metrics_proto_init() }
|
||||
|
@ -207,7 +254,7 @@ func file_bp2build_metrics_proto_init() {
|
|||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||
RawDescriptor: file_bp2build_metrics_proto_rawDesc,
|
||||
NumEnums: 0,
|
||||
NumMessages: 2,
|
||||
NumMessages: 4,
|
||||
NumExtensions: 0,
|
||||
NumServices: 0,
|
||||
},
|
||||
|
|
|
@ -32,4 +32,10 @@ message Bp2BuildMetrics {
|
|||
|
||||
// List of converted modules
|
||||
repeated string convertedModules = 5;
|
||||
|
||||
// Counts of converted modules by module type.
|
||||
map<string, uint64> convertedModuleTypeCount = 6;
|
||||
|
||||
// Counts of total modules by module type.
|
||||
map<string, uint64> totalModuleTypeCount = 7;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue