diff options
author | Colin Cross <ccross@android.com> | 2020-06-18 15:56:48 -0700 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2020-06-19 12:53:09 -0700 |
commit | 205a504053505699fbf19bb38ec07f8674a8fb1b (patch) | |
tree | 63c111b7223d73175183a74865c31fbb6084720f | |
parent | aaf58061a09be3723d8bc644240394391a8d2e0d (diff) | |
download | build_soong-205a504053505699fbf19bb38ec07f8674a8fb1b.tar.gz build_soong-205a504053505699fbf19bb38ec07f8674a8fb1b.tar.bz2 build_soong-205a504053505699fbf19bb38ec07f8674a8fb1b.zip |
Support adding extra lint checks
Add a lint.extra_check_modules property to list modules to use as
plugins to Lint.
Bug: 153485543
Test: m checkbuild
Change-Id: I25c7799438cfec43163e757637c65b8657488d36
Merged-In: I25c7799438cfec43163e757637c65b8657488d36
(cherry picked from commit 92e4b46af561503506b54f9e4c925615bd03a069)
-rw-r--r-- | java/java.go | 3 | ||||
-rw-r--r-- | java/lint.go | 21 |
2 files changed, 24 insertions, 0 deletions
diff --git a/java/java.go b/java/java.go index 1d4d4597..9e196f43 100644 --- a/java/java.go +++ b/java/java.go @@ -574,6 +574,7 @@ var ( certificateTag = dependencyTag{name: "certificate"} instrumentationForTag = dependencyTag{name: "instrumentation_for"} usesLibTag = dependencyTag{name: "uses-library"} + extraLintCheckTag = dependencyTag{name: "extra-lint-check"} ) func IsLibDepTag(depTag blueprint.DependencyTag) bool { @@ -668,6 +669,8 @@ func (j *Module) AvailableFor(what string) bool { func (j *Module) deps(ctx android.BottomUpMutatorContext) { if ctx.Device() { + j.linter.deps(ctx) + sdkDep := decodeSdkDep(ctx, sdkContext(j)) if sdkDep.useDefaultLibs { ctx.AddVariationDependencies(nil, bootClasspathTag, config.DefaultBootclasspathLibraries...) diff --git a/java/lint.go b/java/lint.go index 441e110c..fac9a198 100644 --- a/java/lint.go +++ b/java/lint.go @@ -42,6 +42,9 @@ type LintProperties struct { // Checks that should be skipped. Disabled_checks []string + + // Modules that provide extra lint checks + Extra_check_modules []string } } @@ -76,6 +79,14 @@ func (l *linter) enabled() bool { return BoolDefault(l.properties.Lint.Enabled, true) } +func (l *linter) deps(ctx android.BottomUpMutatorContext) { + if !l.enabled() { + return + } + + ctx.AddFarVariationDependencies(ctx.Config().BuildOSCommonTarget.Variations(), extraLintCheckTag, l.properties.Lint.Extra_check_modules...) +} + func (l *linter) writeLintProjectXML(ctx android.ModuleContext, rule *android.RuleBuilder) (projectXMLPath, configXMLPath, cacheDir android.WritablePath, deps android.Paths) { @@ -179,6 +190,16 @@ func (l *linter) lint(ctx android.ModuleContext) { return } + extraLintCheckModules := ctx.GetDirectDepsWithTag(extraLintCheckTag) + for _, extraLintCheckModule := range extraLintCheckModules { + if dep, ok := extraLintCheckModule.(Dependency); ok { + l.extraLintCheckJars = append(l.extraLintCheckJars, dep.ImplementationAndResourcesJars()...) + } else { + ctx.PropertyErrorf("lint.extra_check_modules", + "%s is not a java module", ctx.OtherModuleName(extraLintCheckModule)) + } + } + rule := android.NewRuleBuilder() if l.manifest == nil { |