use of com.contrastsecurity.sarif.SarifSchema210 in project bsl-language-server by 1c-syntax.
the class SarifReporter method createReport.
private SarifSchema210 createReport(AnalysisInfo analysisInfo) {
var schema = URI.create("https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json");
var run = createRun(analysisInfo);
return new SarifSchema210().with$schema(schema).withVersion(SarifSchema210.Version._2_1_0).withRuns(List.of(run));
}
use of com.contrastsecurity.sarif.SarifSchema210 in project aws-codeguru-cli by aws.
the class ResultsAdapter method createSarifReport.
private static SarifSchema210 createSarifReport(final List<RecommendationSummary> recommendations) throws IOException {
val docUrl = "https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/how-codeguru-reviewer-works.html";
val rulesMap = createSarifRuleDescriptions(recommendations);
val driver = new ToolComponent().withName("CodeGuru Reviewer Scanner").withInformationUri(URI.create(docUrl)).withRules(new HashSet<>(rulesMap.values()));
val results = recommendations.stream().map(ResultsAdapter::convertToSarif).collect(Collectors.toList());
val run = new Run().withTool(new Tool().withDriver(driver)).withResults(results);
return new SarifSchema210().withVersion(SarifSchema210.Version._2_1_0).with$schema(URI.create("http://json.schemastore.org/sarif-2.1.0-rtm.4")).withRuns(Arrays.asList(run));
}
use of com.contrastsecurity.sarif.SarifSchema210 in project bsl-language-server by 1c-syntax.
the class SarifReporterTest method report.
@Test
void report() throws IOException {
// given
configuration.getDiagnosticsOptions().getParameters().put("Typo", Either.forLeft(false));
configuration.getDiagnosticsOptions().getParameters().put("test", Either.forLeft(true));
configuration.getDiagnosticsOptions().getParameters().put("some", Either.forRight(Map.of("test", 1)));
Diagnostic diagnostic = new Diagnostic(Ranges.create(0, 1, 2, 3), "message", DiagnosticSeverity.Error, "test-source", "test");
DocumentContext documentContext = TestUtils.getDocumentContext("");
String sourceDir = ".";
FileInfo fileInfo = new FileInfo(sourceDir, documentContext, Collections.singletonList(diagnostic));
AnalysisInfo analysisInfo = new AnalysisInfo(LocalDateTime.now(), Collections.singletonList(fileInfo), sourceDir);
// when
reporter.report(analysisInfo, Path.of(sourceDir));
// then
ObjectMapper mapper = new ObjectMapper();
var report = mapper.readValue(file, SarifSchema210.class);
assertThat(report).isNotNull();
var run = report.getRuns().get(0);
assertThat(run.getTool().getDriver().getName()).isEqualTo("BSL Language Server");
assertThat(run.getTool().getDriver().getRules()).hasSize(diagnosticInfos.size());
var invocation = run.getInvocations().get(0);
assertThat(invocation.getRuleConfigurationOverrides()).hasSizeGreaterThan(0).anyMatch(configurationOverride -> configurationOverride.getDescriptor().getId().equals("Typo") && !configurationOverride.getConfiguration().getEnabled()).anyMatch(configurationOverride -> configurationOverride.getDescriptor().getId().equals("test") && configurationOverride.getConfiguration().getEnabled()).anyMatch(configurationOverride -> configurationOverride.getDescriptor().getId().equals("some") && configurationOverride.getConfiguration().getParameters().getAdditionalProperties().get("test").equals(1));
assertThat(run.getResults()).hasSize(1).element(0).matches(result -> result.getRuleId().equals("test")).matches(result -> result.getLevel() == Result.Level.ERROR).matches(result -> result.getMessage().getText().equals("message")).matches(result -> result.getAnalysisTarget().getUri().equals(documentContext.getUri().toString())).extracting(Result::getLocations).extracting(locations -> locations.get(0)).extracting(Location::getPhysicalLocation).extracting(PhysicalLocation::getRegion).matches(region -> region.getStartLine().equals(diagnostic.getRange().getStart().getLine() + 1)).matches(region -> region.getStartColumn().equals(diagnostic.getRange().getStart().getCharacter() + 1)).matches(region -> region.getEndLine().equals(diagnostic.getRange().getEnd().getLine() + 1)).matches(region -> region.getEndColumn().equals(diagnostic.getRange().getEnd().getCharacter() + 1));
}
Aggregations