private static Optional<Type> findInterruptingType(VariableTree parameter) { if (parameter.type().is(Tree.Kind.UNION_TYPE)) { return ((UnionTypeTree) parameter.type()).typeAlternatives().stream() .map(TypeTree::symbolType) .filter(INTERRUPTING_TYPE_PREDICATE) .findFirst(); } return Optional.of(parameter) .map(VariableTree::symbol) .map(Symbol::type) .filter(INTERRUPTING_TYPE_PREDICATE); }
private boolean returnsPrimitive(String primitive) { if (returnType != null) { return returnType.is(Tree.Kind.PRIMITIVE_TYPE) && primitive.equals(((PrimitiveTypeTree) returnType).keyword().text()); } return false; }
private boolean returnsPrimitive(String primitive) { if (returnType != null) { return returnType.is(Tree.Kind.PRIMITIVE_TYPE) && primitive.equals(((PrimitiveTypeTree) returnType).keyword().text()); } return false; }
private boolean returnsPrimitive(String primitive) { if (returnType != null) { return returnType.is(Tree.Kind.PRIMITIVE_TYPE) && primitive.equals(((PrimitiveTypeTree) returnType).keyword().text()); } return false; }
private boolean isObjectInInnerClass(VariableTree variableTree) { if (nestedClassesLevel > 1) { if (variableTree.type().is(Tree.Kind.IDENTIFIER)) { return !"String".equals(((IdentifierTree) variableTree.type()).name()); } else { return !variableTree.type().is(Tree.Kind.PRIMITIVE_TYPE); } } return false; }
private static boolean isVoid(MethodTree methodTree) { TypeTree typeTree = methodTree.returnType(); return typeTree.is(Tree.Kind.PRIMITIVE_TYPE) && "void".equals(((PrimitiveTypeTree) typeTree).keyword().text()); } }
private static boolean hasAnnotationDifferentFromOverride(List<AnnotationTree> annotations) { for (AnnotationTree annotation : annotations) { if (!(annotation.annotationType().is(Tree.Kind.IDENTIFIER) && "Override".equals(((IdentifierTree) annotation.annotationType()).name()))) { return true; } } return false; }
private static boolean hasAnnotationDifferentFromOverride(List<AnnotationTree> annotations) { for (AnnotationTree annotation : annotations) { if (!(annotation.annotationType().is(Tree.Kind.IDENTIFIER) && "Override".equals(((IdentifierTree) annotation.annotationType()).name()))) { return true; } } return false; }
public static boolean isDeprecated(AnnotationTree tree) { return tree.annotationType().is(Kind.IDENTIFIER) && "Deprecated".equals(((IdentifierTree) tree.annotationType()).name()); }
private static SyntaxToken getIdentifierToken(TypeTree typeTree) { if (typeTree.is(Tree.Kind.IDENTIFIER)) { return ((IdentifierTree) typeTree).identifierToken(); } else if (typeTree.is(Tree.Kind.MEMBER_SELECT)) { return ((MemberSelectExpressionTree) typeTree).identifier().identifierToken(); } else { return ((ParameterizedTypeTree) typeTree).typeArguments().closeBracketToken(); } }
@Override public void visitNode(Tree tree) { VariableTree variableTree = (VariableTree) tree; if(variableTree.type().is(Kind.ARRAY_TYPE) && isStaticFinalNotPrivate(variableTree)) { addIssue(tree, "Make this array \"private\"."); } }
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; } }
public static String getclassName(NewClassTree newClasstree) { if (newClasstree.identifier().is(Tree.Kind.MEMBER_SELECT)) { return ((MemberSelectExpressionTree) newClasstree.identifier()).identifier().name(); } else if (newClasstree.identifier().is(Tree.Kind.IDENTIFIER)) { return ((IdentifierTree) newClasstree.identifier()).name(); } return null; }
public static String getclassName(NewClassTree newClasstree) { if (newClasstree.identifier().is(Tree.Kind.MEMBER_SELECT)) { return ((MemberSelectExpressionTree) newClasstree.identifier()).identifier().name(); } else if (newClasstree.identifier().is(Tree.Kind.IDENTIFIER)) { return ((IdentifierTree) newClasstree.identifier()).name(); } return null; }
private int end(AnnotationTree annotationTree) { TypeTree annotationType = annotationTree.annotationType(); SyntaxToken token; if (annotationType.is(Tree.Kind.MEMBER_SELECT)) { token = ((MemberSelectExpressionTree) annotationType).identifier().identifierToken(); } else { token = ((IdentifierTree) annotationType).identifierToken(); } return end(token); }
private boolean isParameterStringArray() { VariableTree variableTree = parameters.get(0); boolean result = false; if (variableTree.type().is(Tree.Kind.ARRAY_TYPE)) { ArrayTypeTree arrayTypeTree = (ArrayTypeTree) variableTree.type(); result = arrayTypeTree.type().symbolType().isClass() && "String".equals(arrayTypeTree.type().symbolType().name()); } return result; }
private boolean isParameterStringArray() { VariableTree variableTree = parameters.get(0); boolean result = false; if (variableTree.type().is(Tree.Kind.ARRAY_TYPE)) { ArrayTypeTree arrayTypeTree = (ArrayTypeTree) variableTree.type(); result = arrayTypeTree.type().symbolType().isClass() && "String".equals(arrayTypeTree.type().symbolType().name()); } return result; }
@Override public void visitForEachStatement(ForEachStatement tree) { scan(tree.variable()); scan(tree.expression()); TypeTree typeTree = tree.variable().type(); if (typeTree.is(Tree.Kind.VAR_TYPE)) { JavaType iteratedObjectType = getIteratedObjectType((JavaType) tree.expression().symbolType()); setInferedType(upwardProjection(iteratedObjectType), (DeferredType) typeTree.symbolType()); } // scan the body only after handling type of variable scan(tree.statement()); }
@Override public void visitForEachStatement(ForEachStatement tree) { scan(tree.variable()); scan(tree.expression()); TypeTree typeTree = tree.variable().type(); if (typeTree.is(Tree.Kind.VAR_TYPE)) { JavaType iteratedObjectType = getIteratedObjectType((JavaType) tree.expression().symbolType()); setInferedType(upwardProjection(iteratedObjectType), (DeferredType) typeTree.symbolType()); } // scan the body only after handling type of variable scan(tree.statement()); }