public ChecksBridge(SonarComponents sonarComponents, RulesProfile rulesProfile) { this.checks = sonarComponents.checks(); this.resourcePerspectives = sonarComponents.getResourcePerspectives(); this.rulesProfile = rulesProfile; }
private void createSonarSymbolTable(CompilationUnitTree tree) { if (sonarComponents != null && !sonarComponents.isSonarLintContext()) { SonarSymbolTableVisitor symVisitor = new SonarSymbolTableVisitor(sonarComponents.symbolizableFor(currentFile), semanticModel); symVisitor.visitCompilationUnit(tree); } }
@Override public void addIssue(File file, JavaCheck check, int line, String message) { if (sonarComponents != null) { sonarComponents.addIssue(file, check, line, message, null); } }
@Override public void execute(SensorContext context) { javaResourceLocator.setSensorContext(context); sonarComponents.setSensorContext(context); List<Class<? extends JavaCheck>> checks = ImmutableList.<Class<? extends JavaCheck>>builder() .addAll(CheckList.getJavaChecks()) .addAll(CheckList.getDebugChecks()) .build(); sonarComponents.registerCheckClasses(CheckList.REPOSITORY_KEY, checks); sonarComponents.registerTestCheckClasses(CheckList.REPOSITORY_KEY, CheckList.getJavaTestChecks()); Measurer measurer = new Measurer(fs, context, noSonarFilter); JavaSquid squid = new JavaSquid(getJavaVersion(), isXFileEnabled(), sonarComponents, measurer, javaResourceLocator, postAnalysisIssueFilter, sonarComponents.checkClasses()); squid.scan(getSourceFiles(), getTestFiles()); sonarComponents.saveAnalysisErrors(); }
/** * ProjectDefinition class is not available in SonarLint context, so this constructor will never be called when using SonarLint */ public SonarComponents(FileLinesContextFactory fileLinesContextFactory, FileSystem fs, JavaClasspath javaClasspath, JavaTestClasspath javaTestClasspath, CheckFactory checkFactory, @Nullable CheckRegistrar[] checkRegistrars, @Nullable ProjectDefinition projectDefinition) { this.fileLinesContextFactory = fileLinesContextFactory; this.fs = fs; this.javaClasspath = javaClasspath; this.javaTestClasspath = javaTestClasspath; this.checkFactory = checkFactory; this.projectDefinition = projectDefinition; this.checks = new ArrayList<>(); this.testChecks = new ArrayList<>(); this.allChecks = new ArrayList<>(); this.analysisErrors = new ArrayList<>(); if (checkRegistrars != null) { CheckRegistrar.RegistrarContext registrarContext = new CheckRegistrar.RegistrarContext(); for (CheckRegistrar checkClassesRegister : checkRegistrars) { checkClassesRegister.register(registrarContext); Iterable<Class<? extends JavaCheck>> checkClasses = registrarContext.checkClasses(); Iterable<Class<? extends JavaCheck>> testCheckClasses = registrarContext.testCheckClasses(); registerCheckClasses(registrarContext.repositoryKey(), Lists.newArrayList(checkClasses != null ? checkClasses : new ArrayList<>())); registerTestCheckClasses(registrarContext.repositoryKey(), Lists.newArrayList(testCheckClasses != null ? testCheckClasses : new ArrayList<>())); } } }
List<File> testClasspath = Lists.newArrayList(); if (sonarComponents != null) { if(!sonarComponents.isSonarLintContext()) { codeVisitors = Iterables.concat(codeVisitors, Arrays.asList(new FileLinesVisitor(sonarComponents), new SyntaxHighlighterVisitor(sonarComponents))); testCodeVisitors.add(new SyntaxHighlighterVisitor(sonarComponents)); classpath = sonarComponents.getJavaClasspath(); testClasspath = sonarComponents.getJavaTestClasspath(); testCodeVisitors.addAll(sonarComponents.testCheckClasses());
Collection<CodeVisitor> testCheckClasses = Lists.<CodeVisitor>newArrayList(javaResourceLocator); if(sonarComponents != null) { classpath = sonarComponents.getJavaClasspath(); testClasspath = sonarComponents.getJavaTestClasspath(); testCheckClasses.addAll(sonarComponents.testCheckClasses());
@Override public void analyse(Project project, SensorContext context) { javaResourceLocator.setSensorContext(context); sonarComponents.registerCheckClasses(CheckList.REPOSITORY_KEY, CheckList.getJavaChecks()); sonarComponents.registerTestCheckClasses(CheckList.REPOSITORY_KEY, CheckList.getJavaTestChecks()); JavaConfiguration configuration = createConfiguration(); Measurer measurer = new Measurer(project, context, configuration.separatesAccessorsFromMethods()); JavaSquid squid = new JavaSquid(configuration, sonarComponents, measurer, javaResourceLocator, sonarComponents.checkClasses()); squid.scan(getSourceFiles(), getTestFiles(), getBytecodeFiles()); new Bridges(squid, settings).save(context, project, sonarComponents, javaResourceLocator.getResourceMapping(), noSonarFilter, profile); }
@Override public void visitFile(AstNode astNode) { if (astNode == null) { // parse error return; } highlighting = sonarComponents.highlightableFor(getContext().getFile()).newHighlighting(); lineStart = Lists.newArrayList(); final String content; try { content = Files.toString(getContext().getFile(), charset); } catch (IOException e) { throw Throwables.propagate(e); } lineStart.add(0); for (int i = 0; i < content.length(); i++) { if (content.charAt(i) == '\n' || (content.charAt(i) == '\r' && i + 1 < content.length() && content.charAt(i + 1) != '\n')) { lineStart.add(i + 1); } } }
@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(); }
public SonarComponents(FileLinesContextFactory fileLinesContextFactory, ResourcePerspectives resourcePerspectives, Project project, JavaClasspath javaClasspath, JavaTestClasspath javaTestClasspath, CheckFactory checkFactory, @Nullable CheckRegistrar[] checkRegistrars) { this.fileLinesContextFactory = fileLinesContextFactory; this.resourcePerspectives = resourcePerspectives; this.project = project; this.javaClasspath = javaClasspath; this.javaTestClasspath = javaTestClasspath; this.checkFactory = checkFactory; checks = Lists.newArrayList(); if(checkRegistrars != null) { CheckRegistrar.RegistrarContext registrarContext = new CheckRegistrar.RegistrarContext(); for (CheckRegistrar checkClassesRegister : checkRegistrars) { checkClassesRegister.register(registrarContext); registerCheckClasses(registrarContext.repositoryKey(), Lists.newArrayList(registrarContext.checkClasses())); } } }
public RuleKey getRuleKey(JavaCheck check) { for (Checks<JavaCheck> sonarChecks : checks()) { RuleKey ruleKey = sonarChecks.ruleKey(check); if (ruleKey != null) { return ruleKey; } } return null; }
private void createSonarSymbolTable(CompilationUnitTree tree) { if (sonarComponents != null) { SonarSymbolTableVisitor symVisitor = new SonarSymbolTableVisitor(sonarComponents.symbolizableFor(currentFile), semanticModel); symVisitor.visitCompilationUnit(tree); } }
@Override public void scanFile(JavaFileScannerContext context) { super.scanFile(context); FileLinesContext fileLinesContext = sonarComponents.fileLinesContextFor(context.getFile()); // TODO minimize access to files, another one in LinesVisitor int fileLength; try { fileLength = Files.readLines(context.getFile(), charset).size(); } catch (IOException e) { throw Throwables.propagate(e); } for (int line = 1; line <= fileLength; line++) { fileLinesContext.setIntValue(CoreMetrics.NCLOC_DATA_KEY, line, linesOfCode.contains(line) ? 1 : 0); fileLinesContext.setIntValue(CoreMetrics.COMMENT_LINES_DATA_KEY, line, linesOfComments.contains(line) ? 1 : 0); } fileLinesContext.save(); linesOfCode.clear(); linesOfComments.clear(); }
/** * ProjectDefinition class is not available in SonarLint context, so this constructor will never be called when using SonarLint */ public SonarComponents(FileLinesContextFactory fileLinesContextFactory, FileSystem fs, JavaClasspath javaClasspath, JavaTestClasspath javaTestClasspath, CheckFactory checkFactory, @Nullable CheckRegistrar[] checkRegistrars, @Nullable ProjectDefinition projectDefinition) { this.fileLinesContextFactory = fileLinesContextFactory; this.fs = fs; this.javaClasspath = javaClasspath; this.javaTestClasspath = javaTestClasspath; this.checkFactory = checkFactory; this.projectDefinition = projectDefinition; this.checks = new ArrayList<>(); this.testChecks = new ArrayList<>(); this.allChecks = new ArrayList<>(); this.analysisErrors = new ArrayList<>(); if (checkRegistrars != null) { CheckRegistrar.RegistrarContext registrarContext = new CheckRegistrar.RegistrarContext(); for (CheckRegistrar checkClassesRegister : checkRegistrars) { checkClassesRegister.register(registrarContext); Iterable<Class<? extends JavaCheck>> checkClasses = registrarContext.checkClasses(); Iterable<Class<? extends JavaCheck>> testCheckClasses = registrarContext.testCheckClasses(); registerCheckClasses(registrarContext.repositoryKey(), Lists.newArrayList(checkClasses != null ? checkClasses : new ArrayList<>())); registerTestCheckClasses(registrarContext.repositoryKey(), Lists.newArrayList(testCheckClasses != null ? testCheckClasses : new ArrayList<>())); } } }
List<File> testClasspath = Lists.newArrayList(); if (sonarComponents != null) { if(!sonarComponents.isSonarLintContext()) { codeVisitors = Iterables.concat(codeVisitors, Arrays.asList(new FileLinesVisitor(sonarComponents), new SyntaxHighlighterVisitor(sonarComponents))); testCodeVisitors.add(new SyntaxHighlighterVisitor(sonarComponents)); classpath = sonarComponents.getJavaClasspath(); testClasspath = sonarComponents.getJavaTestClasspath(); testCodeVisitors.addAll(sonarComponents.testCheckClasses());
classpath = sonarComponents.getJavaClasspath(); testClasspath = sonarComponents.getJavaTestClasspath(); testCodeVisitors.addAll(sonarComponents.testCheckClasses());
@Override public void scanFile(JavaFileScannerContext context) { File file = context.getFile(); highlighting = sonarComponents.highlightableFor(file); super.scanFile(context); highlighting.save(); }
@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(); }
public RuleKey getRuleKey(JavaCheck check) { for (Checks<JavaCheck> sonarChecks : checks()) { RuleKey ruleKey = sonarChecks.ruleKey(check); if (ruleKey != null) { return ruleKey; } } return null; }