diff options
-rw-r--r-- | Android.bp | 110 | ||||
-rw-r--r-- | LICENSE | 19 | ||||
-rw-r--r-- | METADATA | 13 | ||||
-rw-r--r-- | MODULE_LICENSE_MIT | 0 | ||||
-rw-r--r-- | NOTICE | 19 | ||||
-rw-r--r-- | jar-infer/jar-infer-lib/src/main/java/com/uber/nullaway/jarinfer/BytecodeAnnotator.java | 2 |
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" + ], +} @@ -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 @@ -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('/', '.'); |