@Override public void visitCompilationUnit(CompilationUnitTree tree) { scan(tree.packageDeclaration()); scan(tree.imports()); scan(tree.types()); }
public static int compilationUnitComplexity(CompilationUnitTree cut) { // only visit methods and initializers class CompilationUnitVisitor extends BaseTreeVisitor { private int cutComplexity = 0; @Override public void visitMethod(MethodTree tree) { cutComplexity += methodComplexity(tree).complexity; super.visitMethod(tree); } @Override public void visitBlock(BlockTree tree) { if (tree.is(Tree.Kind.INITIALIZER, Tree.Kind.STATIC_INITIALIZER)) { CognitiveComplexityVisitor visitor = new CognitiveComplexityVisitor(); tree.accept(visitor); cutComplexity += visitor.complexity; } super.visitBlock(tree); } } CompilationUnitVisitor compilationUnitVisitor = new CompilationUnitVisitor(); cut.accept(compilationUnitVisitor); return compilationUnitVisitor.cutComplexity; }
@Override public void visitCompilationUnit(CompilationUnitTree tree) { scan(tree.packageDeclaration()); scan(tree.imports()); scan(tree.types()); scan(tree.moduleDeclaration()); }
@Override public void scanFile(JavaFileScannerContext context) { if (context.fileParsed()) { CompilationUnitTree cut = context.getTree(); if (cut.moduleDeclaration() == null && cut.packageDeclaration() == null && cut.types().isEmpty()) { context.addIssueOnFile(this, "This file has 0 lines of code."); } } }
@Override public void visitCompilationUnit(CompilationUnitTree tree) { //do not scan imports and package name identifiers. if (tree.packageDeclaration() != null) { scan(tree.packageDeclaration().annotations()); } scan(tree.types()); }
@Override public void visitCompilationUnit(CompilationUnitTree tree) { scan(tree.packageAnnotations()); scan(tree.packageName()); scan(tree.imports()); scan(tree.types()); }
private static ExpressionTree getPackageName(CompilationUnitTree cut) { return cut.packageDeclaration() != null ? cut.packageDeclaration().packageName() : null; }
@Override public void visitNode(Tree tree) { if (!hasSemantic()) { return; } CompilationUnitTree cut = (CompilationUnitTree) tree; cut.types().stream().filter(NOT_EMPTY_STATEMENT).map(t -> ((ClassTree) t).symbol()).forEach(this::checkSymbol); List<ImportTree> imports = cut.imports().stream().filter(NOT_EMPTY_STATEMENT).map(t -> (ImportTree) t).collect(Collectors.toList()); boolean fileContainsStarImport = imports.stream() .filter(it -> it.qualifiedIdentifier().is(Kind.MEMBER_SELECT)) .map(it -> ((MemberSelectExpressionTree) it.qualifiedIdentifier()).identifier()) .anyMatch(i -> "*".equals(i.name())); if(!fileContainsStarImport) { checkImports(imports); } }
@Override public void visitNode(Tree tree) { int types = ((CompilationUnitTree) tree).types().size(); if (types > 1) { context.addIssue( -1, OneClassInterfacePerFileCheck.this, "There are " + types + " top-level types in this file; move all but one of them to other files.", types - 1); } }
public void ignoreLines(CompilationUnitTree tree) { if (!tree.imports().isEmpty()) { int start = ((InternalSyntaxToken) tree.imports().get(0).importKeyword()).getLine(); int end = ((InternalSyntaxToken) tree.imports().get(tree.imports().size() - 1).semicolonToken()).getLine(); for (int i = start; i <= end; i++) { ignoredLines.add(i); } } }
lineByImportReference.clear(); pendingImports.clear(); currentPackage = concatenate(cut.packageName()); for (ImportTree importTree : cut.imports()) { if (!importTree.isStatic()) { String importName = concatenate((ExpressionTree) importTree.qualifiedIdentifier());
CompilationUnitTree cut = context.getTree(); if (cut.moduleDeclaration() != null) { for (ImportClauseTree importClauseTree : cut.imports()) { ImportTree importTree = null;
@Override public void visitCompilationUnit(CompilationUnitTree tree) { //do not scan imports and package name identifiers. scan(tree.packageAnnotations()); scan(tree.types()); }
@Override public void visitCompilationUnit(CompilationUnitTree tree) { JavaSymbol.PackageJavaSymbol compilationUnitPackage = symbols.defaultPackage; PackageDeclarationTree packageDeclaration = tree.packageDeclaration(); if (packageDeclaration != null) { ExpressionTree packageName = packageDeclaration.packageName(); PackageResolverVisitor packageResolver = new PackageResolverVisitor(); packageName.accept(packageResolver); compilationUnitPackage = (JavaSymbol.PackageJavaSymbol) resolve.findIdentInPackage(compilationUnitPackage, packageResolver.packageName, JavaSymbol.PCK); semanticModel.associateSymbol(packageName, compilationUnitPackage); } compilationUnitPackage.members = new Scope(compilationUnitPackage); env = new Resolve.Env(); env.packge = compilationUnitPackage; env.scope = compilationUnitPackage.members; env.namedImports = new Scope(compilationUnitPackage); env.starImports = resolve.createStarImportScope(compilationUnitPackage); env.staticStarImports = resolve.createStaticStarImportScope(compilationUnitPackage); semanticModel.associateEnv(tree, env); super.visitCompilationUnit(tree); restoreEnvironment(tree); resolveImports(tree.imports()); completeSymbols(); }
@Override public void scanFile(JavaFileScannerContext context) { CompilationUnitTree tree = context.getTree(); if (tree.packageName() == null && tree.types().isEmpty()) { context.addIssue(context.getTree(), this, "This Java file is empty."); } }
@Override public void scanFile(JavaFileScannerContext context) { if (context.fileParsed()) { CompilationUnitTree cut = context.getTree(); if (cut.moduleDeclaration() == null && cut.packageDeclaration() == null) { context.addIssueOnFile(this, "Move this file to a named package."); } } }
@Override public void visitCompilationUnit(CompilationUnitTree tree) { if (tree.packageName() != null) { String name = concatenate(tree.packageName()); if (!pattern.matcher(name).matches()) { context.addIssue(tree, this, "Rename this package name to match the regular expression '" + format + "'."); } } }
@Override public void scanFile(JavaFileScannerContext context) { if (context.fileParsed()) { CompilationUnitTree cut = context.getTree(); if (cut.moduleDeclaration() == null && cut.packageDeclaration() == null && cut.types().isEmpty()) { context.addIssueOnFile(this, "This file has 0 lines of code."); } } }
private static ExpressionTree getPackageName(CompilationUnitTree cut) { return cut.packageDeclaration() != null ? cut.packageDeclaration().packageName() : null; }
@Override public void visitNode(Tree tree) { if (!hasSemantic()) { return; } CompilationUnitTree cut = (CompilationUnitTree) tree; cut.types().stream().filter(NOT_EMPTY_STATEMENT).map(t -> ((ClassTree) t).symbol()).forEach(this::checkSymbol); List<ImportTree> imports = cut.imports().stream().filter(NOT_EMPTY_STATEMENT).map(t -> (ImportTree) t).collect(Collectors.toList()); boolean fileContainsStarImport = imports.stream() .filter(it -> it.qualifiedIdentifier().is(Kind.MEMBER_SELECT)) .map(it -> ((MemberSelectExpressionTree) it.qualifiedIdentifier()).identifier()) .anyMatch(i -> "*".equals(i.name())); if(!fileContainsStarImport) { checkImports(imports); } }