private boolean isOpeningResource(NewClassTree syntaxNode) { if (isWithinTryHeader(syntaxNode) || excludedByRuleOption(syntaxNode.symbolType())) { return false; } return needsClosing(syntaxNode.symbolType()); }
@Override public void visitNode(Tree tree) { if (tree.is(Tree.Kind.TRY_STATEMENT)) { withinTry.push((TryStatementTree) tree); toReport.push(new ArrayList<>()); } else if (withinStandardTryWithFinally() && ((NewClassTree) tree).symbolType().isSubtypeOf("java.lang.AutoCloseable")) { toReport.peek().add(tree); } }
private static Symbol.TypeSymbol wrapperClassSymbol(NewClassTree newClassTree) { Symbol.TypeSymbol classSymbol = newClassTree.symbolType().symbol(); if (PRIMITIVE_TYPES_BY_WRAPPER.containsKey(newClassTree.symbolType().fullyQualifiedName()) && !newClassTree.arguments().isEmpty()) { return classSymbol; } return null; }
private void handleNewClassTree(NewClassTree tree) { ((JavaType) tree.symbolType()).directSuperTypes().stream() .filter(directSuperType -> isGrantedAuthority(directSuperType) || isForbiddenForAnonymousClass(tree, directSuperType)) .findFirst() .ifPresent(ct -> reportIssue(tree.identifier())); }
private void categorizeBasedOnConstructor(ReturnStatementTree returnStatement) { ExpressionTree returnedExpression = returnStatement.expression(); if (returnedExpression != null && returnedExpression.is(Tree.Kind.NEW_CLASS)) { NewClassTree newClass = (NewClassTree) returnedExpression; if (!isIgnoredCookieName(newClass.arguments()) && !isCompliantConstructorCall(newClass) && CLASSES.stream().anyMatch(newClass.symbolType()::isSubtypeOf)) { newClassToReport.add(newClass); } } }
@Override public void visitNode(Tree tree) { NewClassTree newClassTree = (NewClassTree) tree; if (newClassTree.symbolType().is("javax.crypto.NullCipher")) { reportIssue(newClassTree.identifier(), "Remove this use of the \"NullCipher\" class."); } }
@Override public void visitNewClass(NewClassTree tree) { if (tree.classBody() != null && tree.symbolType().isSubtypeOf(type)) { isExtended = true; } super.visitNewClass(tree); } }
@Override public void visitNewClass(NewClassTree tree) { super.visitNewClass(tree); checkSymbol(tree.symbolType().symbol()); }
@Override protected void onConstructorFound(NewClassTree newClassTree) { if(isBigIntegerPotentiallyBiggerThanLong(newClassTree)) { return; } reportIssue(newClassTree.identifier(), "Remove this \"" + newClassTree.symbolType().name() + "\" constructor"); }
private static String name(Tree tree) { if (tree.is(Tree.Kind.NEW_CLASS)) { return ((NewClassTree) tree).symbolType().name(); } return ((MethodInvocationTree) tree).symbolType().name(); }
@Override public void visitNode(Tree tree) { if (hasSemantic()) { NewClassTree nct = (NewClassTree) tree; if (nct.symbolType().is("java.math.BigDecimal") && isDoubleConstructor(nct)) { reportIssue(tree, "Use \"BigDecimal.valueOf\" instead."); } } }
@Override public void visitThrowStatement(ThrowStatementTree throwStatementTree) { ExpressionTree expression = throwStatementTree.expression(); if (expression.is(Tree.Kind.NEW_CLASS)) { NewClassTree newClassTree = (NewClassTree) expression; if (newClassTree.symbolType().is("java.util.NoSuchElementException")) { foundThrow = true; } } super.visitThrowStatement(throwStatementTree); }
@Override public void visitNode(Tree tree) { if (hasSemantic()) { NewClassTree nct = (NewClassTree) tree; if (nct.symbolType().is("java.math.BigDecimal") && isDoubleConstructor(nct)) { reportIssue(tree, "Use \"BigDecimal.valueOf\" instead."); } } }
@Override public void visitThrowStatement(ThrowStatementTree throwStatementTree) { ExpressionTree expression = throwStatementTree.expression(); if (expression.is(Tree.Kind.NEW_CLASS)) { NewClassTree newClassTree = (NewClassTree) expression; if (newClassTree.symbolType().is("java.util.NoSuchElementException")) { foundThrow = true; } } super.visitThrowStatement(throwStatementTree); }
@Override public void visitNode(Tree tree) { if (!hasSemantic()) { return; } NewClassTree newClassTree = (NewClassTree) tree; if (newClassTree.symbolType().isSubtypeOf("java.lang.Throwable") && newClassTree.parent().is(Tree.Kind.EXPRESSION_STATEMENT)) { reportIssue(newClassTree, "Throw this exception or remove this useless statement"); } } }
@Override public void visitNode(Tree tree) { if (!hasSemantic()) { return; } NewClassTree newClassTree = (NewClassTree) tree; if (newClassTree.symbolType().isSubtypeOf("java.lang.Throwable") && newClassTree.parent().is(Tree.Kind.EXPRESSION_STATEMENT)) { reportIssue(newClassTree, "Throw this exception or remove this useless statement"); } } }
@Override public void visitNewClass(NewClassTree tree) { if (isUnorderedMap(tree.symbolType()) && hasEnumKey(tree.identifier().symbolType())) { addIssue(tree); } else { super.visitNewClass(tree); } }
private void checkNewMap(ExpressionTree given, boolean useEnumKey) { ExpressionTree expression = ExpressionUtils.skipParentheses(given); if (expression.is(Tree.Kind.NEW_CLASS)) { NewClassTree newClassTree = (NewClassTree) expression; if (isUnorderedMap(newClassTree.symbolType()) && (useEnumKey || hasEnumKey(newClassTree.identifier().symbolType()))) { addIssue(newClassTree); } } }
private static String name(Tree tree) { if (tree.is(Tree.Kind.NEW_CLASS)) { return ((NewClassTree) tree).symbolType().name(); } MethodInvocationTree mit = (MethodInvocationTree) tree; if (mit.symbolType().isVoid()) { return mit.symbol().owner().name(); } return mit.symbolType().name(); }
private static String name(Tree tree) { if (tree.is(Tree.Kind.NEW_CLASS)) { return ((NewClassTree) tree).symbolType().name(); } MethodInvocationTree mit = (MethodInvocationTree) tree; if (mit.symbolType().isVoid()) { return mit.symbol().owner().name(); } return mit.symbolType().name(); }