aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Android.bp110
-rw-r--r--LICENSE19
-rw-r--r--METADATA13
-rw-r--r--MODULE_LICENSE_MIT0
-rw-r--r--NOTICE19
-rw-r--r--jar-infer/jar-infer-lib/src/main/java/com/uber/nullaway/jarinfer/BytecodeAnnotator.java2
6 files changed, 162 insertions, 1 deletions
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..6e5ef80
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,110 @@
+//
+// Copyright (C) 2022 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// Build NullAway from sources for the platform
+//
+// Note: this is only intended to be used for the platform development. This is *not* intended
+// to be used in the SDK where apps can use the official jacoco release.
+package {
+ default_applicable_licenses: ["external_nullaway_license"],
+}
+
+// See: http://go/android-license-faq
+license {
+ name: "external_nullaway_license",
+ visibility: [":__subpackages__"],
+ license_kinds: [
+ "SPDX-license-identifier-Apache-2.0",
+ "SPDX-license-identifier-GPL-2.0-with-classpath-exception",
+ "SPDX-license-identifier-MIT",
+ ],
+ license_text: [
+ "LICENSE.txt",
+ "LICENSE",
+ "NOTICE",
+ ],
+}
+
+java_plugin {
+ name: "nullaway_plugin",
+
+ static_libs: [
+ "nullaway_lib",
+ ],
+}
+
+java_library_host {
+ name: "nullaway_lib",
+
+ srcs: [
+ "nullaway/src/**/*.java",
+ ":nullaway_fake_contract_annotation",
+ ],
+
+ exclude_srcs: ["nullaway/src/test/**/*.java"],
+
+ static_libs: [
+ "guava",
+ "//external/error_prone:error_prone_checkerframework_dataflow_nullaway",
+ "//external/error_prone:error_prone_core",
+ "nullaway_annotations",
+ ],
+
+ libs: [
+ "auto_service_annotations",
+ "auto_value_annotations",
+ ],
+
+ plugins: [
+ "auto_service_plugin",
+ "auto_value_plugin",
+ ],
+
+ javacflags: [
+ "--add-modules=jdk.compiler",
+ "--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED",
+ "--add-exports jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED",
+ "--add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED",
+ "--add-exports jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED",
+ "--add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED",
+ "--add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED",
+ "--add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED",
+ ],
+}
+
+// Nullaway depends on the Contract annotation, but we don't have it imported into android.
+// Create a fake stub annotation to use instead.
+genrule {
+ name: "nullaway_fake_contract_annotation",
+ out: ["org/jetbrains/annotations/Contract.java"],
+ cmd: "echo 'package org.jetbrains.annotations;' >> $(out) && " +
+ "echo 'import java.lang.annotation.*;' >> $(out) && " +
+ "echo '@Retention(RetentionPolicy.CLASS)' >> $(out) && " +
+ "echo '@Target({ElementType.METHOD, ElementType.CONSTRUCTOR})' >> $(out) && " +
+ "echo 'public @interface Contract {' >> $(out) && " +
+ "echo ' String value() default \"\";' >> $(out) && " +
+ "echo '}' >> $(out)",
+ visibility: ["//visibility:private"],
+}
+
+java_library {
+ name: "nullaway_annotations",
+ host_supported: true,
+
+ srcs: [
+ "annotations/src/**/*.java"
+ ],
+}
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..858e024
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2017 Uber Technologies, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/METADATA b/METADATA
new file mode 100644
index 0000000..aaad963
--- /dev/null
+++ b/METADATA
@@ -0,0 +1,13 @@
+name: "nullaway"
+description:
+ "Null-safety checking tool"
+
+third_party {
+ url {
+ type: GIT
+ value: "https://github.com/uber/nullaway"
+ }
+ version: "0.9.5"
+ last_upgrade_date { year: 2022 month: 02 day: 04 }
+ license_type: NOTICE
+}
diff --git a/MODULE_LICENSE_MIT b/MODULE_LICENSE_MIT
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/MODULE_LICENSE_MIT
diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000..858e024
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,19 @@
+Copyright (c) 2017 Uber Technologies, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/jar-infer/jar-infer-lib/src/main/java/com/uber/nullaway/jarinfer/BytecodeAnnotator.java b/jar-infer/jar-infer-lib/src/main/java/com/uber/nullaway/jarinfer/BytecodeAnnotator.java
index b0bc58e..52498fd 100644
--- a/jar-infer/jar-infer-lib/src/main/java/com/uber/nullaway/jarinfer/BytecodeAnnotator.java
+++ b/jar-infer/jar-infer-lib/src/main/java/com/uber/nullaway/jarinfer/BytecodeAnnotator.java
@@ -153,7 +153,7 @@ public final class BytecodeAnnotator {
throws IOException {
ClassReader cr = new ClassReader(is);
ClassWriter cw = new ClassWriter(0);
- ClassNode cn = new ClassNode(Opcodes.ASM7);
+ ClassNode cn = new ClassNode(Opcodes.ASM9);
cr.accept(cn, 0);
String className = cn.name.replace('/', '.');