private boolean isOwnerFinal() { return owner.isFinal(); }
private static boolean isStaticFinal(Symbol symbol) { return symbol.isStatic() && symbol.isFinal(); } }
private boolean hasNotFinalEqualsMethod(Symbol.TypeSymbol superClassSymbol) { for (Symbol symbol : superClassSymbol.lookupSymbols("equals")) { if (isEqualsMethod(symbol) && !symbol.isFinal()) { return true; } } return false; }
private static boolean isStaticNotFinalNotVolatile(Symbol symbol) { return symbol.isStatic() && !symbol.isVolatile() && !symbol.isFinal(); }
@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)); }
private static boolean matchesActualType(Symbol invocationTarget, Set<String> actualTypes) { Type declaredType = invocationTarget.type(); if (actualTypes.contains(declaredType.fullyQualifiedName())) { return true; } // actual type is looked up only on private or final fields, otherwise it can't be guaranteed if (invocationTarget.isPrivate() || invocationTarget.isFinal()) { Set<String> assignedTypes = findAssignedTypes(invocationTarget); return !assignedTypes.isEmpty() && actualTypes.containsAll(assignedTypes); } return false; }
private static boolean matchesActualType(Symbol invocationTarget, Set<String> actualTypes) { Type declaredType = invocationTarget.type(); if (actualTypes.contains(declaredType.fullyQualifiedName())) { return true; } // actual type is looked up only on private or final fields, otherwise it can't be guaranteed if (invocationTarget.isPrivate() || invocationTarget.isFinal()) { Set<String> assignedTypes = findAssignedTypes(invocationTarget); return !assignedTypes.isEmpty() && actualTypes.containsAll(assignedTypes); } return false; }
private boolean shouldBeCounted(VariableTree variableTree) { Symbol symbol = variableTree.symbol(); if (symbol.isStatic() && symbol.isFinal()) { return false; } return countNonPublicFields || symbol.isPublic(); }
private static boolean isFinalField(Symbol symbol) { return symbol.isVariableSymbol() && symbol.isFinal() && symbol.owner().isTypeSymbol(); }
private static boolean isFinalField(Symbol symbol) { return symbol.isVariableSymbol() && symbol.isFinal() && symbol.owner().isTypeSymbol(); }
private boolean isFinalFieldWithInitializer(@Nullable Symbol symbol) { if (symbol != null && symbol.isVariableSymbol() && symbol.owner().isTypeSymbol() && symbol.isFinal()) { VariableTree declaration = ((Symbol.VariableSymbol) symbol).declaration(); return declaration != null && declaration.initializer() != null; } return false; }
private static boolean isStaticFinal(ExpressionTree expressionTree) { return expressionTree.is(Tree.Kind.IDENTIFIER) && ((IdentifierTree) expressionTree).symbol().isStatic() && ((IdentifierTree) expressionTree).symbol().isFinal(); } }
private static boolean isOwnedBySerializableExtensibleClass(MethodTree method) { Symbol owner = method.symbol().owner(); return !owner.isPrivate() && !owner.isFinal() && owner.type().isSubtypeOf("java.io.Serializable"); } }
private static boolean isOwnedBySerializableExtensibleClass(MethodTree method) { Symbol owner = method.symbol().owner(); return !owner.isPrivate() && !owner.isFinal() && owner.type().isSubtypeOf("java.io.Serializable"); } }
public static boolean methodCanNotBeOverriden(Symbol.MethodSymbol methodSymbol) { if (Flags.isFlagged(((JavaSymbol.MethodJavaSymbol) methodSymbol).flags(), Flags.NATIVE)) { return false; } return !methodSymbol.isAbstract() && (methodSymbol.isPrivate() || methodSymbol.isFinal() || methodSymbol.isStatic() || methodSymbol.owner().isFinal()); } }
@Override public void visitVariable(VariableTree tree) { ExpressionTree initializer = tree.initializer(); boolean arrayNotInitialized = initializer != null && initializer.is(Kind.NEW_ARRAY) && ((NewArrayTree) initializer).initializers().isEmpty(); boolean isFinalOrNoSemantic = context.getSemanticModel() == null || tree.symbol().isFinal(); if (arrayNotInitialized || !isFinalOrNoSemantic) { super.visitVariable(tree); } }
public static boolean methodCanNotBeOverriden(Symbol.MethodSymbol methodSymbol) { if (Flags.isFlagged(((JavaSymbol.MethodJavaSymbol) methodSymbol).flags(), Flags.NATIVE)) { return false; } return !methodSymbol.isAbstract() && (methodSymbol.isPrivate() || methodSymbol.isFinal() || methodSymbol.isStatic() || methodSymbol.owner().isFinal()); } }
private static boolean verifyCondition(ExpressionTree condition) { if(condition.is(Tree.Kind.IDENTIFIER)) { IdentifierTree identifierTree = (IdentifierTree) condition; if(identifierTree.symbol().isFinal() && identifierTree.symbol().isVariableSymbol()) { VariableTree declaration = (VariableTree) identifierTree.symbol().declaration(); return declaration == null || declaration.initializer() == null || !declaration.initializer().is(Tree.Kind.BOOLEAN_LITERAL); } } return !condition.is(Tree.Kind.BOOLEAN_LITERAL); }
private static boolean verifyCondition(ExpressionTree condition) { if(condition.is(Tree.Kind.IDENTIFIER)) { IdentifierTree identifierTree = (IdentifierTree) condition; if(identifierTree.symbol().isFinal() && identifierTree.symbol().isVariableSymbol()) { VariableTree declaration = (VariableTree) identifierTree.symbol().declaration(); return declaration == null || declaration.initializer() == null || !declaration.initializer().is(Tree.Kind.BOOLEAN_LITERAL); } } return !condition.is(Tree.Kind.BOOLEAN_LITERAL); }
private static boolean isEnclosingClassFinal(ExpressionTree expressionTree) { if (expressionTree.is(IDENTIFIER)) { Tree parent = expressionTree.parent(); while (!parent.is(METHOD, CONSTRUCTOR)) { parent = parent.parent(); } return ((MethodTree) parent).symbol().owner().isFinal(); } return ((MemberSelectExpressionTree) expressionTree).expression().symbolType().symbol().isFinal(); } }