@Override public void visitNode(Tree tree) { if (!hasSemantic()) { return; } MethodTree methodTree = (MethodTree) tree; Symbol.MethodSymbol methodSymbol = methodTree.symbol(); Symbol.MethodSymbol overriddenSymbol = methodSymbol.overriddenSymbol(); if (overriddenSymbol == null || overriddenSymbol.isUnknown()) { return; } if (isSynchronized(overriddenSymbol) && !isSynchronized(methodSymbol)) { List<JavaFileScannerContext.Location> secondaries = Collections.emptyList(); MethodTree overridenMethodTree = overriddenSymbol.declaration(); if (overridenMethodTree != null) { secondaries = Collections.singletonList(new JavaFileScannerContext.Location("", overridenMethodTree.simpleName())); } reportIssue(methodTree.simpleName(), MESSAGE, secondaries, null); } }
@Override public void visitNode(Tree tree) { if (!hasSemantic()) { return; } MethodTree methodTree = (MethodTree) tree; Symbol.MethodSymbol methodSymbol = methodTree.symbol(); Symbol.MethodSymbol overriddenSymbol = methodSymbol.overriddenSymbol(); if (overriddenSymbol == null || overriddenSymbol.isUnknown()) { return; } if (isSynchronized(overriddenSymbol) && !isSynchronized(methodSymbol)) { List<JavaFileScannerContext.Location> secondaries = Collections.emptyList(); MethodTree overridenMethodTree = overriddenSymbol.declaration(); if (overridenMethodTree != null) { secondaries = Collections.singletonList(new JavaFileScannerContext.Location("", overridenMethodTree.simpleName())); } reportIssue(methodTree.simpleName(), MESSAGE, secondaries, null); } }
private static boolean isUnitTest(MethodTree methodTree) { Symbol.MethodSymbol symbol = methodTree.symbol(); while (symbol != null) { if (symbol.metadata().isAnnotatedWith("org.junit.Test")) { return true; } symbol = symbol.overriddenSymbol(); } Symbol.TypeSymbol enclosingClass = methodTree.symbol().enclosingClass(); return enclosingClass != null && enclosingClass.type().isSubtypeOf("junit.framework.TestCase") && methodTree.simpleName().name().startsWith("test"); }
@Override public void visitNode(Tree tree) { if (!hasSemantic() || isExcludedByVersion(context.getJavaVersion())) { return; } MethodTree methodTree = (MethodTree) tree; Symbol.MethodSymbol methodSymbol = methodTree.symbol(); Symbol.MethodSymbol overriddenSymbol = methodSymbol.overriddenSymbol(); if (overriddenSymbol == null || overriddenSymbol.isUnknown()) { return; } if (!overriddenSymbol.isAbstract() && !overriddenSymbol.owner().type().is("java.lang.Object") && !methodSymbol.metadata().isAnnotatedWith("java.lang.Override")) { reportIssue(methodTree.simpleName(), "Add the \"@Override\" annotation above this method signature"); } }
@Override public void visitNode(Tree tree) { if (!hasSemantic() || isExcludedByVersion(context.getJavaVersion())) { return; } MethodTree methodTree = (MethodTree) tree; Symbol.MethodSymbol methodSymbol = methodTree.symbol(); Symbol.MethodSymbol overriddenSymbol = methodSymbol.overriddenSymbol(); if (overriddenSymbol == null || overriddenSymbol.isUnknown()) { return; } if (!overriddenSymbol.isAbstract() && !overriddenSymbol.owner().type().is("java.lang.Object") && !methodSymbol.metadata().isAnnotatedWith("java.lang.Override")) { reportIssue(methodTree.simpleName(), "Add the \"@Override\" annotation above this method signature"); } }
private static boolean isOverriding(MethodTree member) { Symbol symbol = member.symbol(); return symbol.isMethodSymbol() && ((Symbol.MethodSymbol) symbol).overriddenSymbol() != null; }
private static boolean isOverridingDeprecatedConcreteMethod(Symbol.MethodSymbol symbol) { Symbol.MethodSymbol overriddenMethod = symbol.overriddenSymbol(); while(overriddenMethod != null && !overriddenMethod.isUnknown()) { if (overriddenMethod.isAbstract()) { return false; } if (overriddenMethod.isDeprecated()) { return true; } overriddenMethod = overriddenMethod.overriddenSymbol(); } return false; }
private static boolean isOverridingDeprecatedConcreteMethod(Symbol.MethodSymbol symbol) { Symbol.MethodSymbol overriddenMethod = symbol.overriddenSymbol(); while(overriddenMethod != null && !overriddenMethod.isUnknown()) { if (overriddenMethod.isAbstract()) { return false; } if (overriddenMethod.isDeprecated()) { return true; } overriddenMethod = overriddenMethod.overriddenSymbol(); } return false; }
private static boolean isOverriding(MethodTree member) { Symbol symbol = member.symbol(); return symbol.isMethodSymbol() && ((Symbol.MethodSymbol) symbol).overriddenSymbol() != null; }
private static boolean isUnitTest(MethodTree methodTree) { Symbol.MethodSymbol symbol = methodTree.symbol(); while (symbol != null) { if (symbol.metadata().isAnnotatedWith("org.junit.Test")) { return true; } symbol = symbol.overriddenSymbol(); } Symbol.TypeSymbol enclosingClass = methodTree.symbol().enclosingClass(); return enclosingClass != null && enclosingClass.type().isSubtypeOf("junit.framework.TestCase") && methodTree.simpleName().name().startsWith("test"); }
@Override public void visitNode(Tree tree) { if(!hasSemantic()) { return; } MethodTreeImpl methodTree = (MethodTreeImpl) tree; Symbol.MethodSymbol methodSymbol = methodTree.symbol(); Symbol.MethodSymbol overridee = methodSymbol.overriddenSymbol(); if (overridee != null && overridee.isMethodSymbol()) { checkContractChange(methodTree, overridee); } }
@Override public void visitNode(Tree tree) { if(!hasSemantic()) { return; } MethodTreeImpl methodTree = (MethodTreeImpl) tree; Symbol.MethodSymbol methodSymbol = methodTree.symbol(); Symbol.MethodSymbol overridee = methodSymbol.overriddenSymbol(); if (overridee != null && overridee.isMethodSymbol()) { checkContractChange(methodTree, overridee); } }