@Override public void visitNode(Tree tree) { AnnotationTree annotationTree = (AnnotationTree) tree; TypeSymbol annotationSymbol = annotationTree.symbolType().symbol(); if (annotationSymbol.isUnknown()) { return; } Map<String, Object> defaultValueByName = annotationSymbol.memberSymbols().stream() .filter(Symbol::isMethodSymbol) .map(s -> (JavaSymbol.MethodJavaSymbol) s) .filter(s -> s.defaultValue() != null) .collect(Collectors.toMap(Symbol::name, JavaSymbol.MethodJavaSymbol::defaultValue)); for (ExpressionTree argument : annotationTree.arguments()) { Tree valueSet = argument; // Single element annotation : JLS8 9.7.3 : one param must be named value. String paramName = "value"; if (argument.is(Tree.Kind.ASSIGNMENT)) { AssignmentExpressionTree assignmentTree = (AssignmentExpressionTree) argument; IdentifierTree nameTree = (IdentifierTree) assignmentTree.variable(); paramName = nameTree.name(); valueSet = assignmentTree.expression(); } if (setValueIsSameAsDefaultValue(defaultValueByName.get(paramName), valueSet)) { reportIssue(argument, String.format("Remove this default value assigned to parameter \"%s\".", paramName)); } } }
@Override public void visitNode(Tree tree) { AnnotationTree annotationTree = (AnnotationTree) tree; TypeSymbol annotationSymbol = annotationTree.symbolType().symbol(); if (annotationSymbol.isUnknown()) { return; } Map<String, Object> defaultValueByName = annotationSymbol.memberSymbols().stream() .filter(Symbol::isMethodSymbol) .map(s -> (JavaSymbol.MethodJavaSymbol) s) .filter(s -> s.defaultValue() != null) .collect(Collectors.toMap(Symbol::name, JavaSymbol.MethodJavaSymbol::defaultValue)); for (ExpressionTree argument : annotationTree.arguments()) { Tree valueSet = argument; // Single element annotation : JLS8 9.7.3 : one param must be named value. String paramName = "value"; if (argument.is(Tree.Kind.ASSIGNMENT)) { AssignmentExpressionTree assignmentTree = (AssignmentExpressionTree) argument; IdentifierTree nameTree = (IdentifierTree) assignmentTree.variable(); paramName = nameTree.name(); valueSet = assignmentTree.expression(); } if (setValueIsSameAsDefaultValue(defaultValueByName.get(paramName), valueSet)) { reportIssue(argument, String.format("Remove this default value assigned to parameter \"%s\".", paramName)); } } }
@Override public void visitNode(Tree tree) { AnnotationTree annotationTree = (AnnotationTree) tree; TypeSymbol annotationSymbol = annotationTree.symbolType().symbol(); if (annotationSymbol.isUnknown()) { return; } List<String> declarationNames = new ArrayList<>(); for (Symbol symbol : annotationSymbol.memberSymbols()) { declarationNames.add(symbol.name()); } List<String> annotationArguments = new ArrayList<>(); for (ExpressionTree argument : annotationTree.arguments()) { if (argument.is(Tree.Kind.ASSIGNMENT)) { AssignmentExpressionTree assignmentTree = (AssignmentExpressionTree) argument; IdentifierTree nameTree = (IdentifierTree) assignmentTree.variable(); annotationArguments.add(nameTree.name()); } } declarationNames.retainAll(annotationArguments); if (!declarationNames.equals(annotationArguments)) { reportIssue(annotationTree.annotationType(), "Reorder annotation arguments to match the order of declaration."); } }
@Override public void visitNode(Tree tree) { AnnotationTree annotationTree = (AnnotationTree) tree; TypeSymbol annotationSymbol = annotationTree.symbolType().symbol(); if (annotationSymbol.isUnknown()) { return; } List<String> declarationNames = new ArrayList<>(); for (Symbol symbol : annotationSymbol.memberSymbols()) { declarationNames.add(symbol.name()); } List<String> annotationArguments = new ArrayList<>(); for (ExpressionTree argument : annotationTree.arguments()) { if (argument.is(Tree.Kind.ASSIGNMENT)) { AssignmentExpressionTree assignmentTree = (AssignmentExpressionTree) argument; IdentifierTree nameTree = (IdentifierTree) assignmentTree.variable(); annotationArguments.add(nameTree.name()); } } declarationNames.retainAll(annotationArguments); if (!declarationNames.equals(annotationArguments)) { reportIssue(annotationTree.annotationType(), "Reorder annotation arguments to match the order of declaration."); } }