private static Optional<MethodSymbol> lookupFunctionalMethod(ClassTree interfaceTree) { return interfaceTree.symbol().memberSymbols().stream() .filter(Symbol::isMethodSymbol) .map(MethodSymbol.class::cast) .filter(MethodSymbol::isAbstract) .filter(StandardFunctionalInterfaceCheck::isNotObjectMethod) .findFirst(); }
private static Optional<MethodSymbol> lookupFunctionalMethod(ClassTree interfaceTree) { return interfaceTree.symbol().memberSymbols().stream() .filter(Symbol::isMethodSymbol) .map(MethodSymbol.class::cast) .filter(MethodSymbol::isAbstract) .filter(StandardFunctionalInterfaceCheck::isNotObjectMethod) .findFirst(); }
private List<JavaSymbol.MethodJavaSymbol> abstractMethodsOfType(JavaType javaType) { return javaType.symbol().memberSymbols().stream().filter(Resolve::isAbstractMethod).map(JavaSymbol.MethodJavaSymbol.class::cast) .filter(m -> !isObjectMethod(m)) .collect(Collectors.toList()); }
private void addConstantValue(AnnotationTree tree, AnnotationInstanceResolve annotationInstance) { Collection<Symbol> scopeSymbols = tree.annotationType().symbolType().symbol().memberSymbols(); for (ExpressionTree expressionTree : tree.arguments()) { String name = ""; for (Symbol scopeSymbol : scopeSymbols) { if(scopeSymbol.isMethodSymbol()) { name = scopeSymbol.name(); break; } } annotationInstance.addValue(new AnnotationValueResolve(name, expressionTree)); } }
private static long numberOfAbstractMethod(Symbol symbol) { if (!symbol.isTypeSymbol()) { // unknown interface return Integer.MAX_VALUE; } Symbol.TypeSymbol interfaceSymbol = (Symbol.TypeSymbol) symbol; return interfaceSymbol.memberSymbols().stream() .filter(Symbol::isMethodSymbol) .filter(member -> { Symbol.MethodSymbol methodSymbol = (Symbol.MethodSymbol) member; return isNotObjectMethod(methodSymbol) && methodSymbol.isAbstract(); }).count(); }
private boolean checkMembers(IdentifierTree fieldSimpleName, Symbol.TypeSymbol symbol) { for (Symbol member : symbol.memberSymbols()) { if (member.isVariableSymbol() && !member.isPrivate() && !member.isStatic() && member.name().equals(fieldSimpleName.name())) { reportIssue(fieldSimpleName, String.format("\"%s\" is the name of a field in \"%s\".", fieldSimpleName.name(), symbol.name())); return true; } } return false; }
private static long numberOfAbstractMethod(Symbol symbol) { if (!symbol.isTypeSymbol()) { // unknown interface return Integer.MAX_VALUE; } Symbol.TypeSymbol interfaceSymbol = (Symbol.TypeSymbol) symbol; return interfaceSymbol.memberSymbols().stream() .filter(Symbol::isMethodSymbol) .filter(member -> { Symbol.MethodSymbol methodSymbol = (Symbol.MethodSymbol) member; return isNotObjectMethod(methodSymbol) && methodSymbol.isAbstract(); }).count(); }
private static void addConstantValue(AnnotationTree tree, AnnotationInstanceResolve annotationInstance) { Collection<Symbol> scopeSymbols = tree.annotationType().symbolType().symbol().memberSymbols(); for (ExpressionTree expressionTree : tree.arguments()) { String name = ""; for (Symbol scopeSymbol : scopeSymbols) { if(scopeSymbol.isMethodSymbol()) { name = scopeSymbol.name(); break; } } annotationInstance.addValue(new AnnotationValueResolve(name, expressionTree)); } }
private static boolean hasOnlyStaticMethodsAndFields(Symbol.TypeSymbol newClassTypeSymbol) { Collection<Symbol> symbols = filterMethodsAndFields(newClassTypeSymbol.memberSymbols()); if (symbols.isEmpty()) { return false; } for (Symbol symbol : symbols) { if (!symbol.isStatic()) { return false; } } return superTypesHaveOnlyStaticMethods(newClassTypeSymbol); }
private boolean hasOnlyStaticMethods(Symbol.TypeSymbol newClassTypeSymbol) { Collection<MethodSymbol> methods = filterMethods(newClassTypeSymbol.memberSymbols()); if (methods.isEmpty()) { return false; } for (MethodSymbol method : methods) { if (!method.isStatic()) { return false; } } return superClassHasOnlyStaticMethods(newClassTypeSymbol); }
private static List<Symbol> extractMembers(Symbol.TypeSymbol classSymbol, boolean ignorePrivate) { List<Symbol> results = Lists.newLinkedList(); for (Symbol symbol : classSymbol.memberSymbols()) { if ((isVariableToExtract(symbol) || isMethodToExtract(symbol)) && !(symbol.isPrivate() && ignorePrivate)) { results.add(symbol); } } return results; }
private static boolean hasUniqueConstructor(ClassTree clazzTree) { return clazzTree.symbol().memberSymbols().stream() .filter(Symbol::isMethodSymbol) .map(s -> (Symbol.MethodSymbol) s) .filter(m -> m.name().equals("<init>")) .filter(m -> m.declaration() != null) .count() == 1; }
private static Stream<MethodJavaSymbol> getMethodSymbolsOf(Type type) { return type.symbol().memberSymbols().stream() .filter(Symbol::isMethodSymbol) .map(MethodJavaSymbol.class::cast); }
private static boolean hasOnlyStaticMethodsAndFields(Symbol.TypeSymbol newClassTypeSymbol) { Collection<Symbol> symbols = filterMethodsAndFields(newClassTypeSymbol.memberSymbols()); if (symbols.isEmpty()) { return false; } for (Symbol symbol : symbols) { if (!symbol.isStatic()) { return false; } } return superTypesHaveOnlyStaticMethods(newClassTypeSymbol); }
private static boolean hasUniqueConstructor(ClassTree clazzTree) { return clazzTree.symbol().memberSymbols().stream() .filter(Symbol::isMethodSymbol) .map(s -> (Symbol.MethodSymbol) s) .filter(m -> m.name().equals("<init>")) .filter(m -> m.declaration() != null) .count() == 1; }
private static long numberConstants(SwitchStatementTree switchStatementTree) { return switchStatementTree.expression().symbolType().symbol().memberSymbols().stream() .filter(Symbol::isVariableSymbol) .filter(Symbol::isEnum) .count(); } }
private static List<Symbol> extractMembers(Symbol.TypeSymbol classSymbol, boolean ignorePrivate) { List<Symbol> results = Lists.newLinkedList(); for (Symbol symbol : classSymbol.memberSymbols()) { if ((isVariableToExtract(symbol) || isMethodToExtract(symbol)) && !(symbol.isPrivate() && ignorePrivate)) { results.add(symbol); } } return results; }
private boolean checkMembers(IdentifierTree fieldSimpleName, Symbol.TypeSymbol symbol) { for (Symbol member : symbol.memberSymbols()) { if (member.isVariableSymbol() && !member.isPrivate() && !member.isStatic() && member.name().equals(fieldSimpleName.name())) { reportIssue(fieldSimpleName, String.format("\"%s\" is the name of a field in \"%s\".", fieldSimpleName.name(), symbol.name())); return true; } } return false; }
private static long numberConstants(SwitchStatementTree switchStatementTree) { return switchStatementTree.expression().symbolType().symbol().memberSymbols().stream() .filter(Symbol::isVariableSymbol) .filter(Symbol::isEnum) .count(); } }
@Override public void visitNode(Tree tree) { TypeSymbol classSymbol = ((ClassTree) tree).symbol(); Set<Symbol> fieldsReadOnAnotherInstance = FieldsReadOnAnotherInstanceVisitor.getFrom(tree); classSymbol.memberSymbols().stream() .filter(PrivateFieldUsedLocallyCheck::isPrivateField) .filter(s -> !(s.isFinal() && s.isStatic())) .filter(s -> !hasAnnotation(s)) .filter(s -> !s.usages().isEmpty()) .filter(s -> !fieldsReadOnAnotherInstance.contains(s)) .forEach(s -> checkPrivateField(s, classSymbol)); }