@Override public Object visit(final ASTMethodDeclaration node, Object data) { Set<Modifier> unnecessary = EnumSet.noneOf(Modifier.class); if (node.isSyntacticallyPublic()) { unnecessary.add(Modifier.PUBLIC); } if (node.isSyntacticallyAbstract()) { unnecessary.add(Modifier.ABSTRACT); } checkDeclarationInInterfaceType(data, node, unnecessary); if (node.isFinal()) { // If the method is annotated by @SafeVarargs then it's ok if (!isSafeVarargs(node)) { if (node.isPrivate()) { reportUnnecessaryModifiers(data, node, Modifier.FINAL, "private methods cannot be overridden"); } else { final Node n = node.getNthParent(3); // A final method of an anonymous class / enum constant. Neither can be extended / overridden if (n instanceof ASTAllocationExpression || n instanceof ASTEnumConstant) { reportUnnecessaryModifiers(data, node, Modifier.FINAL, "an anonymous class cannot be extended"); } else if (n instanceof ASTClassOrInterfaceDeclaration && ((AccessNode) n).isFinal()) { reportUnnecessaryModifiers(data, node, Modifier.FINAL, "the method is already in a final class"); } } } } return data; }
(node.isFinal() || classOrInterface.isFinal())) { if (node.findDescendantsOfType(ASTBlock.class).size() == 1) { final List<ASTBlockStatement> blocks = node.findDescendantsOfType(ASTBlockStatement.class);
if (node.isAbstract() || node.isFinal() || node.isNative() || node.isSynchronized()) { return super.visit(node, data);
@Override public Object visit(final ASTMethodDeclaration node, Object data) { Set<Modifier> unnecessary = EnumSet.noneOf(Modifier.class); if (node.isSyntacticallyPublic()) { unnecessary.add(Modifier.PUBLIC); } if (node.isSyntacticallyAbstract()) { unnecessary.add(Modifier.ABSTRACT); } checkDeclarationInInterfaceType(data, node, unnecessary); if (node.isFinal()) { // If the method is annotated by @SafeVarargs then it's ok if (!isSafeVarargs(node)) { if (node.isPrivate()) { reportUnnecessaryModifiers(data, node, Modifier.FINAL, "private methods cannot be overridden"); } else { final Node n = node.getNthParent(3); // A final method of an anonymous class / enum constant. Neither can be extended / overridden if (n instanceof ASTAllocationExpression || n instanceof ASTEnumConstant) { reportUnnecessaryModifiers(data, node, Modifier.FINAL, "an anonymous class cannot be extended"); } else if (n instanceof ASTClassOrInterfaceDeclaration && ((AccessNode) n).isFinal()) { reportUnnecessaryModifiers(data, node, Modifier.FINAL, "the method is already in a final class"); } } } } return data; }
(node.isFinal() || classOrInterface.isFinal())) { if (node.findDescendantsOfType(ASTBlock.class).size() == 1) { final List<ASTBlockStatement> blocks = node.findDescendantsOfType(ASTBlockStatement.class);
if (node.isAbstract() || node.isFinal() || node.isNative() || node.isSynchronized()) { return super.visit(node, data);