From 8ccfa525b8dbe7b6d639002df58ad5841a9208bd Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=A9bastien=20Lesaint?= Date: Tue, 30 Jun 2015 10:38:11 +0200 Subject: [PATCH] SONAR-6621 warn log if sonar.qualitygate set in project properties --- .../org/sonar/batch/scan/ProjectSettings.java | 22 +++++++++++++++++++ .../sonar/batch/scan/ProjectSettingsTest.java | 14 ++++++++++-- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/sonar-batch/src/main/java/org/sonar/batch/scan/ProjectSettings.java b/sonar-batch/src/main/java/org/sonar/batch/scan/ProjectSettings.java index 3219c719864..9a794590c43 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/scan/ProjectSettings.java +++ b/sonar-batch/src/main/java/org/sonar/batch/scan/ProjectSettings.java @@ -19,16 +19,29 @@ */ package org.sonar.batch.scan; +import com.google.common.collect.ImmutableMap; +import java.util.Map; import org.sonar.api.CoreProperties; import org.sonar.api.batch.bootstrap.ProjectReactor; import org.sonar.api.config.PropertyDefinitions; import org.sonar.api.config.Settings; import org.sonar.api.utils.MessageException; +import org.sonar.api.utils.log.Logger; +import org.sonar.api.utils.log.Loggers; import org.sonar.batch.bootstrap.DefaultAnalysisMode; import org.sonar.batch.bootstrap.GlobalSettings; import org.sonar.batch.protocol.input.ProjectRepositories; public class ProjectSettings extends Settings { + private static final Logger LOGGER = Loggers.get(ProjectSettings.class); + + /** + * A map of dropped properties as key and specific message to display for that property + * (what will happen, what should the user do, ...) as a value + */ + private static final Map DROPPED_PROPERTIES = ImmutableMap.of( + "sonar.qualitygate", "It will be ignored." + ); private final GlobalSettings globalSettings; private final ProjectRepositories projectRepositories; @@ -42,6 +55,7 @@ public class ProjectSettings extends Settings { this.globalSettings = globalSettings; this.projectRepositories = projectRepositories; init(reactor); + checkDroppedProperties(); } private void init(ProjectReactor reactor) { @@ -52,6 +66,14 @@ public class ProjectSettings extends Settings { addProperties(reactor.getRoot().properties()); } + private void checkDroppedProperties() { + for (Map.Entry entry : DROPPED_PROPERTIES.entrySet()) { + if (hasKey(entry.getKey())) { + LOGGER.warn("Property '{}' is not supported any more. {}", entry.getKey(), entry.getValue()); + } + } + } + @Override protected void doOnGetProperties(String key) { if (mode.isPreview() && key.endsWith(".secured") && !key.contains(".license")) { diff --git a/sonar-batch/src/test/java/org/sonar/batch/scan/ProjectSettingsTest.java b/sonar-batch/src/test/java/org/sonar/batch/scan/ProjectSettingsTest.java index 532393a56e0..c2e936ecf8b 100644 --- a/sonar-batch/src/test/java/org/sonar/batch/scan/ProjectSettingsTest.java +++ b/sonar-batch/src/test/java/org/sonar/batch/scan/ProjectSettingsTest.java @@ -20,6 +20,7 @@ package org.sonar.batch.scan; import com.google.common.collect.ImmutableMap; +import java.util.Collections; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -29,14 +30,13 @@ import org.sonar.api.batch.bootstrap.ProjectDefinition; import org.sonar.api.batch.bootstrap.ProjectReactor; import org.sonar.api.config.PropertyDefinitions; import org.sonar.api.utils.MessageException; +import org.sonar.api.utils.log.LogTester; import org.sonar.batch.bootstrap.BootstrapProperties; import org.sonar.batch.bootstrap.DefaultAnalysisMode; import org.sonar.batch.bootstrap.GlobalSettings; import org.sonar.batch.protocol.input.GlobalRepositories; import org.sonar.batch.protocol.input.ProjectRepositories; -import java.util.Collections; - import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -45,6 +45,8 @@ public class ProjectSettingsTest { @Rule public ExpectedException thrown = ExpectedException.none(); + @Rule + public LogTester logTester = new LogTester(); ProjectRepositories projectRef; ProjectDefinition project = ProjectDefinition.create().setKey("struts"); @@ -113,4 +115,12 @@ public class ProjectSettingsTest { batchSettings.getString("sonar.foo.secured"); } + @Test + public void should_log_a_warning_when_a_dropper_property_is_present() { + GlobalSettings settings = new GlobalSettings(new BootstrapProperties(ImmutableMap.of("sonar.qualitygate", "somevalue")), new PropertyDefinitions(), new GlobalRepositories(), mode); + new ProjectSettings(new ProjectReactor(project), settings, new PropertyDefinitions(), projectRef, mode); + + logTester.logs().contains("Property 'sonar.qualitygate' is not supported any more. It will be ignored."); + + } } -- 2.39.5