]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-6835 Do not display system properties multiple times
authorJulien HENRY <julien.henry@sonarsource.com>
Fri, 25 Sep 2015 11:51:00 +0000 (13:51 +0200)
committerJulien HENRY <julien.henry@sonarsource.com>
Fri, 25 Sep 2015 11:51:57 +0000 (13:51 +0200)
sonar-batch/src/main/java/org/sonar/batch/report/AnalysisContextReportPublisher.java
sonar-batch/src/test/java/org/sonar/batch/report/AnalysisContextReportPublisherTest.java

index c4e396fd381e4bf17167fb1e8162bee01d6d6bc4..e7ba57a7c0fab9eaa52cd155a8133f721dbcef9f 100644 (file)
@@ -37,6 +37,7 @@ import org.sonar.core.platform.PluginInfo;
 @BatchSide
 public class AnalysisContextReportPublisher {
 
+  private static final String SONAR_PROP_PREFIX = "sonar.";
   private final BatchPluginRepository pluginRepo;
   private final AnalysisMode mode;
 
@@ -54,23 +55,38 @@ public class AnalysisContextReportPublisher {
     this.writer = writer;
     File analysisLog = writer.getFileStructure().analysisLog();
     try (BufferedWriter fileWriter = Files.newBufferedWriter(analysisLog.toPath(), StandardCharsets.UTF_8)) {
-      fileWriter.append("Environement variables:\n");
-      for (Map.Entry<String, String> env : System.getenv().entrySet()) {
-        fileWriter.append(String.format("  - %s=%s", env.getKey(), env.getValue())).append('\n');
-      }
-      fileWriter.write("System properties:\n");
-      for (Map.Entry<Object, Object> env : System.getProperties().entrySet()) {
-        fileWriter.append(String.format("  - %s=%s", env.getKey(), env.getValue())).append('\n');
-      }
-      fileWriter.write("SonarQube plugins:\n");
-      for (PluginInfo p : pluginRepo.getPluginInfos()) {
-        fileWriter.append(String.format("  - %s %s (%s)", p.getName(), p.getVersion(), p.getKey())).append('\n');
-      }
+      writeEnvVariables(fileWriter);
+      writeSystemProps(fileWriter);
+      writePlugins(fileWriter);
     } catch (IOException e) {
       throw new IllegalStateException("Unable to write analysis log", e);
     }
   }
 
+  private void writePlugins(BufferedWriter fileWriter) throws IOException {
+    fileWriter.write("SonarQube plugins:\n");
+    for (PluginInfo p : pluginRepo.getPluginInfos()) {
+      fileWriter.append(String.format("  - %s %s (%s)", p.getName(), p.getVersion(), p.getKey())).append('\n');
+    }
+  }
+
+  private void writeSystemProps(BufferedWriter fileWriter) throws IOException {
+    fileWriter.write("System properties:\n");
+    for (Map.Entry<Object, Object> env : System.getProperties().entrySet()) {
+      if (env.getKey().toString().startsWith(SONAR_PROP_PREFIX)) {
+        continue;
+      }
+      fileWriter.append(String.format("  - %s=%s", env.getKey(), env.getValue())).append('\n');
+    }
+  }
+
+  private static void writeEnvVariables(BufferedWriter fileWriter) throws IOException {
+    fileWriter.append("Environment variables:\n");
+    for (Map.Entry<String, String> env : System.getenv().entrySet()) {
+      fileWriter.append(String.format("  - %s=%s", env.getKey(), env.getValue())).append('\n');
+    }
+  }
+
   public void dumpSettings(ProjectDefinition moduleDefinition, Settings settings) {
     if (mode.isIssues()) {
       return;
@@ -79,6 +95,9 @@ public class AnalysisContextReportPublisher {
     try (BufferedWriter fileWriter = Files.newBufferedWriter(analysisLog.toPath(), StandardCharsets.UTF_8, StandardOpenOption.WRITE, StandardOpenOption.APPEND)) {
       fileWriter.append(String.format("Settings for module: %s", moduleDefinition.getKey())).append('\n');
       for (Map.Entry<String, String> prop : settings.getProperties().entrySet()) {
+        if (System.getProperties().containsKey(prop.getKey()) && !prop.getKey().startsWith(SONAR_PROP_PREFIX)) {
+          continue;
+        }
         fileWriter.append(String.format("  - %s=%s", prop.getKey(), sensitive(prop.getKey()) ? "******" : prop.getValue())).append('\n');
       }
     } catch (IOException e) {
index e7bdc1b66e490006c06e527aba6b772db1be933b..f890b6ab7250fb89caa984640c5f1de28d1de9c7 100644 (file)
@@ -73,6 +73,28 @@ public class AnalysisContextReportPublisherTest {
     assertThat(writer.getFileStructure().analysisLog()).doesNotExist();
   }
 
+  @Test
+  public void shouldNotDumpSQPropsInSystemProps() throws Exception {
+    BatchReportWriter writer = new BatchReportWriter(temp.newFolder());
+    System.setProperty("com.foo", "bar");
+    System.setProperty("sonar.skip", "true");
+    publisher.init(writer);
+
+    String content = FileUtils.readFileToString(writer.getFileStructure().analysisLog());
+    assertThat(content).containsOnlyOnce("com.foo");
+    assertThat(content).doesNotContain("sonar.skip");
+
+    Settings settings = new Settings();
+    settings.setProperty("com.foo", "bar");
+    settings.setProperty("sonar.skip", "true");
+
+    publisher.dumpSettings(ProjectDefinition.create().setProperty("sonar.projectKey", "foo"), settings);
+
+    content = FileUtils.readFileToString(writer.getFileStructure().analysisLog());
+    assertThat(content).containsOnlyOnce("com.foo");
+    assertThat(content).containsOnlyOnce("sonar.skip");
+  }
+
   @Test
   public void shouldNotDumpSensitiveProperties() throws Exception {
     BatchReportWriter writer = new BatchReportWriter(temp.newFolder());