package main func init() { register(Check{ Seq: 21, ID: "2b", Title: "Plugin proto ownership", Run: func(ctx *ScanContext, rep *Reporter) { var protoOwnershipViolations []protoOwnershipViolation for _, target := range ctx.backendTargets { if !isPluginModuleRoot(target.root) { continue } violations, err := checkPluginProtoOwnership(target.root, target.displayOrRoot()) if err != nil { rep.Fatal("failed to check proto ownership for %s: %v", target.displayOrRoot(), err) } protoOwnershipViolations = append(protoOwnershipViolations, violations...) } for _, target := range ctx.pluginTargets { violations, err := checkPluginProtoOwnership(target.root, target.display) if err != nil { rep.Fatal("failed to check proto ownership for %s: %v", target.display, err) } protoOwnershipViolations = append(protoOwnershipViolations, violations...) } if len(protoOwnershipViolations) > 0 { rep.Fail("%d plugin proto ownership violation(s)", len(protoOwnershipViolations)) for _, v := range protoOwnershipViolations { rep.Findingf("%s [%s] local proto missing; matching proto exists in %s", v.root, v.namespace, v.coreProto) } } else { rep.OK("Plugin proto ownership is clean") } }, }) }