private static boolean isExceptionUsed(IdentifierTree exceptionIdentifier, ExpressionTree expressionTree) { ExceptionUsageVisitor visitor = new ExceptionUsageVisitor(exceptionIdentifier); expressionTree.accept(visitor); return visitor.isExceptionIdentifierUsed; }
private static boolean useClassGetNameMethod(ExpressionTree expression) { ClassGetNameDetector visitor = new ClassGetNameDetector(); expression.accept(visitor); return visitor.useClassGetName; }
private boolean collectionOnRHS() { FindSymbolUsage findSymbolUsage = new FindSymbolUsage(collection); rhs.accept(findSymbolUsage); return findSymbolUsage.used; }
private static Collection<Symbol> getConditionSymbols(ExpressionTree condition) { ConditionVisitor conditionVisitor = new ConditionVisitor(); condition.accept(conditionVisitor); return conditionVisitor.symbols; }
private static Collection<Symbol> getConditionSymbols(ExpressionTree condition) { ConditionVisitor conditionVisitor = new ConditionVisitor(); condition.accept(conditionVisitor); return conditionVisitor.symbols; }
private void checkStaticVariables(List<Tree> members, Type classType) { members.stream() .filter(member -> member.is(Tree.Kind.VARIABLE)) .map(VariableTree.class::cast) .filter(SubClassStaticReferenceCheck::isStaticVariable) .map(VariableTree::initializer) .filter(Objects::nonNull) .forEach(initializer -> initializer.accept(new StaticAccessVisitor(classType))); }
private static Stream<JavaFileScannerContext.Location> checkArgument(ExpressionTree stringArgument) { StringExpressionVisitor visitor = new StringExpressionVisitor(); stringArgument.accept(visitor); if (visitor.shouldReport) { return Stream.of(locationFromArg(stringArgument, visitor)); } else { return Stream.empty(); } }
@Override public void visitNode(Tree tree) { ConditionalExpressionTree ternary = (ConditionalExpressionTree) tree; Stream.of(ternary.condition(), ternary.trueExpression(), ternary.falseExpression()).forEach(expr -> expr.accept(new TernaryVisitor())); }
private static boolean isExceptionUsed(IdentifierTree exceptionIdentifier, MethodInvocationTree mit) { ExceptionUsageVisitor visitor = new ExceptionUsageVisitor(exceptionIdentifier); mit.arguments().forEach(param -> param.accept(visitor)); return visitor.isExceptionIdentifierUsed; }
@Override public void visitMemberSelectExpression(MemberSelectExpressionTree tree) { ExpressionTree expression = ExpressionUtils.skipParentheses(tree.expression()); if (expression.is(Tree.Kind.IDENTIFIER)) { String identifierName = ((IdentifierTree) expression).name(); if ("this".equals(identifierName) || "super".equals(identifierName)) { tree.identifier().accept(this); return; } } expression.accept(this); }
@Override public void visitMemberSelectExpression(MemberSelectExpressionTree tree) { ExpressionTree expression = ExpressionUtils.skipParentheses(tree.expression()); if (expression.is(Tree.Kind.IDENTIFIER)) { String identifierName = ((IdentifierTree) expression).name(); if ("this".equals(identifierName) || "super".equals(identifierName)) { tree.identifier().accept(this); return; } } expression.accept(this); }
@Override public void visitIfStatement(IfStatementTree ifTree) { LevelTestVisitor levelTestVisitor = new LevelTestVisitor(); ifTree.condition().accept(levelTestVisitor); if (levelTestVisitor.match) { stackAndContinue(ifTree, super::visitIfStatement); } else { super.visitIfStatement(ifTree); } }
@Override public void visitNode(Tree tree) { TypeCastTree castTree = (TypeCastTree) tree; if(castTree.type().symbolType().is("int")) { castTree.expression().accept(new RandomDoubleVisitor()); } }
@Override public void visitNode(Tree tree) { TypeCastTree castTree = (TypeCastTree) tree; if(castTree.type().symbolType().is("int")) { castTree.expression().accept(new RandomDoubleVisitor()); } }
@Override public void visitConditionalExpression(ConditionalExpressionTree tree) { ExpressionVisitor expressionVisitor = new ExpressionVisitor(parameterSymbol); tree.condition().accept(expressionVisitor); if (expressionVisitor.typeChecked) { typeChecked = true; return; } scan(tree.trueExpression()); scan(tree.falseExpression()); }
@Override public void visitIfStatement(IfStatementTree tree) { ExpressionVisitor expressionVisitor = new ExpressionVisitor(parameterSymbol); tree.condition().accept(expressionVisitor); if (expressionVisitor.typeChecked) { typeChecked = true; return; } scan(tree.thenStatement()); scan(tree.elseStatement()); }