Snap for 9550355 from 430872bd0769d04a4a3fe6607ed75128f1b011f9 to sdk-release
Change-Id: I41a193362046578bc2f636e843b5e4a0b99cc0f7
diff --git a/Android.bp b/Android.bp
index 1e75e9f..d96d260 100644
--- a/Android.bp
+++ b/Android.bp
@@ -16,59 +16,6 @@
default_applicable_licenses: ["Android-Apache-2.0"],
}
-java_plugin {
- name: "java_api_finder",
-
- static_libs: [
- "java_api_used_by_mainline_module",
- ],
-}
-
-java_library_host {
- name: "java_api_used_by_mainline_module",
-
- srcs: ["src/main/**/*.java"],
-
- static_libs: [
- "//external/error_prone:error_prone_core",
- ],
-
- libs: [
- "//external/auto:auto_service_annotations",
- ],
-
- plugins: [
- "//external/auto:auto_service_plugin",
- ],
-
- javacflags: ["-verbose"],
-}
-
-java_test_host {
- name: "JavaApiUsedByMainlineModuleTest",
- srcs: ["src/test/**/JavaApiUsedByMainlineModuleTest.java"],
- java_resource_dirs: ["src/test/res"],
- java_resources: [":java_api_used_by_mainline_module_testdata"],
- static_libs: [
- "java_api_used_by_mainline_module",
- "error_prone_test_helpers",
- "hamcrest-library",
- "hamcrest",
- "platform-test-annotations",
- "junit",
- "truth-prebuilt",
- ],
- test_options: {
- unit_test: true,
- },
-}
-
-filegroup {
- name: "java_api_used_by_mainline_module_testdata",
- path: "src/test/res",
- srcs: ["src/test/res/**/*.java"],
-}
-
// ------------------------- AndroidLint Checkers ----------------------------------
java_library_host {
diff --git a/checks/src/main/java/com/android/apifinder/ApiFinderDetector.kt b/checks/src/main/java/com/android/apifinder/ApiFinderDetector.kt
index 5132fcf..3d68727 100644
--- a/checks/src/main/java/com/android/apifinder/ApiFinderDetector.kt
+++ b/checks/src/main/java/com/android/apifinder/ApiFinderDetector.kt
@@ -1,4 +1,4 @@
-package com.android.apifinder
+package com.google.android.apifinder
import com.android.tools.lint.client.api.UElementHandler
import com.android.tools.lint.detector.api.*
diff --git a/checks/src/main/java/com/android/apifinder/ApiFinderIssueRegistry.kt b/checks/src/main/java/com/android/apifinder/ApiFinderIssueRegistry.kt
index f2f91e2..0bd1b3a 100644
--- a/checks/src/main/java/com/android/apifinder/ApiFinderIssueRegistry.kt
+++ b/checks/src/main/java/com/android/apifinder/ApiFinderIssueRegistry.kt
@@ -1,12 +1,13 @@
-package com.android.apifinder
+package com.google.android.apifinder
import com.android.tools.lint.client.api.IssueRegistry
+import com.android.tools.lint.detector.api.CURRENT_API
import com.google.auto.service.AutoService
@AutoService(IssueRegistry::class)
@Suppress("UnstableApiUsage")
class ApiFinderIssueRegistry : IssueRegistry() {
override val api: Int
- get() = 7
+ get() = CURRENT_API
override val issues = listOf(ApiFinderDetector.ISSUE)
}
diff --git a/checks/src/test/java/com/android/apifinder/ApiFinderDetectorTest.kt b/checks/src/test/java/com/android/apifinder/ApiFinderDetectorTest.kt
index 397fe07..f9dd466 100644
--- a/checks/src/test/java/com/android/apifinder/ApiFinderDetectorTest.kt
+++ b/checks/src/test/java/com/android/apifinder/ApiFinderDetectorTest.kt
@@ -1,4 +1,4 @@
-package com.android.apifinder
+package com.google.android.apifinder
import com.android.tools.lint.checks.infrastructure.LintDetectorTest
import com.android.tools.lint.detector.api.Detector
diff --git a/src/main/com/android/apifinder/JavaApiUsedByMainlineModule.java b/src/main/com/android/apifinder/JavaApiUsedByMainlineModule.java
deleted file mode 100644
index 8b76e42..0000000
--- a/src/main/com/android/apifinder/JavaApiUsedByMainlineModule.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (C) 2018 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.
- */
-
-package com.android.apifinder;
-
-import static com.google.errorprone.BugPattern.SeverityLevel.SUGGESTION;
-
-import com.google.auto.service.AutoService;
-import com.google.errorprone.BugPattern;
-import com.google.errorprone.VisitorState;
-import com.google.errorprone.bugpatterns.BugChecker;
-import com.google.errorprone.bugpatterns.BugChecker.MethodInvocationTreeMatcher;
-import com.google.errorprone.bugpatterns.BugChecker.NewClassTreeMatcher;
-import com.google.errorprone.matchers.Description;
-import com.google.errorprone.util.ASTHelpers;
-import com.sun.source.tree.MethodInvocationTree;
-import com.sun.source.tree.NewClassTree;
-import com.sun.tools.javac.code.Symbol;
-import com.sun.tools.javac.code.Symbol.MethodSymbol;
-import com.sun.tools.javac.code.Symbol.VarSymbol;
-import java.util.ArrayList;
-import java.util.List;
-import javax.lang.model.element.ElementKind;
-import javax.lang.model.element.Modifier;
-
-/** Bug checker to detect method or field used by a mainline module */
-@AutoService(BugChecker.class)
-@BugPattern(
- name = "JavaApiUsedByMainlineModule",
- summary = "Any public method used by a mainline module.",
- severity = SUGGESTION)
-public final class JavaApiUsedByMainlineModule extends BugChecker
- implements MethodInvocationTreeMatcher, NewClassTreeMatcher {
-
- /*
- * Checks if a method or class is private.
- * A method is considered as private method when any of the following condition met.
- * 1. Method is defined as private.
- * 2. Method's class is defined as private.
- * 3. Method's ancestor classes is defined as private.
- */
- private boolean isPrivate(Symbol sym) {
- Symbol tmpSym = sym;
- while (tmpSym != null) {
- if (!tmpSym.getModifiers().contains(Modifier.PUBLIC)) {
- return true;
- }
- tmpSym = ASTHelpers.enclosingClass(tmpSym);
- }
- return false;
- }
-
- /*
- * Constructs parameters. Only return parameter type.
- * For example
- * (int, boolean, java.lang.String)
- */
- private String constructParameters(Symbol sym) {
- List<VarSymbol> paramsList = ((MethodSymbol) sym).getParameters();
- List<StringBuilder> stringParamsList = new ArrayList();
- for (VarSymbol paramSymbol : paramsList) {
- StringBuilder tmpParam = new StringBuilder(paramSymbol.asType().toString());
-
- // Removes "<*>" in parameter type.
- if (tmpParam.indexOf("<") != -1) {
- tmpParam = tmpParam.replace(
- tmpParam.indexOf("<"), tmpParam.lastIndexOf(">") + 1, "");
- }
-
- stringParamsList.add(tmpParam);
- }
- return "(" + String.join(", ", stringParamsList) + ")";
- }
-
- @Override
- public Description matchMethodInvocation(MethodInvocationTree tree, VisitorState state) {
- Symbol sym = ASTHelpers.getSymbol(tree);
-
- // Exclude private function.
- if (isPrivate(sym)) {
- return Description.NO_MATCH;
- }
-
- // Constructs method name formatted as superClassName.className.methodName,
- // using supperClassName.className.className for constructor
- String methodName = sym.name.toString();
- List<String> nameList = new ArrayList();
- if (sym.getKind() == ElementKind.CONSTRUCTOR) {
- Symbol classSymbol = ASTHelpers.enclosingClass(sym);
- while (classSymbol != null) {
- nameList.add(0, classSymbol.name.toString());
- classSymbol = ASTHelpers.enclosingClass(classSymbol);
- }
- methodName = String.join(".", nameList);
- }
-
- String params = constructParameters(sym);
-
- return buildDescription(tree)
- .setMessage(
- String.format("%s.%s%s", ASTHelpers.enclosingClass(sym), methodName, params))
- .build();
- }
-
- @Override
- public Description matchNewClass(NewClassTree tree, VisitorState state) {
- Symbol sym = ASTHelpers.getSymbol(tree);
-
- // Excludes private class.
- if (isPrivate(sym)) {
- return Description.NO_MATCH;
- }
-
- String params = constructParameters(sym);
-
- // Constructs constructor name.
- Symbol tmpSymbol = ASTHelpers.enclosingClass(sym);
- List<String> nameList = new ArrayList();
- while (tmpSymbol != null) {
- nameList.add(0, tmpSymbol.name.toString());
- tmpSymbol = ASTHelpers.enclosingClass(tmpSymbol);
- }
- String constructorName = String.join(".", nameList);
-
- return buildDescription(tree)
- .setMessage(
- String.format(
- "%s.%s%s", ASTHelpers.enclosingClass(sym), constructorName, params))
- .build();
- }
-}
-
diff --git a/src/test/com/android/apifinder/JavaApiUsedByMainlineModuleTest.java b/src/test/com/android/apifinder/JavaApiUsedByMainlineModuleTest.java
deleted file mode 100644
index 9d79706..0000000
--- a/src/test/com/android/apifinder/JavaApiUsedByMainlineModuleTest.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.android.apifinder;
-
-import com.android.apifinder.JavaApiUsedByMainlineModule;
-import com.google.errorprone.CompilationTestHelper;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-/** Unit tests for {@link JavaApiUsedByMainlineModule}. */
-@RunWith(JUnit4.class)
-public final class JavaApiUsedByMainlineModuleTest {
-
- private CompilationTestHelper compilationHelper;
-
- @Before
- public void setUp() {
- compilationHelper = CompilationTestHelper.newInstance(
- JavaApiUsedByMainlineModule.class, getClass());
- }
-
- /*
- * The error prone testing library will run the plugin on the resource file.
- * The error prone testing library will compare the comment of each method in the
- * resource file to determine if the return value is expected.
- */
- @Test
- public void positiveFindPublicMethod() {
- compilationHelper
- .addSourceFile("JavaApiUsedByMainlineModuleCases.java").doTest();
- }
-}
diff --git a/src/test/res/com/android/apifinder/JavaApiUsedByMainlineModuleCases.java b/src/test/res/com/android/apifinder/JavaApiUsedByMainlineModuleCases.java
deleted file mode 100644
index 603871f..0000000
--- a/src/test/res/com/android/apifinder/JavaApiUsedByMainlineModuleCases.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.android.apifinder;
-
-public class JavaApiUsedByMainlineModuleCases {
-
- public class PublicSubClass {
- public void publicMethod() {}
-
- private void privateMethod() {}
- }
-
- private class PrivateSubClass {
- public void publicMethod() {}
- }
-
- public void testMethod() {
- // BUG: Diagnostic contains: JavaApiUsedByMainlineModuleCases.PublicSubClass
- // .JavaApiUsedByMainlineModuleCases.PublicSubClass()
- PublicSubClass publicTestClass = new PublicSubClass();
-
- // BUG: Diagnostic contains: JavaApiUsedByMainlineModuleCases.PublicSubClass.publicMethod()
- publicTestClass.publicMethod();
-
- /** Should not be reported since PrivateSubClass is a private class. */
- PrivateSubClass privateTestClass = new PrivateSubClass();
- privateTestClass.publicMethod();
- }
-}