/** * Returns {@code true} if access modifier of construtor is same as class's, * otherwise {@code false}. * * @param node the class declaration node * @param cons the constructor declaration node */ private boolean haveSameAccessModifier(ASTClassOrInterfaceDeclaration node, ASTConstructorDeclaration cons) { return node.isPrivate() && cons.isPrivate() || node.isProtected() && cons.isProtected() || node.isPublic() && cons.isPublic() || node.isPackagePrivate() && cons.isPackagePrivate(); } }
@Override public Object visit(ASTClassOrInterfaceDeclaration node, Object data) { if (node.isInterface() && node.isAbstract()) { // an abstract interface reportUnnecessaryModifiers(data, node, Modifier.ABSTRACT, "interface types are implicitly abstract"); } if (!node.isNested()) { return data; } boolean isParentInterfaceOrAnnotation = node.enclosingTypeIsA(TypeKind.INTERFACE, TypeKind.ANNOTATION); // a public class or interface within an interface or annotation if (node.isPublic() && isParentInterfaceOrAnnotation) { reportUnnecessaryModifiers(data, node, Modifier.PUBLIC, "members of " + getPrintableNodeKind(node.getEnclosingTypeDeclaration()) + " types are implicitly public"); } if (node.isStatic()) { if (node.isInterface()) { // a static interface reportUnnecessaryModifiers(data, node, Modifier.STATIC, "member interfaces are implicitly static"); } else if (isParentInterfaceOrAnnotation) { // a type nested within an interface reportUnnecessaryModifiers(data, node, Modifier.STATIC, "types nested within an interface type are implicitly static"); } } return data; }
@Override public Object visit(ASTClassOrInterfaceDeclaration decl, Object data) { // Exclude nested classes if (decl.isNested()) { return super.visit(decl, data); } // Exclude inner classes if (!decl.isPublic()) { return super.visit(decl, data); } checkAuthorComment(decl, data); return super.visit(decl, data); }
/** * Returns {@code true} if access modifier of construtor is same as class's, * otherwise {@code false}. * * @param node the class declaration node * @param cons the constructor declaration node */ private boolean haveSameAccessModifier(ASTClassOrInterfaceDeclaration node, ASTConstructorDeclaration cons) { return node.isPrivate() && cons.isPrivate() || node.isProtected() && cons.isProtected() || node.isPublic() && cons.isPublic() || node.isPackagePrivate() && cons.isPackagePrivate(); } }
@Override public Object visit(ASTClassOrInterfaceDeclaration node, Object data) { if (node.isInterface() && node.isAbstract()) { // an abstract interface reportUnnecessaryModifiers(data, node, Modifier.ABSTRACT, "interface types are implicitly abstract"); } if (!node.isNested()) { return data; } boolean isParentInterfaceOrAnnotation = node.enclosingTypeIsA(TypeKind.INTERFACE, TypeKind.ANNOTATION); // a public class or interface within an interface or annotation if (node.isPublic() && isParentInterfaceOrAnnotation) { reportUnnecessaryModifiers(data, node, Modifier.PUBLIC, "members of " + getPrintableNodeKind(node.getEnclosingTypeDeclaration()) + " types are implicitly public"); } if (node.isStatic()) { if (node.isInterface()) { // a static interface reportUnnecessaryModifiers(data, node, Modifier.STATIC, "member interfaces are implicitly static"); } else if (isParentInterfaceOrAnnotation) { // a type nested within an interface reportUnnecessaryModifiers(data, node, Modifier.STATIC, "types nested within an interface type are implicitly static"); } } return data; }