private void visit(Tree tree) { boolean isSubscribed = isSubscribed(tree); boolean shouldVisitSyntaxToken = (visitToken || visitTrivia) && tree.is(Tree.Kind.TOKEN); if (shouldVisitSyntaxToken) { SyntaxToken syntaxToken = (SyntaxToken) tree; if (visitToken) { visitToken(syntaxToken); } if (visitTrivia) { for (SyntaxTrivia syntaxTrivia : syntaxToken.trivias()) { visitTrivia(syntaxTrivia); } } } else if (isSubscribed) { visitNode(tree); } visitChildren(tree); if (!shouldVisitSyntaxToken && isSubscribed) { leaveNode(tree); } }
protected void scanTree(Tree tree) { nodesToVisit = nodesToVisit(); visitToken = isVisitingTokens(); visitTrivia = isVisitingTrivia(); visit(tree); }
public int scan(Tree tree) { complexity = 0; classTrees.clear(); super.scanTree(tree); return complexity; }
private void visit(Tree tree) { boolean isSubscribed = isSubscribed(tree); if(isSubscribed) { visitNode(tree); } visitChildren(tree); if(isSubscribed) { leaveNode(tree); } }
protected void scanTree(Tree tree) { nodesToVisit = nodesToVisit(); visit(tree); }
private void visit(Tree tree) { Consumer<SubscriptionVisitor> callback; boolean isToken = tree.kind() == Tree.Kind.TOKEN; if (isToken) { callback = s -> { SyntaxToken syntaxToken = (SyntaxToken) tree; s.visitToken(syntaxToken); }; } else { callback = s -> s.visitNode(tree); } List<SubscriptionVisitor> subscribed = checks.getOrDefault(tree.kind(), Collections.emptyList()); subscribed.forEach(callback); if (isToken) { checks.getOrDefault(Tree.Kind.TRIVIA, Collections.emptyList()).forEach(s -> ((SyntaxToken) tree).trivias().forEach(s::visitTrivia)); } else { visitChildren(tree); } if(!isToken) { subscribed.forEach(s -> s.leaveNode(tree)); } } }
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); } } } } }
@Override public void scanFile(JavaFileScannerContext context) { behaviorCache.setFileContext(this, (SemanticModel) context.getSemanticModel()); super.scanFile(context); }
private void visitChildren(Tree tree) { JavaTree javaTree = (JavaTree) tree; if (!javaTree.isLeaf()) { for (Iterator<Tree> iter = javaTree.childrenIterator(); iter.hasNext(); ) { Tree next = iter.next(); if (next != null) { visit(next); } } } }
@Override public void scanFile(JavaFileScannerContext context) { setContext(context); scanTree(context.getTree()); }
@Override public void scanFile(JavaFileScannerContext context) { this.context = context; semanticModel = (SemanticModel) context.getSemanticModel(); scanTree(context.getTree()); visitTokens(context.getTree()); }
ScannerRunner(List<JavaFileScanner> executableScanners) { checks = new EnumMap<>(Tree.Kind.class); subscriptionVisitors = executableScanners.stream() .filter(isIssuableSubscriptionVisitor) .map(s -> (SubscriptionVisitor) s) .collect(Collectors.toList()); subscriptionVisitors.forEach(s -> s.nodesToVisit().forEach(k -> checks.computeIfAbsent(k, key -> new ArrayList<>()).add(s)) ); }
private void visit(Tree tree) { Consumer<SubscriptionVisitor> callback; boolean isToken = tree.kind() == Tree.Kind.TOKEN; if (isToken) { callback = s -> { SyntaxToken syntaxToken = (SyntaxToken) tree; s.visitToken(syntaxToken); }; } else { callback = s -> s.visitNode(tree); } List<SubscriptionVisitor> subscribed = checks.getOrDefault(tree.kind(), Collections.emptyList()); subscribed.forEach(callback); if (isToken) { checks.getOrDefault(Tree.Kind.TRIVIA, Collections.emptyList()).forEach(s -> ((SyntaxToken) tree).trivias().forEach(s::visitTrivia)); } else { visitChildren(tree); } if(!isToken) { subscribed.forEach(s -> s.leaveNode(tree)); } } }
@Override public void scanFile(JavaFileScannerContext context) { behaviorCache.setFileContext(this, (SemanticModel) context.getSemanticModel()); super.scanFile(context); }
private void visitChildren(Tree tree) { JavaTree javaTree = (JavaTree) tree; if (!javaTree.isLeaf()) { for (Tree next : javaTree.getChildren()) { if (next != null) { visit(next); } } } }
@Override public void scanFile(JavaFileScannerContext context) { setContext(context); scanTree(context.getTree()); }
ScannerRunner(List<JavaFileScanner> executableScanners) { checks = new EnumMap<>(Tree.Kind.class); subscriptionVisitors = executableScanners.stream() .filter(isIssuableSubscriptionVisitor) .map(s -> (SubscriptionVisitor) s) .collect(Collectors.toList()); subscriptionVisitors.forEach(s -> s.nodesToVisit().forEach(k -> checks.computeIfAbsent(k, key -> new ArrayList<>()).add(s)) ); }
private void visit(Tree tree) { boolean isSubscribed = isSubscribed(tree); boolean shouldVisitSyntaxToken = (visitToken || visitTrivia) && tree.is(Tree.Kind.TOKEN); if (shouldVisitSyntaxToken) { SyntaxToken syntaxToken = (SyntaxToken) tree; if (visitToken) { visitToken(syntaxToken); } if (visitTrivia) { for (SyntaxTrivia syntaxTrivia : syntaxToken.trivias()) { visitTrivia(syntaxTrivia); } } } else if (isSubscribed) { visitNode(tree); } visitChildren(tree); if (!shouldVisitSyntaxToken && isSubscribed) { leaveNode(tree); } }
protected void scanTree(Tree tree) { if(nodesToVisit == null) { List<Tree.Kind> kinds = nodesToVisit(); if(kinds.isEmpty()) { nodesToVisit = EnumSet.noneOf(Tree.Kind.class); } else { nodesToVisit = EnumSet.copyOf(kinds); } } visitToken = isVisitingTokens(); visitTrivia = isVisitingTrivia(); visit(tree); }
@Override public void scanFile(JavaFileScannerContext context) { super.scanFile(context); File currentFile = context.getFile(); FileLinesContext fileLinesContext = sonarComponents.fileLinesContextFor(currentFile); int fileLength = sonarComponents.fileLength(currentFile); for (int line = 1; line <= fileLength; line++) { fileLinesContext.setIntValue(CoreMetrics.NCLOC_DATA_KEY, line, linesOfCode.contains(line) ? 1 : 0); fileLinesContext.setIntValue(CoreMetrics.EXECUTABLE_LINES_DATA_KEY, line, executableLines.contains(line) ? 1 : 0); } fileLinesContext.save(); linesOfCode.clear(); executableLines.clear(); }