private static boolean isAnonymousClassTree(Tree t) { if (t instanceof ClassTree) { ClassTree classTree = (ClassTree) t; return classTree.getSimpleName().contentEquals(""); } return false; }
private static Optional<String> getName(Tree tree) { if (tree instanceof MethodTree) { return Optional.of(((MethodTree) tree).getName().toString()); } if (tree instanceof ClassTree) { return Optional.of(((ClassTree) tree).getSimpleName().toString()); } return Optional.empty(); } }
@Override public Description matchClass(ClassTree tree, VisitorState state) { return check(tree, tree.getSimpleName()); }
private Fix addPrivateConstructor(ClassTree classTree, VisitorState state) { return SuggestedFixes.addMembers( classTree, state, "private " + classTree.getSimpleName() + "() {}"); }
@Nullable private static Tree suppressibleNode(TreePath path) { return StreamSupport.stream(path.spliterator(), false) .filter( tree -> tree instanceof MethodTree || (tree instanceof ClassTree && ((ClassTree) tree).getSimpleName().length() != 0) || tree instanceof VariableTree) .findFirst() .orElse(null); }
@Override public Description matchClass(ClassTree tree, VisitorState state) { return handle(tree, tree.getSimpleName(), tree.getModifiers(), state); }
/** * Adapted from {@link com.google.errorprone.fixes.SuggestedFixes}. * * <p>TODO: actually use {@link * com.google.errorprone.fixes.SuggestedFixes#addSuppressWarnings(VisitorState, String)} instead */ @Nullable private static Tree suppressibleNode(@Nullable TreePath path) { if (path == null) { return null; } return StreamSupport.stream(path.spliterator(), false) .filter( tree -> tree instanceof MethodTree || (tree instanceof ClassTree && ((ClassTree) tree).getSimpleName().length() != 0) || tree instanceof VariableTree) .findFirst() .orElse(null); }
@Override public Description matchClass(ClassTree tree, VisitorState state) { // Here, if a class is named like a Type Parameter, it's a bad thing. return TypeParameterNamingClassification.classify(tree.getSimpleName().toString()).isValidName() ? describeMatch(tree) : Description.NO_MATCH; } }
private boolean verify(ClassTree ct, Element topElement) { currentClass = ct; CompilationUnitTree cut = getCompilationUnit(); String className = ct.getSimpleName().toString(); ExpressionTree pkgName = cut.getPackageName(); if (pkgName != null) { className = pkgName + "." + className; } classNames.add(className); if (hasTrustedAnnotation(ct, topElement)) { return true; } Boolean value = ct.accept(new VerifierVisitor(this, topElement), null); return value == null? true : value; }
/** * Returns the qualification to access a field of the given class node from within the given tree * path (which MUST be within the class node scope). */ private static String getExplicitQualification( TreePath path, ClassTree tree, VisitorState state) { for (Tree node : path) { if (node.equals(tree)) { break; } if (node instanceof ClassTree) { if (ASTHelpers.getSymbol(node).isSubClass(ASTHelpers.getSymbol(tree), state.getTypes())) { return "super."; } return tree.getSimpleName() + ".this."; } } return "this."; }
if (classMember.getSimpleName().contentEquals(filename)) { return Description.NO_MATCH; names.add(classMember.getSimpleName().toString());
names.add(classMember.getSimpleName().toString()); break; default:
@Override public Description matchClass(ClassTree tree, VisitorState state) { ImmutableAnalysis analysis = createImmutableAnalysis(state); if (tree.getSimpleName().length() == 0) {
String oldClassName = className; try { className = node.getSimpleName().toString(); fqn = getElement(node).asType().toString(); return super.visitClass(node, v);
classTree, addMembers(classTree, state, "private " + classTree.getSimpleName() + "() {}"));
private static SuggestedFix.Builder addPrivateConstructor(ClassTree classTree) { SuggestedFix.Builder fix = SuggestedFix.builder(); String indent = " "; for (Tree member : classTree.getMembers()) { if (member.getKind().equals(METHOD) && !isGeneratedConstructor((MethodTree) member)) { fix.prefixWith( member, indent + "private " + classTree.getSimpleName() + "() {} // no instances\n" + indent); break; } if (!member.getKind().equals(METHOD)) { indent = ""; } } return fix; } }
.postfixWith(getLast(members), String.format("\nprivate %s() {}", tree.getSimpleName())); return buildDescription(tree).addFix(suggestedFix.build()).build();
@Override public Void visitClass(ClassTree clazz, Void p) { patternNestedTypeNames.add(clazz.getSimpleName().toString()); return null; } },
@Override public Void visitClass(ClassTree clazz, Void p) { if (patternNestedTypeNames.contains(clazz.getSimpleName().toString())) { filteredActualTrees.add(clazz); } return null; }
@Override public Void visitClass(ClassTree clazz, Void p) { if (patternNestedTypeNames.contains(clazz.getSimpleName().toString())) { filteredActualTrees.add(clazz); } return null; }