private void ensureInitialized() { if (this.delegate == null) { this.delegate = new org.sonar.scanner.protocol.output.ScannerReportReader(batchReportDirectoryHolder.getDirectory()); } }
@Override public void analysisCompleted(ProjectScanContainer container) { LOG.info("Store analysis results in memory for later assertions in medium test"); for (TrackedIssue issue : container.getComponentByType(IssueCache.class).all()) { issues.add(issue); } ReportPublisher reportPublisher = container.getComponentByType(ReportPublisher.class); reader = new ScannerReportReader(reportPublisher.getReportDir().toFile()); project = container.getComponentByType(InputProject.class); storeFs(container); }
@Before public void setUp() throws Exception { dir = temp.newFolder(); underTest = new ScannerReportReader(dir); }
@Before public void setUp() throws IOException { branchConfiguration = mock(BranchConfiguration.class); outputDir = temp.newFolder(); writer = new ScannerReportWriter(outputDir); reader = new ScannerReportReader(outputDir); }
@Test public void write_project_basedir() throws Exception { String path = "some/dir"; Path relativePathFromScmRoot = Paths.get(path); when(scmProvider.relativePathFromScmRoot(any(Path.class))).thenReturn(relativePathFromScmRoot); File outputDir = temp.newFolder(); underTest.publish(new ScannerReportWriter(outputDir)); ScannerReportReader reader = new ScannerReportReader(outputDir); ScannerReport.Metadata metadata = reader.readMetadata(); assertThat(metadata.getRelativePathFromScmRoot()).isEqualTo(path); }
@Test public void write_long_lived_branch_info() throws Exception { String branchName = "long-lived"; when(branches.branchName()).thenReturn(branchName); when(branches.branchType()).thenReturn(BranchType.LONG); File outputDir = temp.newFolder(); underTest.publish(new ScannerReportWriter(outputDir)); ScannerReportReader reader = new ScannerReportReader(outputDir); ScannerReport.Metadata metadata = reader.readMetadata(); assertThat(metadata.getBranchName()).isEqualTo(branchName); assertThat(metadata.getBranchType()).isEqualTo(ScannerReport.Metadata.BranchType.LONG); }
@Test public void write_revision_id() throws Exception { String revisionId = "some-sha1"; when(scmProvider.revisionId(any(Path.class))).thenReturn(revisionId); File outputDir = temp.newFolder(); underTest.publish(new ScannerReportWriter(outputDir)); ScannerReportReader reader = new ScannerReportReader(outputDir); ScannerReport.Metadata metadata = reader.readMetadata(); assertThat(metadata.getScmRevisionId()).isEqualTo(revisionId); }
@Test public void write_project_organization() throws Exception { when(properties.organizationKey()).thenReturn(Optional.of("SonarSource")); File outputDir = temp.newFolder(); ScannerReportWriter writer = new ScannerReportWriter(outputDir); underTest.publish(writer); ScannerReportReader reader = new ScannerReportReader(outputDir); ScannerReport.Metadata metadata = reader.readMetadata(); assertThat(metadata.getOrganizationKey()).isEqualTo("SonarSource"); }
@Test public void write_short_lived_branch_info() throws Exception { String branchName = "feature"; String branchTarget = "short-lived"; when(branches.branchName()).thenReturn(branchName); when(branches.longLivingSonarReferenceBranch()).thenReturn(branchTarget); File outputDir = temp.newFolder(); underTest.publish(new ScannerReportWriter(outputDir)); ScannerReportReader reader = new ScannerReportReader(outputDir); ScannerReport.Metadata metadata = reader.readMetadata(); assertThat(metadata.getBranchName()).isEqualTo(branchName); assertThat(metadata.getBranchType()).isEqualTo(ScannerReport.Metadata.BranchType.SHORT); assertThat(metadata.getMergeBranchName()).isEqualTo(branchTarget); }
private void loadReport(File file) { reader = new ScannerReportReader(file); metadata = reader.readMetadata(); updateTitle(); loadComponents(); updateActiveRules(); updateAdHocRules(); updateQualityProfiles(); updatePlugins(); }
@Test public void do_not_write_warnings_report_when_empty() throws IOException { File outputDir = temp.newFolder(); ScannerReportWriter writer = new ScannerReportWriter(outputDir); underTest.publish(writer); assertThat(writer.getFileStructure().analysisWarnings()).doesNotExist(); ScannerReportReader reader = new ScannerReportReader(outputDir); List<ScannerReport.AnalysisWarning> warnings = Lists.newArrayList(reader.readAnalysisWarnings()); assertThat(warnings).isEmpty(); } }
private void assertPublished(DefaultInputFile file, Set<Integer> lines) { assertThat(new File(temp.getRoot(), "changed-lines-" + file.scannerId() + ".pb")).exists(); ScannerReportReader reader = new ScannerReportReader(temp.getRoot()); assertThat(reader.readComponentChangedLines(file.scannerId()).getLineList()).containsExactlyElementsOf(lines); }
@Test public void read_source_lines() throws Exception { ScannerReportWriter writer = new ScannerReportWriter(dir); File file = writer.getFileStructure().fileFor(FileStructure.Domain.SOURCE, 1); FileUtils.writeLines(file, Lists.newArrayList("line1", "line2")); File sourceFile = new ScannerReportReader(dir).readFileSource(1); assertThat(sourceFile).isEqualTo(file); }
@Test public void write_project_branch() throws Exception { when(cpdSettings.isCrossProjectDuplicationEnabled()).thenReturn(false); ProjectDefinition projectDef = ProjectDefinition.create() .setKey("foo") .setProperty(CoreProperties.PROJECT_BRANCH_PROPERTY, "myBranch"); createPublisher(projectDef); File outputDir = temp.newFolder(); ScannerReportWriter writer = new ScannerReportWriter(outputDir); underTest.publish(writer); ScannerReportReader reader = new ScannerReportReader(outputDir); ScannerReport.Metadata metadata = reader.readMetadata(); assertThat(metadata.getAnalysisDate()).isEqualTo(1234567L); assertThat(metadata.getProjectKey()).isEqualTo("root"); assertThat(metadata.getDeprecatedBranch()).isEqualTo("myBranch"); assertThat(metadata.getCrossProjectDuplicationActivated()).isFalse(); }
@Test public void should_not_crash_when_scm_provider_does_not_support_relativePathFromScmRoot() throws IOException { String revisionId = "some-sha1"; ScmProvider fakeScmProvider = new ScmProvider() { @Override public String key() { return "foo"; } @Override public String revisionId(Path path) { return revisionId; } }; when(scmConfiguration.provider()).thenReturn(fakeScmProvider); File outputDir = temp.newFolder(); underTest.publish(new ScannerReportWriter(outputDir)); ScannerReportReader reader = new ScannerReportReader(outputDir); ScannerReport.Metadata metadata = reader.readMetadata(); assertThat(metadata.getScmRevisionId()).isEqualTo(revisionId); }
private ScannerReport.Changesets getChangesets(File baseDir, String path) { File reportDir = new File(baseDir, ".sonar/scanner-report"); ScannerReportReader reader = new ScannerReportReader(reportDir); Component project = reader.readComponent(reader.readMetadata().getRootComponentRef()); for (Integer fileRef : project.getChildRefList()) { Component file = reader.readComponent(fileRef); if (file.getProjectRelativePath().equals(path)) { return reader.readChangesets(file.getRef()); } } return null; }
@Before public void setUp() throws IOException { File outputDir = temp.newFolder(); baseDir = temp.newFolder(); when(publisher.getWriter()).thenReturn(new ScannerReportWriter(outputDir)); DefaultInputProject project = TestInputFileBuilder.newDefaultInputProject("foo", baseDir); componentStore = new InputComponentStore(mock(BranchConfiguration.class)); executor = new CpdExecutor(settings, index, publisher, componentStore, executorService); reader = new ScannerReportReader(outputDir); batchComponent1 = createComponent("src/Foo.php", 5); batchComponent2 = createComponent("src/Foo2.php", 5); batchComponent3 = createComponent("src/Foo3.php", 5); }
@Test public void publishMeasures() throws Exception { DefaultMeasure<Integer> measure = new DefaultMeasure<Integer>().forMetric(CoreMetrics.LINES_TO_COVER) .withValue(2); // String value DefaultMeasure<String> stringMeasure = new DefaultMeasure<String>().forMetric(CoreMetrics.NCLOC_LANGUAGE_DISTRIBUTION) .withValue("foo bar"); when(measureCache.byComponentKey(inputFile.key())).thenReturn(asList(measure, stringMeasure)); publisher.publish(writer); ScannerReportReader reader = new ScannerReportReader(outputDir); assertThat(reader.readComponentMeasures(project.scannerId())).hasSize(0); try (CloseableIterator<ScannerReport.Measure> componentMeasures = reader.readComponentMeasures(inputFile.scannerId())) { assertThat(componentMeasures).hasSize(2); } }
@Test public void publish_warnings() throws IOException { File outputDir = temp.newFolder(); ScannerReportWriter writer = new ScannerReportWriter(outputDir); String warning1 = "warning 1"; String warning2 = "warning 2"; analysisWarnings.addUnique(warning1); analysisWarnings.addUnique(warning1); analysisWarnings.addUnique(warning2); underTest.publish(writer); ScannerReportReader reader = new ScannerReportReader(outputDir); List<ScannerReport.AnalysisWarning> warnings = Lists.newArrayList(reader.readAnalysisWarnings()); assertThat(warnings) .extracting(ScannerReport.AnalysisWarning::getText) .containsExactly(warning1, warning2); }
@Test public void read_duplication_blocks() { ScannerReportWriter writer = new ScannerReportWriter(dir); writer.writeMetadata(ScannerReport.Metadata.newBuilder() .setRootComponentRef(1).build()); writer.writeComponent(ScannerReport.Component.newBuilder() .setRef(1).build()); ScannerReport.CpdTextBlock duplicationBlock = ScannerReport.CpdTextBlock.newBuilder() .setHash("abcdefghijklmnop") .setStartLine(1) .setEndLine(2) .setStartTokenIndex(10) .setEndTokenIndex(15) .build(); writer.writeCpdTextBlocks(1, singletonList(duplicationBlock)); ScannerReportReader sut = new ScannerReportReader(dir); assertThat(sut.readCpdTextBlocks(1)).hasSize(1); }