private void writeGlobalSettings(BufferedWriter fileWriter) throws IOException {
fileWriter.append("Global properties:\n");
Map<String, String> props = globalRepositories.globalSettings();
- for (String env : new TreeSet<>(props.keySet())) {
- fileWriter.append(String.format(KEY_VALUE_FORMAT, env, props.get(env))).append('\n');
+ for (String prop : new TreeSet<>(props.keySet())) {
+ dumpPropIfNotSensitive(fileWriter, prop, props.get(prop));
}
}
if (isSystemProp(prop) || isEnvVariable(prop) || !isSqProp(prop)) {
continue;
}
- fileWriter.append(String.format(KEY_VALUE_FORMAT, prop, sensitive(prop) ? "******" : moduleSpecificProps.get(prop))).append('\n');
+ dumpPropIfNotSensitive(fileWriter, prop, moduleSpecificProps.get(prop));
}
} catch (IOException e) {
throw new IllegalStateException("Unable to write analysis log", e);
}
}
+ private static void dumpPropIfNotSensitive(BufferedWriter fileWriter, String prop, String value) throws IOException {
+ fileWriter.append(String.format(KEY_VALUE_FORMAT, prop, sensitive(prop) ? "******" : value)).append('\n');
+ }
+
/**
* Only keep props that are not in parent
*/
}
@Test
- public void shouldNotDumpSensitiveProperties() throws Exception {
+ public void shouldNotDumpSensitiveModuleProperties() throws Exception {
ScannerReportWriter writer = new ScannerReportWriter(temp.newFolder());
publisher.init(writer);
"sonar.projectKey=foo");
}
+ // SONAR-7598
+ @Test
+ public void shouldNotDumpSensitiveGlobalProperties() throws Exception {
+ ScannerReportWriter writer = new ScannerReportWriter(temp.newFolder());
+ when(globalRepositories.globalSettings()).thenReturn(ImmutableMap.of("sonar.login", "my_token", "sonar.password", "azerty", "sonar.cpp.license.secured", "AZERTY"));
+
+ publisher.init(writer);
+
+ assertThat(FileUtils.readFileToString(writer.getFileStructure().analysisLog())).containsSequence(
+ "sonar.cpp.license.secured=******",
+ "sonar.login=******",
+ "sonar.password=******");
+ }
+
// SONAR-7371
@Test
public void dontDumpParentProps() throws Exception {