aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2020-06-18 15:56:48 -0700
committerColin Cross <ccross@android.com>2020-06-19 12:53:09 -0700
commit205a504053505699fbf19bb38ec07f8674a8fb1b (patch)
tree63c111b7223d73175183a74865c31fbb6084720f
parentaaf58061a09be3723d8bc644240394391a8d2e0d (diff)
downloadbuild_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.go3
-rw-r--r--java/lint.go21
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 {