Add test coverage for `--experimental_run_android_lint_on_java_rules` and implement it in Starlark
PiperOrigin-RevId: 440900201
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java
index f7b1685..0543e88 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java
@@ -386,6 +386,7 @@
return addTestSupportToCompileTimeDeps;
}
+ @Override
public boolean runAndroidLint() {
return runAndroidLint;
}
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaConfigurationApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaConfigurationApi.java
index ab69217..9989c24 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaConfigurationApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaConfigurationApi.java
@@ -55,6 +55,12 @@
String starlarkOneVersionEnforcementLevel();
@StarlarkMethod(
+ name = "run_android_lint",
+ structField = true,
+ doc = "The value of the --experimental_run_android_lint_on_java_rules flag.")
+ boolean runAndroidLint();
+
+ @StarlarkMethod(
name = "multi_release_deploy_jars",
structField = true,
doc = "The value of the --incompatible_multi_release_deploy_jars flag.")
diff --git a/src/main/starlark/builtins_bzl/common/java/android_lint.bzl b/src/main/starlark/builtins_bzl/common/java/android_lint.bzl
index 702808b..551728f 100644
--- a/src/main/starlark/builtins_bzl/common/java/android_lint.bzl
+++ b/src/main/starlark/builtins_bzl/common/java/android_lint.bzl
@@ -45,9 +45,10 @@
"""
# assuming that linting is enabled for all java rules i.e.
- # --experimental_run_android_lint_on_java_rules=true and
# --experimental_limit_android_lint_to_android_constrained_java=false
+ # --experimental_run_android_lint_on_java_rules= is checked in java_common.bzl
+
if not (source_files or source_jars):
return None
diff --git a/src/main/starlark/builtins_bzl/common/java/java_common.bzl b/src/main/starlark/builtins_bzl/common/java/java_common.bzl
index d657ae1..2d158c4 100644
--- a/src/main/starlark/builtins_bzl/common/java/java_common.bzl
+++ b/src/main/starlark/builtins_bzl/common/java/java_common.bzl
@@ -147,10 +147,7 @@
_direct_source_jars = java_info.source_jars,
)
- # TODO(b/131760365): This is a hack, since the Starlark APIs don't have
- # an explicit test for "host" or "tool" configuration.
- if not (ctx.configuration == ctx.host_configuration or
- ctx.bin_dir.path.find("-exec-") >= 0) and not neverlink:
+ if ctx.fragments.java.run_android_lint:
generated_source_jars = [
output.generated_source_jar
for output in java_info.java_outputs