@Override public void leaveFile(JavaFileScannerContext context) { unsecuredCookies.forEach(v -> reportIssue(v.declaration().simpleName(), MESSAGE)); unsecuredReturns.forEach(r -> reportIssue(r, MESSAGE)); unsecuredSetters.forEach(m -> reportIssue(m.arguments(), MESSAGE)); }
@Override public void leaveFile(JavaFileScannerContext context) { unsecuredCookies.forEach(v -> reportIssue(v.declaration().simpleName(), MESSAGE)); unsecuredReturns.forEach(r -> reportIssue(r, MESSAGE)); unsecuredSetters.forEach(m -> reportIssue(m.arguments(), MESSAGE)); }
@Override public void scanFile(JavaFileScannerContext context) { unsecuredCookies.clear(); super.scanFile(context); for (Symbol.VariableSymbol unsecuredCookie : unsecuredCookies) { addIssue(unsecuredCookie.declaration(), "Add the \"secure\" attribute to this cookie"); } }
private static boolean isIdentifierContainingCompareToResult(IdentifierTree identifier) { Symbol variableSymbol = identifier.symbol(); if (!variableSymbol.isVariableSymbol()) { return false; } VariableTree variableDefinition = ((Symbol.VariableSymbol) variableSymbol).declaration(); if (variableDefinition != null) { ExpressionTree initializer = variableDefinition.initializer(); if (initializer != null && initializer.is(Tree.Kind.METHOD_INVOCATION) && variableSymbol.owner().isMethodSymbol()) { MethodTree method = ((Symbol.MethodSymbol) variableSymbol.owner()).declaration(); return method != null && COMPARE_TO.matches((MethodInvocationTree) initializer) && !isReassigned(variableSymbol, method); } } return false; }
@CheckForNull private static ExpressionTree retrievedPropertyDefaultValue(IdentifierTree identifier) { Symbol symbol = identifier.symbol(); if (symbol.usages().size() == 1) { VariableTree declaration = ((Symbol.VariableSymbol) symbol).declaration(); if (declaration != null) { ExpressionTree initializer = declaration.initializer(); if (initializer != null && initializer.is(Tree.Kind.METHOD_INVOCATION)) { return retrievedPropertyDefaultValue((MethodInvocationTree) initializer); } } } return null; }
@Override public void leaveFile(JavaFileScannerContext context) { for (VariableSymbol var : variablesToReport) { VariableTree declaration = var.declaration(); if (declaration != null) { reportIssue(declaration.simpleName(), MESSAGE); } } for (MethodInvocationTree mit : settersToReport) { reportIssue(mit.arguments(), MESSAGE); } for (NewClassTree newClassTree : newClassToReport) { reportIssue(newClassTree, MESSAGE); } }
@Override public void visitNode(Tree tree) { if (hasSemantic()) { Symbol.TypeSymbol symbol = ((ClassTree) tree).symbol(); if (isSerializable(symbol.type())) { findSerialVersionUid(symbol) .filter(BlindSerialVersionUidCheck::isValidSerialVersionUid) .ifPresent(serialVersionUidSymbol -> reportIssue(serialVersionUidSymbol.declaration().simpleName(), "Remove this \"serialVersionUID\".") ); } } }
private static int getDeclarationLine(Symbol symbol) { if (symbol.declaration() == null) { return -1; } if (symbol.isVariableSymbol()) { return ((Symbol.VariableSymbol) symbol).declaration().simpleName().identifierToken().line(); } return ((Symbol.MethodSymbol) symbol).declaration().simpleName().identifierToken().line(); }
private boolean isBadlyInstanciatedVariable(Symbol.VariableSymbol variableSymbol) { VariableTree variableTree = variableSymbol.declaration(); if (variableTree != null) { ExpressionTree initializer = variableTree.initializer(); if (initializer != null) { return isBadlyInstanciated(initializer); } } return false; }
@CheckForNull private ExpressionTree getInitializer(IdentifierTree tree) { Symbol symbol = tree.symbol(); if(symbol.isVariableSymbol()) { VariableTree declaration = ((Symbol.VariableSymbol) symbol).declaration(); if(declaration != null) { return declaration.initializer(); } } return null; }
@CheckForNull private static ExpressionTree getInitializer(IdentifierTree tree) { Symbol symbol = tree.symbol(); if (symbol.isVariableSymbol()) { VariableTree declaration = ((Symbol.VariableSymbol) symbol).declaration(); if (declaration != null) { return declaration.initializer(); } } return null; }
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 boolean isBadlyInstantiatedVariable(Symbol.VariableSymbol variableSymbol) { VariableTree variableTree = variableSymbol.declaration(); if (variableTree != null) { ExpressionTree initializer = variableTree.initializer(); if (initializer != null) { return isBadlyInstantiated(initializer); } } return false; }
private static boolean isImmutableFinalVariable(Symbol.VariableSymbol symbol) { if (symbol.isFinal()) { VariableTree declaration = symbol.declaration(); // symbol is private, so declaration can only be null if assignment is done in static block ExpressionTree initializer = declaration.initializer(); if (initializer != null) { return !isMutableType(initializer) || isEmptyArray(initializer); } return !assignementsOfMutableType(symbol.usages()); } return false; }
@CheckForNull private static ExpressionTree getInitializer(IdentifierTree tree) { Symbol symbol = tree.symbol(); if (symbol.isVariableSymbol()) { VariableTree declaration = ((Symbol.VariableSymbol) symbol).declaration(); if (declaration != null) { return declaration.initializer(); } } return null; }
private static boolean isImmutableFinalVariable(Symbol.VariableSymbol symbol) { if (symbol.isFinal()) { VariableTree declaration = symbol.declaration(); // symbol is private, so declaration can only be null if assignment is done in static block ExpressionTree initializer = declaration.initializer(); if (initializer != null) { return !isMutableType(initializer) || isEmptyArray(initializer); } return !assignementsOfMutableType(symbol.usages()); } return false; }
private boolean isBadlyInstantiatedVariable(Symbol.VariableSymbol variableSymbol) { VariableTree variableTree = variableSymbol.declaration(); if (variableTree != null) { ExpressionTree initializer = variableTree.initializer(); if (initializer != null) { return isBadlyInstantiated(initializer); } } return false; }
private static int getDeclarationLine(Symbol symbol) { if (symbol.declaration() == null) { return -1; } if (symbol.isVariableSymbol()) { return ((Symbol.VariableSymbol) symbol).declaration().simpleName().identifierToken().line(); } return ((Symbol.MethodSymbol) symbol).declaration().simpleName().identifierToken().line(); }
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; }
@Override public void visitNode(Tree tree) { if (hasSemantic()) { Symbol.TypeSymbol symbol = ((ClassTree) tree).symbol(); if (isSerializable(symbol.type())) { findSerialVersionUid(symbol) .filter(BlindSerialVersionUidCheck::isValidSerialVersionUid) .ifPresent(serialVersionUidSymbol -> reportIssue(serialVersionUidSymbol.declaration().simpleName(), "Remove this \"serialVersionUID\".") ); } } }