Skip to content

Commit 8ff68ee

Browse files
committed
SCANJLIB-223 Never send null or missing values to the scanner engine
1 parent ede15d9 commit 8ff68ee

2 files changed

Lines changed: 23 additions & 2 deletions

File tree

lib/src/main/java/org/sonarsource/scanner/lib/internal/ScannerEngineLauncher.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import java.util.Arrays;
2828
import java.util.List;
2929
import java.util.Map;
30+
import java.util.Optional;
3031
import java.util.stream.Collectors;
3132
import org.slf4j.Logger;
3233
import org.slf4j.LoggerFactory;
@@ -118,10 +119,12 @@ private static List<String> split(String value) {
118119

119120
private static String buildJsonProperties(Map<String, String> properties) {
120121
JsonArray propertiesArray = new JsonArray();
121-
properties.entrySet().stream().sorted(Map.Entry.comparingByKey()).forEach(prop -> {
122+
properties.entrySet().stream()
123+
.filter(prop -> prop.getKey() != null)
124+
.sorted(Map.Entry.comparingByKey()).forEach(prop -> {
122125
JsonObject property = new JsonObject();
123126
property.addProperty("key", prop.getKey());
124-
property.addProperty("value", prop.getValue());
127+
property.addProperty("value", Optional.ofNullable(prop.getValue()).orElse(""));
125128
propertiesArray.add(property);
126129
});
127130
JsonObject jsonObject = new JsonObject();

lib/src/test/java/org/sonarsource/scanner/lib/internal/ScannerEngineLauncherTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
package org.sonarsource.scanner.lib.internal;
2121

2222
import java.nio.file.Path;
23+
import java.util.HashMap;
2324
import java.util.List;
2425
import java.util.Map;
2526
import org.junit.jupiter.api.Test;
@@ -63,6 +64,23 @@ void execute() {
6364
any());
6465
}
6566

67+
@Test
68+
void replace_null_values_by_empty_in_json_and_ignore_null_key() {
69+
var scannerEngine = temp.resolve("scanner-engine.jar");
70+
71+
ScannerEngineLauncher launcher = new ScannerEngineLauncher(javaRunner, new CachedFile(scannerEngine, true));
72+
73+
Map<String, String> properties = new HashMap<>();
74+
properties.put("sonar.myProp", null);
75+
properties.put(null, "someValue");
76+
launcher.execute(properties);
77+
78+
verify(javaRunner).execute(
79+
eq(List.of("-jar", scannerEngine.toAbsolutePath().toString())),
80+
eq("{\"scannerProperties\":[{\"key\":\"sonar.myProp\",\"value\":\"\"}]}"),
81+
any());
82+
}
83+
6684
@Test
6785
void tryParse_shouldParseLogMessages() {
6886
ScannerEngineLauncher.tryParse("{\n" +

0 commit comments

Comments
 (0)