@Override public boolean isFindBoundary() { return isNested() || isLocal(); }
@Override public Object visit(ASTClassOrInterfaceDeclaration node, Object data) { if (!node.isNested()) { return super.visit(node, data); } return countNodeChildren(node, data); }
private <T> void lclFindChildrenOfType(Node node, Class<T> targetType, List<T> results) { if (node.getClass().equals(targetType)) { results.add((T) node); } if (node instanceof ASTClassOrInterfaceDeclaration && ((ASTClassOrInterfaceDeclaration) node).isNested()) { return; } if (node instanceof ASTClassOrInterfaceBodyDeclaration && ((ASTClassOrInterfaceBodyDeclaration) node).isAnonymousInnerClass()) { return; } for (int i = 0; i < node.jjtGetNumChildren(); i++) { Node child = node.jjtGetChild(i); if (child.getClass().equals(targetType)) { results.add((T) child); } } } }
@Override public Object visit(final ASTClassOrInterfaceDeclaration decl, final Object data) { // check for nested classes if (decl.isNested() && shouldReport(decl)) { addViolationWithMessage(data, decl, String.format(MESSAGE, decl.getImage(), "nested class")); } return super.visit(decl, data); }
if (((ASTClassOrInterfaceDeclaration) node).isNested()) { extras.add("nested");
@Override public Object visit(ASTClassOrInterfaceDeclaration node, Object data) { if (node.isAbstract() || node.isInterface() || node.isNested()) { return data; } List<ASTMethodDeclaration> m = node.findDescendantsOfType(ASTMethodDeclaration.class); boolean testsFound = false; if (m != null) { for (ASTMethodDeclaration md : m) { if (isJUnitMethod(md, data)) { testsFound = true; break; } } } if (!testsFound) { addViolation(data, node); } return data; } }
@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 boolean isFindBoundary() { return isNested() || isLocal(); }
private boolean isInInnerClassOrInterface(ASTMethodDeclaration md) { ASTClassOrInterfaceDeclaration p = md.getFirstParentOfType(ASTClassOrInterfaceDeclaration.class); return p != null && p.isNested(); }
private <T> void lclFindChildrenOfType(Node node, Class<T> targetType, List<T> results) { if (node.getClass().equals(targetType)) { results.add((T) node); } if (node instanceof ASTClassOrInterfaceDeclaration && ((ASTClassOrInterfaceDeclaration) node).isNested()) { return; } if (node instanceof ASTClassOrInterfaceBodyDeclaration && ((ASTClassOrInterfaceBodyDeclaration) node).isAnonymousInnerClass()) { return; } for (int i = 0; i < node.jjtGetNumChildren(); i++) { Node child = node.jjtGetChild(i); if (child.getClass().equals(targetType)) { results.add((T) child); } } } }
@Override public Object visit(ASTClassOrInterfaceDeclaration node, Object data) { if (!node.isNested()) { return super.visit(node, data); } return countNodeChildren(node, data); }
@Override public Object visit(final ASTClassOrInterfaceDeclaration decl, final Object data) { // check for nested classes if (decl.isNested() && shouldReport(decl)) { addViolationWithMessage(data, decl, String.format(MESSAGE, decl.getImage(), "nested class")); } return super.visit(decl, 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); }
if (((ASTClassOrInterfaceDeclaration) node).isNested()) { extras.add("nested");
@Override public Object visit(ASTClassOrInterfaceDeclaration node, Object data) { if (node.isAbstract() || node.isInterface() || node.isNested()) { return data; } List<ASTMethodDeclaration> m = node.findDescendantsOfType(ASTMethodDeclaration.class); boolean testsFound = false; if (m != null) { for (ASTMethodDeclaration md : m) { if (isJUnitMethod(md, data)) { testsFound = true; break; } } } if (!testsFound) { addViolation(data, node); } return data; } }
@Override public Object visit(ASTClassOrInterfaceDeclaration node, Object data) { if (node.isAbstract() || node.isInterface() || node.isNested()) { return super.visit(node, data); } List<ASTMethodDeclaration> m = node.findDescendantsOfType(ASTMethodDeclaration.class); boolean testsFound = false; if (m != null) { for (ASTMethodDeclaration md : m) { if (!isInInnerClassOrInterface(md) && isJUnitMethod(md, data)) { testsFound = true; } } } if ((testsFound) && (!(node.getImage().endsWith(TEST_SUFFIX)))) { ViolationUtils.addViolationWithPrecisePosition(this, node, data, I18nResources.getMessage("java.naming.TestClassShouldEndWithTestNamingRule.violation.msg", node.getImage())); } return super.visit(node, data); }
@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; }