public ParametersList(MethodTree methodTree) { parameterNames = new ArrayList<>(); parameterTypes = new ArrayList<>(); methodTree.parameters().stream().map(VariableTree::symbol).forEach(symbol -> { parameterNames.add(symbol.name().toLowerCase(Locale.ENGLISH)); parameterTypes.add(symbol.type()); }); parameters = methodTree.parameters(); }
private static boolean isExcluded(MethodTree methodTree) { String name = methodTree.simpleName().name(); if ("equals".equals(name)) { return methodTree.parameters().size() == 1; } else if ("hashCode".equals(name)) { return methodTree.parameters().isEmpty(); } return false; }
private boolean hasSingleObjectParameter(MethodTree methodTree) { List<VariableTree> parameters = methodTree.parameters(); if (parameters.size() != 1) { return false; } return isObjectType(parameters.get(0)); }
private boolean isAccessor(Tree tree) { if (!classTrees.isEmpty() && tree.is(Tree.Kind.METHOD)) { MethodTree methodTree = (MethodTree) tree; String name = methodTree.simpleName().name(); return (setterPattern.matcher(name).matches() && methodTree.parameters().size() == 1) || (getterPattern.matcher(name).matches() && methodTree.parameters().isEmpty()); } return false; }
@Override public void visitMethod(MethodTree tree) { ArrayList<Symbol> parameters = new ArrayList<>(); for (VariableTree variableTree : tree.parameters()) { parameters.add(variableTree.symbol()); } parametersStack.push(parameters); super.visitMethod(tree); parametersStack.pop(); }
private static String interestingMethodName(MethodTree method) { String methodName = method.simpleName().name(); if (method.parameters().isEmpty() && ("toString".equals(methodName) || "clone".equals(methodName))) { return methodName; } return null; }
@Override public void visitMethod(MethodTree tree) { for (VariableTree parameterTree : tree.parameters()) { variables.add(parameterTree.symbol()); } super.visitMethod(tree); for (VariableTree parameterTree : tree.parameters()) { variables.remove(parameterTree.symbol()); } }
@Override public void visitMethod(MethodTree tree) { super.visitMethod(tree); for (VariableTree variableTree : tree.parameters()) { variableTypes.remove(variableTree.type()); } }
private static boolean isReadObject(MethodTree methodTree) { return "readObject".equals(methodTree.simpleName().name()) && methodTree.parameters().size() == 1 && methodTree.parameters().get(0).type().symbolType().is("java.io.ObjectInputStream"); }
private boolean isNonVoidMethodWithNoParameter(Tree tree, Javadoc javadoc) { if (!tree.is(Tree.Kind.METHOD)) { return false; } return hasNonVoidReturnType(tree) && ((MethodTree) tree).parameters().isEmpty() // if return description is there, then it will be validated later && !javadoc.noReturnDescription(); }
private static boolean isCloneMethod(Tree tree) { if (!tree.is(Kind.METHOD)) { return false; } MethodTree methodTree = (MethodTree) tree; return "clone".equals(methodTree.simpleName().name()) && methodTree.parameters().isEmpty() && methodTree.block() != null; }
@Override public void visitMethod(MethodTree tree) { if (tree.block() == null || tree.is(Tree.Kind.CONSTRUCTOR)) { // skip everything for abstract methods (from interfaces or abstract class) and constructors return; } tree.parameters().stream() .filter(p -> IS_ZIP_ENTRY.test(p.symbol().type())) .forEach(p -> context.reportIssue(this, p, ISSUE_MESSAGE)); super.visitMethod(tree); }
private boolean isFinalize(MethodTree methodTree) { if ("finalize".equals(methodTree.simpleName().name()) && methodTree.parameters().isEmpty()) { Tree returnType = methodTree.returnType(); if (returnType != null && returnType.is(Tree.Kind.PRIMITIVE_TYPE)) { return "void".equals(((PrimitiveTypeTree) returnType).keyword().text()); } } return false; } }
private static boolean isSetter(MethodTree methodTree) { TypeTree returnType = methodTree.returnType(); BlockTree block = methodTree.block(); boolean returnsVoid = returnType.is(Tree.Kind.PRIMITIVE_TYPE) && "void".equals(((PrimitiveTypeTree) returnType).keyword().text()); boolean hasAtLeastOneStatement = block == null || !block.body().isEmpty(); return methodTree.simpleName().name().startsWith("set") && methodTree.parameters().size() == 1 && returnsVoid && hasAtLeastOneStatement; } }
@Override public boolean apply(MethodTree methodTree) { return methodTree.simpleName().name().startsWith(getStartName()) && methodTree.parameters().size() == 1 && methodTree.returnType().symbolType().is("void"); } };
@Override public boolean apply(MethodTree methodTree) { return methodTree.simpleName().name().startsWith(getStartName()) && methodTree.parameters().isEmpty() && !methodTree.returnType().symbolType().is("void"); } };
private static boolean isCallToSuper(MethodTree methodTree, Tree callToSuper) { if (callToSuper.is(Tree.Kind.METHOD_INVOCATION)) { MethodInvocationTree methodInvocationTree = (MethodInvocationTree) callToSuper; if (methodInvocationTree.methodSelect().is(Tree.Kind.MEMBER_SELECT)) { MemberSelectExpressionTree mset = (MemberSelectExpressionTree) methodInvocationTree.methodSelect(); if (callSuperMethodWithSameName(mset, methodTree) && callsWithSameParameters(methodInvocationTree.arguments(), methodTree.parameters())) { return true; } } } return false; }
@Override public void visitMethod(MethodTree tree) { //skip return type, and throw clauses : visited in second pass. scan(tree.modifiers()); completeMetadata((JavaSymbol.MethodJavaSymbol) tree.symbol(), tree.modifiers().annotations()); scan(tree.typeParameters()); // revisits the parameters to resolve their annotations. scan(tree.parameters()); scan(tree.defaultValue()); scan(tree.block()); }
@Override public void visitMethod(MethodTree tree) { scan(tree.modifiers()); scan(tree.typeParameters()); scan(tree.returnType()); // skip the simple name scan(tree.parameters()); scan(tree.defaultValue()); scan(tree.throwsClauses()); scan(tree.block()); } }
@Override public void visitMethod(MethodTree tree) { scan(tree.modifiers()); scan(tree.typeParameters()); scan(tree.returnType()); scan(tree.simpleName()); scan(tree.parameters()); scan(tree.defaultValue()); scan(tree.throwsClauses()); scan(tree.block()); }