summaryrefslogtreecommitdiff
path: root/api/Android.bp
diff options
context:
space:
mode:
authorPedro Loureiro <pedroql@google.com>2021-05-26 15:50:07 +0000
committerPedro Loureiro <pedroql@google.com>2021-06-22 10:24:22 +0000
commitb91f45d6f488f87b8e5345427a992978973b5e27 (patch)
tree3f9bb8aa2cf13b35f5bfba036a19be6686d5cb22 /api/Android.bp
parentf3dd83dbae7ffdae71f0e9bdb3012c4cc3a0b06e (diff)
Add lint database filtering tool
lint database file (api-versions.xml) is used for NewApi checks. These checks were written thinking about app developers. When used inside the platform codebase, quite often it produces false positives which make relying on it cumbersome. This CL removes APIs introduced by mainline modules from the lint database to remove many such false positives. While some of them might be real issues, the alternative would be not turning these checks on at all. Bug: 186478867 Bug: 177434707 Test: m lint-check Test: m filter-api-versions Test: atest api_versions_trimmer_unittests Change-Id: Ic45db0b71a2f13dc456463ce04b2f7744a0e330c
Diffstat (limited to 'api/Android.bp')
-rw-r--r--api/Android.bp73
1 files changed, 73 insertions, 0 deletions
diff --git a/api/Android.bp b/api/Android.bp
index a84e6a6cb031..2ea180ebf598 100644
--- a/api/Android.bp
+++ b/api/Android.bp
@@ -24,6 +24,41 @@ package {
default_applicable_licenses: ["frameworks_base_license"],
}
+python_binary_host {
+ name: "api_versions_trimmer",
+ srcs: ["api_versions_trimmer.py"],
+ version: {
+ py2: {
+ enabled: false,
+ },
+ py3: {
+ enabled: true,
+ embedded_launcher: false,
+ },
+ },
+}
+
+python_test_host {
+ name: "api_versions_trimmer_unittests",
+ main: "api_versions_trimmer_unittests.py",
+ srcs: [
+ "api_versions_trimmer_unittests.py",
+ "api_versions_trimmer.py",
+ ],
+ test_options: {
+ unit_test: true,
+ },
+ version: {
+ py2: {
+ enabled: false,
+ },
+ py3: {
+ enabled: true,
+ embedded_launcher: false,
+ },
+ },
+}
+
metalava_cmd = "$(location metalava)"
// Silence reflection warnings. See b/168689341
metalava_cmd += " -J--add-opens=java.base/java.util=ALL-UNNAMED "
@@ -431,3 +466,41 @@ genrule {
},
],
}
+
+// This rule will filter classes present in the jar files of mainline modules
+// from the lint database in api-versions.xml.
+// This is done to reduce the number of false positive NewApi findings in
+// java libraries that compile against the module SDK
+genrule {
+ name: "api-versions-xml-public-filtered",
+ srcs: [
+ // Note: order matters: first parameter is the full api-versions.xml
+ // after that the stubs files in any order
+ // stubs files are all modules that export API surfaces EXCEPT ART
+ ":framework-doc-stubs{.api_versions.xml}",
+ ":android.net.ipsec.ike.stubs{.jar}",
+ ":conscrypt.module.public.api.stubs{.jar}",
+ ":framework-appsearch.stubs{.jar}",
+ ":framework-connectivity.stubs{.jar}",
+ ":framework-graphics.stubs{.jar}",
+ ":framework-media.stubs{.jar}",
+ ":framework-mediaprovider.stubs{.jar}",
+ ":framework-permission.stubs{.jar}",
+ ":framework-permission-s.stubs{.jar}",
+ ":framework-scheduling.stubs{.jar}",
+ ":framework-sdkextensions.stubs{.jar}",
+ ":framework-statsd.stubs{.jar}",
+ ":framework-tethering.stubs{.jar}",
+ ":framework-wifi.stubs{.jar}",
+ ":i18n.module.public.api.stubs{.jar}",
+ ],
+ out: ["api-versions-public-filtered.xml"],
+ tools: ["api_versions_trimmer"],
+ cmd: "$(location api_versions_trimmer) $(out) $(in)",
+ dist: {
+ targets: [
+ "sdk",
+ "win_sdk",
+ ],
+ },
+}