@Override public CloseableIterator<String> readScannerLogs() { ensureInitialized(); File file = delegate.getFileStructure().analysisLog(); if (!file.exists()) { return CloseableIterator.emptyCloseableIterator(); } try { InputStreamReader reader = new InputStreamReader(FileUtils.openInputStream(file), UTF_8); return new LineReaderIterator(reader); } catch (IOException e) { throw new IllegalStateException("Fail to open file " + file, e); } }
public ScannerReportReader(File dir) { this.fileStructure = new FileStructure(dir); }
public File getSourceFile(int componentRef) { return fileStructure.fileFor(FileStructure.Domain.SOURCE, componentRef); }
public File writeActiveRules(Iterable<ScannerReport.ActiveRule> activeRules) { Protobuf.writeStream(activeRules, fileStructure.activeRules(), false); return fileStructure.metadataFile(); }
@Test public void locate_files() throws Exception { File dir = temp.newFolder(); FileUtils.write(new File(dir, "metadata.pb"), "metadata content"); FileUtils.write(new File(dir, "issues-3.pb"), "external issues of component 3"); FileUtils.write(new File(dir, "external-issues-3.pb"), "issues of component 3"); FileUtils.write(new File(dir, "component-42.pb"), "details of component 42"); FileStructure structure = new FileStructure(dir); assertThat(structure.metadataFile()).exists().isFile(); assertThat(structure.fileFor(FileStructure.Domain.COMPONENT, 42)).exists().isFile(); assertThat(structure.fileFor(FileStructure.Domain.ISSUES, 3)).exists().isFile(); assertThat(structure.fileFor(FileStructure.Domain.ISSUES, 42)).doesNotExist(); assertThat(structure.fileFor(FileStructure.Domain.EXTERNAL_ISSUES, 3)).exists().isFile(); assertThat(structure.fileFor(FileStructure.Domain.EXTERNAL_ISSUES, 42)).doesNotExist(); }
@Before public void setUp() throws Exception { File dir = temp.newFolder(); ScannerReportWriter writer = new ScannerReportWriter(dir); writer.writeComponentCoverage(1, newArrayList( ScannerReport.LineCoverage.newBuilder() .setLine(1) .build())); file = new FileStructure(dir).fileFor(FileStructure.Domain.COVERAGES, 1); }
@Test public void contextProperties_file() throws Exception { File dir = temp.newFolder(); File file = new File(dir, "context-props.pb"); FileUtils.write(file, "content"); FileStructure structure = new FileStructure(dir); assertThat(structure.contextProperties()).exists().isFile().isEqualTo(file); } }
public void appendAdHocRule(ScannerReport.AdHocRule adHocRule) { File file = fileStructure.adHocRules(); try (OutputStream out = new BufferedOutputStream(new FileOutputStream(file, true))) { adHocRule.writeDelimitedTo(out); } catch (Exception e) { throw ContextException.of("Unable to write ad hoc rule", e).addContext("file", file); } }
/** * Metadata is mandatory */ public File writeMetadata(ScannerReport.Metadata metadata) { Protobuf.write(metadata, fileStructure.metadataFile()); return fileStructure.metadataFile(); }
public File writeAnalysisWarnings(Iterable<ScannerReport.AnalysisWarning> analysisWarnings) { File file = fileStructure.analysisWarnings(); Protobuf.writeStream(analysisWarnings, file, false); return file; }
public File writeContextProperties(Iterable<ScannerReport.ContextProperty> properties) { File file = fileStructure.contextProperties(); Protobuf.writeStream(properties, file, false); return file; }
public CloseableIterator<ScannerReport.ActiveRule> readActiveRules() { File file = fileStructure.activeRules(); if (!fileExists(file)) { return emptyCloseableIterator(); } return Protobuf.readStream(file, ScannerReport.ActiveRule.parser()); }
public File writeActiveRules(Iterable<ScannerReport.ActiveRule> activeRules) { Protobuf.writeStream(activeRules, fileStructure.activeRules(), false); return fileStructure.metadataFile(); }
public CloseableIterator<ScannerReport.AdHocRule> readAdHocRules() { File file = fileStructure.adHocRules(); if (!fileExists(file)) { return emptyCloseableIterator(); } return Protobuf.readStream(file, ScannerReport.AdHocRule.parser()); }
public ScannerReport.Metadata readMetadata() { File file = fileStructure.metadataFile(); if (!fileExists(file)) { throw new IllegalStateException("Metadata file is missing in analysis report: " + file); } return Protobuf.read(file, ScannerReport.Metadata.parser()); }
public CloseableIterator<ScannerReport.AnalysisWarning> readAnalysisWarnings() { File file = fileStructure.analysisWarnings(); if (!fileExists(file)) { return emptyCloseableIterator(); } return Protobuf.readStream(file, ScannerReport.AnalysisWarning.parser()); }
public CloseableIterator<ScannerReport.ContextProperty> readContextProperties() { File file = fileStructure.contextProperties(); if (!fileExists(file)) { return emptyCloseableIterator(); } return Protobuf.readStream(file, ScannerReport.ContextProperty.parser()); }
public CloseableIterator<ScannerReport.ActiveRule> readActiveRules() { File file = fileStructure.activeRules(); if (!fileExists(file)) { return emptyCloseableIterator(); } return Protobuf.readStream(file, ScannerReport.ActiveRule.parser()); }
public boolean hasCoverage(int componentRef) { File file = fileStructure.fileFor(FileStructure.Domain.COVERAGES, componentRef); return file.exists(); }
public void init(ScannerReportWriter writer) { if (mode.isIssues()) { return; } File analysisLog = writer.getFileStructure().analysisLog(); try (BufferedWriter fileWriter = Files.newBufferedWriter(analysisLog.toPath(), StandardCharsets.UTF_8)) { if (LOG.isDebugEnabled()) { writeEnvVariables(fileWriter); writeSystemProps(fileWriter); } writePlugins(fileWriter); writeGlobalSettings(fileWriter); writeProjectSettings(fileWriter); writeModulesSettings(fileWriter); } catch (IOException e) { throw new IllegalStateException("Unable to write analysis log", e); } }