@Override public void visitToken(SyntaxToken syntaxToken) { for (SyntaxTrivia trivia : syntaxToken.trivias()) { if (seenFirstToken) { handleCommentsForTrivia(trivia); } else { seenFirstToken = true; } } seenFirstToken = true; }
private static boolean containsComment(BlockTree block) { return !block.closeBraceToken().trivias().isEmpty(); }
@Override public void visitToken(SyntaxToken syntaxToken) { for (SyntaxTrivia trivia : syntaxToken.trivias()) { if (seenFirstToken) { handleCommentsForTrivia(trivia); } else { seenFirstToken = true; } } seenFirstToken = true; }
private static boolean containsComment(BlockTree block) { return !block.closeBraceToken().trivias().isEmpty(); }
private static String getCommentFromSyntaxToken(SyntaxToken syntaxToken) { for (SyntaxTrivia syntaxTrivia : syntaxToken.trivias()) { if (syntaxTrivia.comment().startsWith("/**")) { return syntaxTrivia.comment(); } } return null; }
private String getCommentFromSyntaxToken(SyntaxToken syntaxToken) { for (SyntaxTrivia syntaxTrivia : syntaxToken.trivias()) { if (syntaxTrivia.comment().startsWith("/**")) { return syntaxTrivia.comment(); } } return null; }
private static String getCommentFromSyntaxToken(SyntaxToken syntaxToken) { for (SyntaxTrivia syntaxTrivia : syntaxToken.trivias()) { if (syntaxTrivia.comment().startsWith("/**")) { return syntaxTrivia.comment(); } } return null; }
@Override public void visitToken(SyntaxToken syntaxToken) { if (ignoreMultipleOccurences && !visitedTokens.add(syntaxToken)) { return; } int tokenLine = syntaxToken.line(); if (tokenLine != previousTokenLine) { syntaxToken.trivias().stream() .filter(trivia -> trivia.startLine() == previousTokenLine) .map(SyntaxTrivia::comment) .map(comment -> comment.startsWith("//") ? comment.substring(2) : comment.substring(2, comment.length() - 2)) .map(String::trim) .filter(comment -> !pattern.matcher(comment).matches() && !containsExcludedPattern(comment)) .forEach(comment -> addIssue(previousTokenLine, "Move this trailing comment on the previous empty line.")); } previousTokenLine = tokenLine; }
private static String getCommentFromSyntaxToken(SyntaxToken syntaxToken) { for (SyntaxTrivia syntaxTrivia : syntaxToken.trivias()) { if (syntaxTrivia.comment().startsWith("/**")) { return syntaxTrivia.comment(); } } return null; }
@Override public void visitToken(SyntaxToken syntaxToken) { linesOfCode.add(syntaxToken.line()); for (SyntaxTrivia trivia : syntaxToken.trivias()) { int baseLine = trivia.startLine(); String[] lines = trivia.comment().split("(\r)?\n|\r", -1); for (int i = 0; i < lines.length; i++) { linesOfComments.add(baseLine + i); } } } }
private Stream<UastNode> visitToken(Tree tree) { UastNode uastNode = newUastNode(tree, Collections.emptyList()); if (uastNode.token != null && SourceVersion.isKeyword(uastNode.token.value)) { uastNode.kinds.add(UastNode.Kind.KEYWORD); } if (((InternalSyntaxToken) tree).isEOF()) { uastNode.kinds.add(UastNode.Kind.EOF); } treeUastNodeMap.put(tree, uastNode); List<UastNode> trivia = ((SyntaxToken) tree).trivias().stream() // SonarJava AST duplicates some nodes (e.g. Variable) .filter(seenTrivia::add) .map(syntaxTrivia -> newUastNode(syntaxTrivia, Collections.emptyList())) .collect(Collectors.toList()); return Stream.concat(trivia.stream(), Stream.of(uastNode)); }
private static boolean hasCommentInside(BlockTree tree) { return tree.closeBraceToken() == null || !tree.closeBraceToken().trivias().isEmpty(); }
private boolean hasCommentInside(BlockTree tree) { return tree.closeBraceToken() == null || !tree.closeBraceToken().trivias().isEmpty(); }
private static boolean hasCommentInside(BlockTree tree) { return tree.closeBraceToken() == null || !tree.closeBraceToken().trivias().isEmpty(); }
@Override public void visitToken(SyntaxToken syntaxToken) { int tokenLine = ((InternalSyntaxToken) syntaxToken).getLine(); if (tokenLine != previousTokenLine) { for (SyntaxTrivia trivia : syntaxToken.trivias()) { if (((InternalSyntaxTrivia)trivia).getLine() == previousTokenLine) { String comment = trivia.comment(); comment = comment.startsWith("//") ? comment.substring(2) : comment.substring(2, comment.length() - 2); comment = comment.trim(); if (!pattern.matcher(comment).matches() && !containsExcludedPattern(comment)) { addIssue(previousTokenLine, "Move this trailing comment on the previous empty line."); } } } } previousTokenLine = tokenLine; }
private static Set<Integer> filteredLines(Tree tree) { SyntaxToken firstSyntaxToken = tree.firstToken(); SyntaxToken lastSyntaxToken = tree.lastToken(); if (firstSyntaxToken != null && lastSyntaxToken != null) { int startLine = firstSyntaxToken.line(); int endLine = lastSyntaxToken.line(); // includes trivia on top of first syntax token. List<SyntaxTrivia> trivias = firstSyntaxToken.trivias(); if (!trivias.isEmpty()) { startLine = trivias.get(0).startLine(); } return ContiguousSet.create(Range.closed(startLine, endLine), DiscreteDomain.integers()); } return new HashSet<>(); } }
private static Set<Integer> filteredLines(Tree tree) { SyntaxToken firstSyntaxToken = tree.firstToken(); SyntaxToken lastSyntaxToken = tree.lastToken(); if (firstSyntaxToken != null && lastSyntaxToken != null) { int startLine = firstSyntaxToken.line(); int endLine = lastSyntaxToken.line(); // includes trivia on top of first syntax token. List<SyntaxTrivia> trivias = firstSyntaxToken.trivias(); if (!trivias.isEmpty()) { startLine = trivias.get(0).startLine(); } return ContiguousSet.create(Range.closed(startLine, endLine), DiscreteDomain.integers()); } return new HashSet<>(); } }
protected void visitTokens(CompilationUnitTree compilationUnitTree) { if (nodesToVisit().contains(Tree.Kind.TOKEN) || nodesToVisit().contains(Tree.Kind.TRIVIA)) { //FIXME relying on ASTNode to iterate over tokens. for (Token token : ((JavaTree) compilationUnitTree).getAstNode().getTokens()) { SyntaxToken syntaxToken = new InternalSyntaxToken(token); visitToken(syntaxToken); if (nodesToVisit().contains(Tree.Kind.TRIVIA)) { for (SyntaxTrivia syntaxTrivia : syntaxToken.trivias()) { visitTrivia(syntaxTrivia); } } } } }