private String className() { String className = packageName; IdentifierTree identifierTree = classTrees.peek().simpleName(); if (identifierTree != null) { className += "." + identifierTree.name(); } return className; }
@Override public void visitClass(ClassTree tree) { if (tree.is(Tree.Kind.CLASS) && tree.simpleName() != null && !pattern.matcher(tree.simpleName().name()).matches()) { context.reportIssue(this, tree.simpleName(), "Rename this class name to match the regular expression '" + format + "'."); } super.visitClass(tree); }
@Override public void visitClass(ClassTree tree) { if (tree.is(Tree.Kind.INTERFACE) && !pattern.matcher(tree.simpleName().name()).matches()) { context.reportIssue(this, tree.simpleName(), "Rename this interface name to match the regular expression '" + format + "'."); } super.visitClass(tree); }
/** * Return the correct tree to report on for class trees. * @param classTree class tree raising an issue. * @return simple name of class tree or identifier in parent expression for anonymous class. */ public static Tree reportOnClassTree(ClassTree classTree) { Tree reportTree = classTree.simpleName(); if(reportTree == null) { reportTree = ((NewClassTree) classTree.parent()).identifier(); } return reportTree; }
@Override public void visitNode(Tree tree) { ClassTree classTree = (ClassTree) tree; if (hasConstant(classTree)) { reportIssue(classTree.simpleName(), "Move constants to a class or enum."); } }
@Override public void visitNode(Tree tree) { ClassTree classTree = (ClassTree) tree; if (hasConstant(classTree)) { reportIssue(classTree.simpleName(), "Move constants to a class or enum."); } }
@Override public void visitClass(ClassTree tree) { // No anonymous class, no visit of new class trees. visitNode(tree, tree.simpleName(), tree.symbol().metadata()); super.visitClass(tree); classTrees.pop(); currentParents.pop(); }
@Override public void visitClass(ClassTree tree) { if (tree.is(Tree.Kind.INTERFACE) && !pattern.matcher(tree.simpleName().name()).matches()) { context.addIssue(tree, this, "Rename this interface name to match the regular expression '" + format + "'."); } super.visitClass(tree); }
@Override public void visitNode(Tree tree) { if (!hasSemantic()) { return; } ClassTree classTree = (ClassTree) tree; if (shouldImplementEquals(classTree)) { reportIssue(classTree.simpleName(), "Override the \"equals\" method in this class."); } }
@Override public void visitNode(Tree tree) { ClassTree classTree = (ClassTree) tree; IdentifierTree simpleName = classTree.simpleName(); if (simpleName != null && isNotExtending(classTree) && isEmpty(classTree)) { reportIssue(simpleName, "Remove this empty class, write its code or make it an \"interface\"."); } }
@Override public void visitNode(Tree tree) { if (hasSemantic()) { ClassTree classTree = (ClassTree) tree; Symbol.TypeSymbol symbol = classTree.symbol(); String className = symbol.name(); if (endsWithException(className) && !isSubtypeOfException(symbol) && !hasUnknownSuperType(symbol)) { String suffix = className.substring(className.length() - "exception".length()); reportIssue(classTree.simpleName(), "Rename this class to remove \"" + suffix + "\" or correct its inheritance."); } } }
private void checkSuperType(ClassTree tree, @Nullable Type superType) { if (superType != null && superType.symbol().name().equals(tree.symbol().name())) { String classOrInterface = tree.is(Tree.Kind.CLASS) ? "class" : "interface"; reportIssue(tree.simpleName(), "Rename this " + classOrInterface + "."); } }
@Override public void visitNode(Tree tree) { if(!hasSemantic()) { return; } ClassTree classTree = (ClassTree) tree; Symbol.TypeSymbol classSymbol = classTree.symbol(); if(classSymbol.isPrivate() && classSymbol.usages().isEmpty()) { reportIssue(classTree.simpleName(), "Remove this unused private \""+ classSymbol.name()+"\" class."); } } }
@Override public void visitNode(Tree tree) { ClassTree classTree = (ClassTree) tree; Symbol.TypeSymbol classSymbol = classTree.symbol(); if (isCloneable(classTree) && !classSymbol.isAbstract() && !declaresCloneMethod(classSymbol)) { reportIssue(classTree.simpleName(), "Add a \"clone()\" method to this class."); } }
@Override public void visitNode(Tree tree) { if (!hasSemantic()) { return; } ClassTree classTree = (ClassTree) tree; IdentifierTree simpleName = classTree.simpleName(); if (hasInvalidName(simpleName) && hasTestMethod(classTree.members())) { reportIssue(simpleName, "Rename class \"" + simpleName + "\" to match the regular expression: '" + format + "'"); } }
@Override public void visitNode(Tree tree) { if (!hasSemantic()) { return; } ClassTree classTree = (ClassTree) tree; if (hasOnlyPrivateConstructors(classTree) && !isExtended(classTree) && !ModifiersUtils.hasModifier(classTree.modifiers(), Modifier.FINAL)) { reportIssue(classTree.simpleName(), "Make this class \"final\" or add a public constructor."); } }
@Override public void visitNode(Tree tree) { if (hasSemantic()) { ClassTree classTree = (ClassTree) tree; Symbol.TypeSymbol symbol = classTree.symbol(); Type type = symbol.type(); IdentifierTree simpleName = classTree.simpleName(); if (simpleName != null && type.isSubtypeOf("java.util.Comparator") && !type.isSubtypeOf("java.io.Serializable") && !symbol.isAbstract()) { reportIssue(simpleName, "Make this class \"Serializable\"."); } } }
@Override public void visitClass(ClassTree tree) { IdentifierTree simpleName = tree.simpleName(); if (simpleName != null) { createSymbol(simpleName, tree.symbol().usages()); } for (TypeParameterTree typeParameterTree : tree.typeParameters()) { createSymbol(typeParameterTree.identifier(), typeParameterTree); } super.visitClass(tree); }
@Override public void visitClass(ClassTree tree) { scan(tree.modifiers()); scan(tree.simpleName()); scan(tree.typeParameters()); scan(tree.superClass()); scan(tree.superInterfaces()); scan(tree.members()); }
@Override public void visitClass(ClassTree tree) { scan(tree.modifiers()); scan(tree.simpleName()); scan(tree.typeParameters()); scan(tree.superClass()); scan(tree.superInterfaces()); scan(tree.members()); }