Skip to content

Commit

Permalink
Extend UnnecessarilyFullyQualified BugPattern to remove the java.lang…
Browse files Browse the repository at this point in the history
… qualifier
  • Loading branch information
rickie committed Sep 20, 2021
1 parent b3ae95e commit cd5be4b
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@
public final class UnnecessarilyFullyQualified extends BugChecker
implements CompilationUnitTreeMatcher {

private static final String JAVA_LANG = "java.lang";
private static final ImmutableSet<String> EXEMPTED_NAMES = ImmutableSet.of("Annotation");

@Override
Expand Down Expand Up @@ -169,12 +170,16 @@ public Void visitIdentifier(IdentifierTree identifierTree, Void aVoid) {
continue;
}
List<TreePath> pathsToFix = getOnlyElement(types.values());
if (pathsToFix.stream()
.anyMatch(path -> findIdent(nameString, state.withPath(path), VAL_TYP) != null)) {
if (!pathsToFix.get(0).getLeaf().toString().contains(JAVA_LANG)
&& pathsToFix.stream()
.anyMatch(path -> findIdent(nameString, state.withPath(path), VAL_TYP) != null)) {
continue;
}
SuggestedFix.Builder fixBuilder = SuggestedFix.builder();
fixBuilder.addImport(getOnlyElement(types.keySet()).getQualifiedName().toString());
String newImport = getOnlyElement(types.keySet()).getQualifiedName().toString();
if (!newImport.contains(JAVA_LANG)) {
fixBuilder.addImport(newImport);
}
for (TreePath path : pathsToFix) {
fixBuilder.replace(path.getLeaf(), nameString);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,30 @@ public final class UnnecessarilyFullyQualifiedTest {
private final BugCheckerRefactoringTestHelper helper =
BugCheckerRefactoringTestHelper.newInstance(UnnecessarilyFullyQualified.class, getClass());

@Test
public void javaLang() {
helper
.addInputLines(
"Test.java",
"public class Test {",
" @java.lang.Deprecated",
" public java.lang.String foo(java.lang.String s) {",
" java.lang.Integer i = 1;",
" return s;",
" }",
"}")
.addOutputLines(
"Test.java",
"public class Test {",
" @Deprecated",
" public String foo(String s) {",
" Integer i = 1;",
" return s;",
" }",
"}")
.doTest();
}

@Test
public void singleUse() {
helper
Expand Down

0 comments on commit cd5be4b

Please sign in to comment.