From 50bff045abf7ad9f611a493799af34c6e3a15dec Mon Sep 17 00:00:00 2001 From: Liam Miller-Cushon Date: Thu, 7 Jan 2021 11:17:28 -0800 Subject: [PATCH] Don't make `UnnecessarilyFullyQualified` suggestions in `package-info`s Fixes https://github.com/google/error-prone/issues/1652 PiperOrigin-RevId: 350601073 --- .../bugpatterns/UnnecessarilyFullyQualified.java | 12 ++++++++++++ .../UnnecessarilyFullyQualifiedTest.java | 15 +++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/core/src/main/java/com/google/errorprone/bugpatterns/UnnecessarilyFullyQualified.java b/core/src/main/java/com/google/errorprone/bugpatterns/UnnecessarilyFullyQualified.java index 9fcf012664f..f99cac87b6c 100644 --- a/core/src/main/java/com/google/errorprone/bugpatterns/UnnecessarilyFullyQualified.java +++ b/core/src/main/java/com/google/errorprone/bugpatterns/UnnecessarilyFullyQualified.java @@ -71,6 +71,9 @@ public Description matchCompilationUnit(CompilationUnitTree tree, VisitorState s t -> getSymbol(tree) != null && !getGeneratedBy(getSymbol(tree), state).isEmpty())) { return NO_MATCH; } + if (isPackageInfo(tree)) { + return NO_MATCH; + } Table> table = HashBasedTable.create(); Set identifiersSeen = new HashSet<>(); new SuppressibleTreePathScanner() { @@ -183,4 +186,13 @@ public Void visitIdentifier(IdentifierTree identifierTree, Void aVoid) { } return NO_MATCH; } + + private boolean isPackageInfo(CompilationUnitTree tree) { + String name = tree.getSourceFile().getName(); + int idx = name.lastIndexOf('/'); + if (idx != -1) { + name = name.substring(idx + 1); + } + return name.equals("package-info.java"); + } } diff --git a/core/src/test/java/com/google/errorprone/bugpatterns/UnnecessarilyFullyQualifiedTest.java b/core/src/test/java/com/google/errorprone/bugpatterns/UnnecessarilyFullyQualifiedTest.java index 5780b3a99c6..1769519e0ad 100644 --- a/core/src/test/java/com/google/errorprone/bugpatterns/UnnecessarilyFullyQualifiedTest.java +++ b/core/src/test/java/com/google/errorprone/bugpatterns/UnnecessarilyFullyQualifiedTest.java @@ -16,6 +16,7 @@ package com.google.errorprone.bugpatterns; import com.google.errorprone.BugCheckerRefactoringTestHelper; +import com.google.errorprone.CompilationTestHelper; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @@ -130,4 +131,18 @@ public void builder() { "}") .doTest(); } + + @Test + public void packageInfo() { + CompilationTestHelper.newInstance(UnnecessarilyFullyQualified.class, getClass()) + .addSourceLines( + "a/A.java", // + "package a;", + "public @interface A {}") + .addSourceLines( + "b/package-info.java", // + "@a.A", + "package b;") + .doTest(); + } }