private void addAssignment(IdentifierTree identifier) { Symbol reference = identifier.symbol(); if (!reference.isUnknown()) { assignments.put(reference, identifier); } }
private void addAssignment(IdentifierTree identifier) { Symbol reference = identifier.symbol(); if (!reference.isUnknown()) { assignments.put(reference, identifier); } }
private boolean isThrowingJavaLangException(Symbol symbol) { containsExplicitThrowsException |= symbol.isUnknown() || ((Symbol.MethodSymbol) symbol).thrownTypes().stream().anyMatch(CatchExceptionCheck::isJavaLangException); return containsExplicitThrowsException; } }
private void addSymbol(IdentifierTree identifierTree) { Symbol symbol = identifierTree.symbol(); if (!symbol.isUnknown()) { symbols.add(symbol); } } }
private void addSymbol(IdentifierTree identifierTree) { Symbol symbol = identifierTree.symbol(); if (!symbol.isUnknown()) { symbols.add(symbol); } } }
private void addAssignment(IdentifierTree identifier) { Symbol reference = identifier.symbol(); if (!reference.isUnknown()) { assignments.put(reference, identifier); } }
private void addThrownTypes(Symbol methodSymbol) { if (!visitedUnknown) { if (methodSymbol.isUnknown() || !methodSymbol.isMethodSymbol()) { visitedUnknown = true; } else { thrownExceptions.addAll(((Symbol.MethodSymbol) methodSymbol).thrownTypes()); } } }
@CheckForNull private static Symbol symbolFromIdentifier(ExpressionTree collectionExpression) { if (collectionExpression.is(Tree.Kind.IDENTIFIER)) { Symbol symbol = ((IdentifierTree) collectionExpression).symbol(); if (!symbol.isUnknown()) { return symbol; } } return null; }
private boolean mitHeuristics(MethodInvocationTree mit) { Symbol methodSymbol = mit.symbol(); return !methodSymbol.isUnknown() && invocationOfMethodFromOtherClass(mit) && methodSymbol.name().matches("new.*|create.*|open.*"); }
private void collectUnknownIdentifier(IdentifierTree identifier) { if (identifier.symbol().isUnknown() && !isMethodIdentifier(identifier)) { unknownIdentifiers.add(identifier.name()); } }
private void visitTerminalIdentifier(IdentifierTree tree) { Symbol symbol = tree.symbol(); MethodReference currentMethod = methodReferences.peek(); if (symbol.isUnknown()) { currentMethod.setNonStaticReference(); return; } for (MethodReference methodReference : methodReferences) { methodReference.checkSymbol(symbol); } }
private void checkIfUnknown(MethodReferenceTree mref) { IdentifierTree methodIdentifier = mref.method(); if (methodIdentifier.symbol().isUnknown()) { unresolvedMethodNames.add(methodIdentifier.name()); } }
private void collectUnknownIdentifier(IdentifierTree identifier) { if (identifier.symbol().isUnknown() && !isMethodIdentifier(identifier)) { unknownIdentifiers.add(identifier.name()); } }
@Override public void visitNewClass(NewClassTree tree) { if (tree.constructorSymbol().isUnknown()) { context.reportIssue(this, tree.identifier(), "Constructor not resolved"); } } }
@Override public void visitMethodInvocation(MethodInvocationTree tree) { Symbol symbol = tree.symbol(); if(symbol.isUnknown()) { unknownInvocations.put(ExpressionUtils.methodName(tree).name(), tree); } else if (isPrivateMethodOfOuterClass(symbol)) { usages.add(symbol); } super.visitMethodInvocation(tree); }
private static boolean sameVisibility(Symbol.MethodSymbol method, Symbol parentMethod) { if (parentMethod.isUnknown()) { return true; } return bothPackage(method, parentMethod) || bothProtected(method, parentMethod) || bothPublic(method, parentMethod); }
private static boolean isCallToParametrizedOrUnknownMethod(ExpressionTree expressionTree) { if (expressionTree.is(Tree.Kind.METHOD_INVOCATION)) { Symbol symbol = ((MethodInvocationTree) expressionTree).symbol(); return symbol.isUnknown() || ((JavaSymbol.MethodJavaSymbol) symbol).isParametrized(); } return false; }
private static boolean isExcluded(MethodInvocationTree mit) { String methodName = mit.symbol().name(); return mit.symbol().isUnknown() || EXCLUDED.anyMatch(mit) || (isInTryCatch(mit) && (EXCLUDED_PREFIX.stream().anyMatch(methodName::startsWith) || STRING_GET_BYTES.matches(mit))); }
@Override public void visitMethodInvocation(MethodInvocationTree tree) { if (tree.symbol().isUnknown()) { context.reportIssue(this, methodName(tree.methodSelect()), "Method not resolved"); } super.visitMethodInvocation(tree); }
@Override public void visitMethodInvocation(MethodInvocationTree tree) { Symbol symbol = tree.symbol(); if (!symbol.isUnknown() && symbol.owner().type().isSubtypeOf("java.lang.Thread") && "interrupt".equals(symbol.name()) && tree.arguments().isEmpty()) { threadInterrupted = true; return; } super.visitMethodInvocation(tree); }