public Javadoc(Tree tree) { if (tree.is(METHOD_KINDS)) { elementParameters = ((MethodTree) tree).parameters().stream() .map(VariableTree::simpleName) .map(IdentifierTree::name) .collect(Collectors.toList()); elementExceptionNames = ((MethodTree) tree).throwsClauses().stream() .map(Javadoc::exceptionName) .filter(Objects::nonNull) .collect(Collectors.toList()); } else if (tree.is(CLASS_KINDS)) { elementParameters = ((ClassTree) tree).typeParameters().stream() .map(TypeParameterTree::identifier) .map(IdentifierTree::name) .map(name -> "<" + name + ">") .collect(Collectors.toList()); elementExceptionNames = Collections.emptyList(); } else { elementParameters = Collections.emptyList(); elementExceptionNames = Collections.emptyList(); } List<String> javadocLines = cleanLines(PublicApiChecker.getApiJavadoc(tree)); mainDescription = getDescription(javadocLines, -1, ""); blockTagDescriptions = extractBlockTags(javadocLines, Arrays.asList(BlockTag.values())); undocumentedNamedTags = new EnumMap<>(BlockTag.class); }
public Javadoc(Tree tree) { if (tree.is(METHOD_KINDS)) { elementParameters = ((MethodTree) tree).parameters().stream() .map(VariableTree::simpleName) .map(IdentifierTree::name) .collect(Collectors.toList()); elementExceptionNames = ((MethodTree) tree).throwsClauses().stream() .map(Javadoc::exceptionName) .filter(Objects::nonNull) .collect(Collectors.toList()); } else if (tree.is(CLASS_KINDS)) { elementParameters = ((ClassTree) tree).typeParameters().stream() .map(TypeParameterTree::identifier) .map(IdentifierTree::name) .map(name -> "<" + name + ">") .collect(Collectors.toList()); elementExceptionNames = Collections.emptyList(); } else { elementParameters = Collections.emptyList(); elementExceptionNames = Collections.emptyList(); } List<String> javadocLines = cleanLines(PublicApiChecker.getApiJavadoc(tree)); mainDescription = getDescription(javadocLines, -1, ""); blockTagDescriptions = extractBlockTags(javadocLines, Arrays.asList(BlockTag.values())); undocumentedNamedTags = new EnumMap<>(BlockTag.class); }
private List<String> getParameters(Tree tree) { ImmutableList.Builder<String> builder = ImmutableList.builder(); if (tree.is(METHOD_KINDS)) { MethodTree methodTree = (MethodTree) tree; for (VariableTree variableTree : methodTree.parameters()) { builder.add(variableTree.simpleName().name()); } // don't check type paramters documentation for methods } else if (tree.is(CLASS_KINDS)) { for (TypeParameterTree typeParam : ((ClassTree) tree).typeParameters()) { builder.add("<" + typeParam.identifier().name() + ">"); } } return builder.build(); }
@CheckForNull private static SyntaxToken getLastTokenFromSignature(ClassTree classTree) { List<TypeTree> superInterfaces = classTree.superInterfaces(); if (!superInterfaces.isEmpty()) { return getIdentifierToken(Iterables.getLast(superInterfaces)); } TypeTree superClass = classTree.superClass(); if (superClass != null) { return getIdentifierToken(superClass); } TypeParameters typeParameters = classTree.typeParameters(); if (!typeParameters.isEmpty()) { return typeParameters.closeBracketToken(); } IdentifierTree simpleName = classTree.simpleName(); if (simpleName != null) { return simpleName.identifierToken(); } // enum constants and new class trees are handled separately return null; }
@CheckForNull private static SyntaxToken getLastTokenFromSignature(ClassTree classTree) { List<TypeTree> superInterfaces = classTree.superInterfaces(); if (!superInterfaces.isEmpty()) { return getIdentifierToken(Iterables.getLast(superInterfaces)); } TypeTree superClass = classTree.superClass(); if (superClass != null) { return getIdentifierToken(superClass); } TypeParameters typeParameters = classTree.typeParameters(); if (!typeParameters.isEmpty()) { return typeParameters.closeBracketToken(); } IdentifierTree simpleName = classTree.simpleName(); if (simpleName != null) { return simpleName.identifierToken(); } // enum constants and new class trees are handled separately return null; }
@Override public void visitNode(Tree tree) { if (hasSemantic()) { TypeParameters typeParameters; String messageEnd; if (tree.is(Tree.Kind.METHOD)) { typeParameters = ((MethodTree) tree).typeParameters(); messageEnd = "method."; } else { typeParameters = ((ClassTree) tree).typeParameters(); messageEnd = "class."; if (tree.is(Tree.Kind.INTERFACE)) { messageEnd = "interface."; } } for (TypeParameterTree typeParameter : typeParameters) { Symbol symbol = semanticModel.getSymbol(typeParameter); if (symbol.usages().isEmpty()) { String message = new StringBuilder(typeParameter.identifier().name()) .append(" is not used in the ") .append(messageEnd).toString(); reportIssue(typeParameter.identifier(), message); } } } } }
@Override public void visitNode(Tree tree) { if (hasSemantic()) { TypeParameters typeParameters; String messageEnd; if (tree.is(Tree.Kind.METHOD)) { typeParameters = ((MethodTree) tree).typeParameters(); messageEnd = "method."; } else { typeParameters = ((ClassTree) tree).typeParameters(); messageEnd = "class."; if (tree.is(Tree.Kind.INTERFACE)) { messageEnd = "interface."; } } for (TypeParameterTree typeParameter : typeParameters) { Symbol symbol = semanticModel.getSymbol(typeParameter); if (symbol.usages().isEmpty()) { String message = new StringBuilder(typeParameter.identifier().name()) .append(" is not used in the ") .append(messageEnd).toString(); reportIssue(typeParameter.identifier(), message); } } } } }
@Override public void visitClass(ClassTree tree) { IdentifierTree simpleName = tree.simpleName(); if (simpleName != null) { createSymbol(simpleName, tree.symbol().usages()); } for (TypeParameterTree typeParameterTree : tree.typeParameters()) { createSymbol(typeParameterTree.identifier(), typeParameterTree); } super.visitClass(tree); }
@Override public void visitClass(ClassTree tree) { IdentifierTree simpleName = tree.simpleName(); if (simpleName != null) { createSymbol(simpleName, tree.symbol().usages()); } for (TypeParameterTree typeParameterTree : tree.typeParameters()) { createSymbol(typeParameterTree.identifier(), typeParameterTree); } super.visitClass(tree); }
@Override public void visitClass(ClassTree tree) { IdentifierTree simpleName = tree.simpleName(); if (simpleName != null) { createSymbol(simpleName, tree.symbol().usages()); } for (TypeParameterTree typeParameterTree : tree.typeParameters()) { createSymbol(typeParameterTree.identifier(), typeParameterTree); } super.visitClass(tree); }
@Override public void visitClass(ClassTree tree) { IdentifierTree simpleName = tree.simpleName(); if (simpleName != null) { createSymbol(simpleName, tree.symbol().usages()); } for (TypeParameterTree typeParameterTree : tree.typeParameters()) { createSymbol(typeParameterTree.identifier(), typeParameterTree); } super.visitClass(tree); }
@Override public void visitClass(ClassTree tree) { scan(tree.modifiers()); scan(tree.typeParameters()); scan(tree.superClass()); scan(tree.superInterfaces()); scan(tree.members()); }
@Override public void visitClass(ClassTree tree) { //skip superclass and interfaces : visited in second pass. scan(tree.modifiers()); completeMetadata((JavaSymbol) tree.symbol(), tree.modifiers().annotations()); scan(tree.typeParameters()); scan(tree.members()); }
@Override public void visitClass(ClassTree tree) { //skip superclass and interfaces : visited in second pass. scan(tree.modifiers()); completeMetadata((JavaSymbol) tree.symbol(), tree.modifiers().annotations()); scan(tree.typeParameters()); scan(tree.members()); }
@Override public void visitClass(ClassTree tree) { scan(tree.modifiers()); scan(tree.typeParameters()); scan(tree.superClass()); scan(tree.superInterfaces()); scan(tree.members()); }
@Override public void visitClass(ClassTree tree) { //skip superclass and interfaces : visited in second pass. scan(tree.modifiers()); completeMetadata((JavaSymbol) tree.symbol(), tree.modifiers().annotations()); scan(tree.typeParameters()); scan(tree.members()); }
@Override public void visitClass(ClassTree tree) { //skip superclass and interfaces : visited in second pass. scan(tree.modifiers()); completeMetadata((JavaSymbol) tree.symbol(), tree.modifiers().annotations()); scan(tree.typeParameters()); scan(tree.members()); }
@Override public void visitClass(ClassTree tree) { scan(tree.modifiers()); scan(tree.simpleName()); scan(tree.typeParameters()); scan(tree.superClass()); scan(tree.superInterfaces()); scan(tree.members()); }
@Override public void visitClass(ClassTree tree) { scan(tree.modifiers()); scan(tree.simpleName()); scan(tree.typeParameters()); scan(tree.superClass()); scan(tree.superInterfaces()); scan(tree.members()); }
@Override public void visitClass(ClassTree tree) { if (!tree.modifiers().modifiers().contains(Modifier.ABSTRACT)) { super.visitClass(tree); } else { scan(tree.modifiers()); scan(tree.typeParameters()); scan(tree.superClass()); scan(tree.superInterfaces()); for (Tree memberTree : tree.members()) { if (memberTree.is(Kind.METHOD)) { super.visitMethod((MethodTree) memberTree); } else { scan(memberTree); } } } }