private void checkAnnotations(ModifiersTree modifiers, List<String> annotations) { modifiers.annotations().stream() .filter(annotationTree -> annotations.stream().anyMatch(annotationTree.symbolType()::is)) .forEach(this::reportIssue); }
private boolean isStatic() { return modifiers.modifiers().contains(Modifier.STATIC); }
private int computeFlags(ModifiersTree modifiers) { int result = 0; //JLS7 6.6.1: All members of interfaces are implicitly public. if ((env.scope.owner.flags & Flags.INTERFACE) != 0) { result = Flags.PUBLIC; } for (Modifier modifier : modifiers.modifiers()) { result |= Flags.flagForModifier(modifier); } if(hasDeprecatedAnnotation(modifiers.annotations())) { result |= Flags.DEPRECATED; } return result; }
@Override public void visitNode(Tree tree) { MethodTree method = (MethodTree) tree; boolean isPublic = method.modifiers().contains(Modifier.PUBLIC); if (hasSemantic()) { isPublic = method.symbol().isPublic(); } if (!isPublic && hasTransactionalAnnotation(method)) { reportIssue(method.simpleName(), "Make this method \"public\" or remove the \"@Transactional\" annotation"); } }
private static ModifierTree getFirstBadlyOrdered(ModifiersTree modifiersTree) { ListIterator<ModifierTree> modifiersIterator = modifiersTree.listIterator(); skipAnnotations(modifiersIterator); Modifier[] modifiers = Modifier.values(); int modifierIndex = 0; while (modifiersIterator.hasNext()){ ModifierTree modifier = modifiersIterator.next(); if (modifier.is(Kind.ANNOTATION)) { break; } ModifierKeywordTree mkt = (ModifierKeywordTree) modifier; for (; modifierIndex < modifiers.length && !mkt.modifier().equals(modifiers[modifierIndex]); modifierIndex++) { // We're just interested in the final value of modifierIndex } if (modifierIndex == modifiers.length) { return modifier; } } return testOnlyAnnotationsAreLeft(modifiersIterator); }
private int getColumn(Tree tree) { if (tree.is(Kind.VARIABLE)) { VariableTree variableTree = (VariableTree) tree; int typeColumn = getTypeColumn(variableTree.type()); if (variableTree.modifiers().isEmpty()) { return typeColumn; } return Math.min(typeColumn, ((JavaTree) variableTree.modifiers()).getToken().getColumn()); } else if (isClassTree(tree)) { ClassTree classTree = (ClassTree) tree; if (!classTree.modifiers().isEmpty()) { return ((JavaTree) classTree.modifiers()).getToken().getColumn(); } } return ((JavaTree) tree).getToken().getColumn(); }
private int computeFlags(ModifiersTree modifiers, Tree tree) { int result = 0; if ((env.scope.owner.flags & Flags.INTERFACE) != 0) { result = computeFlagsForInterfaceMember(tree); } for (ModifierKeywordTree modifier : modifiers.modifiers()) { result |= Flags.flagForModifier(modifier.modifier()); } if(hasDeprecatedAnnotation(modifiers.annotations())) { result |= Flags.DEPRECATED; } return result; }
@Override public void visitNode(Tree tree) { MethodTree method = (MethodTree) tree; boolean isPublic = method.modifiers().contains(Modifier.PUBLIC); if (hasSemantic()) { isPublic = method.symbol().isPublic(); } if (!isPublic && hasTransactionalAnnotation(method)) { reportIssue(method.simpleName(), "Make this method \"public\" or remove the \"@Transactional\" annotation"); } }
private static ModifierTree getFirstBadlyOrdered(ModifiersTree modifiersTree) { ListIterator<ModifierTree> modifiersIterator = modifiersTree.listIterator(); skipAnnotations(modifiersIterator); Modifier[] modifiers = Modifier.values(); int modifierIndex = 0; while (modifiersIterator.hasNext()){ ModifierTree modifier = modifiersIterator.next(); if (modifier.is(Kind.ANNOTATION)) { break; } ModifierKeywordTree mkt = (ModifierKeywordTree) modifier; for (; modifierIndex < modifiers.length && !mkt.modifier().equals(modifiers[modifierIndex]); modifierIndex++) { // We're just interested in the final value of modifierIndex } if (modifierIndex == modifiers.length) { return modifier; } } return testOnlyAnnotationsAreLeft(modifiersIterator); }
private void checkAnnotations(ModifiersTree modifiers, List<String> annotations) { modifiers.annotations().stream() .filter(annotationTree -> annotations.stream().anyMatch(annotationTree.symbolType()::is)) .forEach(this::reportIssue); }
private boolean hasModifier(ModifiersTree modifiersTree, Modifier modifier) { return modifiersTree.modifiers().contains(modifier); }
private int computeFlags(ModifiersTree modifiers, Tree tree) { int result = 0; if (Flags.isFlagged(env.scope.owner.flags, Flags.INTERFACE)) { result = computeFlagsForInterfaceMember(tree); } for (ModifierKeywordTree modifier : modifiers.modifiers()) { result |= Flags.flagForModifier(modifier.modifier()); } if(hasDeprecatedAnnotation(modifiers.annotations())) { result |= Flags.DEPRECATED; } return result; }
@Override public void visitModifier(ModifiersTree modifiersTree) { scan(modifiersTree.annotations()); }
private static boolean hasStaticModifier(ModifiersTree modifiers) { return modifiers.modifiers().contains(Modifier.STATIC); }
private int computeFlags(ModifiersTree modifiers, Tree tree) { int result = 0; if (Flags.isFlagged(env.scope.owner.flags, Flags.INTERFACE)) { result = computeFlagsForInterfaceMember(tree); } for (ModifierKeywordTree modifier : modifiers.modifiers()) { result |= Flags.flagForModifier(modifier.modifier()); } if(hasDeprecatedAnnotation(modifiers.annotations())) { result |= Flags.DEPRECATED; } return result; }
private static Optional<AnnotationTree> findRequestMappingAnnotation(ModifiersTree modifiers) { return modifiers.annotations().stream() .filter(annotation -> annotation.symbolType().is(REQUEST_MAPPING_CLASS)) .findFirst(); }
public static Optional<ModifierKeywordTree> findModifier(ModifiersTree modifiersTree, Modifier expectedModifier) { return modifiersTree.modifiers().stream() .filter(modifierKeywordTree -> modifierKeywordTree.modifier() == expectedModifier) .findAny(); } }
@Override public void visitVariable(VariableTree tree) { List<Modifier> modifiers = tree.modifiers().modifiers(); List<AnnotationTree> annotations = tree.modifiers().annotations(); if (isClass() && isPublic(modifiers) && !(isConstant(modifiers) || !annotations.isEmpty())) { context.addIssue(tree, this, "Make " + tree.simpleName() + " a static final constant or non-public and provide accessors if needed."); } super.visitVariable(tree); }
private static Optional<AnnotationTree> findRequestMappingAnnotation(ModifiersTree modifiers) { return modifiers.annotations().stream() .filter(annotation -> annotation.symbolType().is(REQUEST_MAPPING_CLASS)) .findFirst(); }
private void checkMemberModifier(ModifiersTree modifiers, Tree reportingTree) { if (modifiers.modifiers().contains(Modifier.PROTECTED)) { addIssue(reportingTree, "Remove this \"protected\" modifier."); } }