]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-18880 Ignore empty Sarif runs
authorAurelien Poscia <aurelien.poscia@sonarsource.com>
Fri, 31 Mar 2023 07:18:41 +0000 (09:18 +0200)
committersonartech <sonartech@sonarsource.com>
Fri, 31 Mar 2023 20:03:27 +0000 (20:03 +0000)
sonar-scanner-engine/src/main/java/org/sonar/scanner/externalissue/sarif/RunMapper.java
sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/sarif/RunMapperTest.java

index 80b23ec35734f264df28a7b29b52385adcb77007..ded110704769e4a5cc948c0ed8b4c95344c117fb 100644 (file)
@@ -32,6 +32,7 @@ import org.sonar.core.sarif.Result;
 import org.sonar.core.sarif.Run;
 import org.sonar.core.sarif.Tool;
 
+import static java.util.Collections.emptyList;
 import static java.util.stream.Collectors.toList;
 import static org.sonar.api.utils.Preconditions.checkArgument;
 
@@ -46,6 +47,9 @@ public class RunMapper {
   }
 
   List<NewExternalIssue> mapRun(Run run) {
+    if (run.getResults().isEmpty()) {
+      return emptyList();
+    }
     String driverName = getToolDriverName(run);
     Map<String, String> ruleSeveritiesByRuleId = RulesSeverityDetector.detectRulesSeverities(run, driverName);
 
index b63b53d4b93cc93ec70d3f4ce48bd0a874821d87..eb10e4d299584aca6f359d3135fddf651803ad43 100644 (file)
@@ -36,6 +36,7 @@ import org.sonar.api.utils.log.LoggerLevel;
 import org.sonar.core.sarif.Result;
 import org.sonar.core.sarif.Run;
 
+import static java.util.Collections.emptySet;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
 import static org.mockito.Mockito.mock;
@@ -74,11 +75,20 @@ public class RunMapperTest {
 
       List<NewExternalIssue> newExternalIssues = runMapper.mapRun(run);
 
-      assertThat(newExternalIssues)
-        .containsOnly(externalIssue1, externalIssue2);
+      assertThat(newExternalIssues).containsOnly(externalIssue1, externalIssue2);
+      assertThat(logTester.logs()).isEmpty();
     }
   }
 
+  @Test
+  public void mapRun_ifRunIsEmpty_returnsEmptyList() {
+    when(run.getResults()).thenReturn(emptySet());
+
+    List<NewExternalIssue> newExternalIssues = runMapper.mapRun(run);
+
+    assertThat(newExternalIssues).isEmpty();
+  }
+
   @Test
   public void mapRun_ifExceptionThrownByResultMapper_logsThemAndContinueProcessing() {
     when(run.getTool().getDriver().getName()).thenReturn(TEST_DRIVER);