From ba64311f2a56e196d141cb2fc7a8c87af52194a5 Mon Sep 17 00:00:00 2001 From: Duarte Meneses Date: Fri, 7 Aug 2015 15:05:29 +0200 Subject: [PATCH] validate analysis mode --- .../org/sonar/batch/bootstrap/GlobalMode.java | 15 ++++++++++++++- .../org/sonar/batch/scan/ProjectAnalysisMode.java | 14 +++++++++++++- .../sonar/batch/scan/ProjectAnalysisModeTest.java | 12 ++++++------ 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/GlobalMode.java b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/GlobalMode.java index 1965abc1730..33ec869e23e 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/GlobalMode.java +++ b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/GlobalMode.java @@ -19,9 +19,10 @@ */ package org.sonar.batch.bootstrap; +import org.apache.commons.lang.StringUtils; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import org.sonar.api.CoreProperties; import java.text.MessageFormat; @@ -40,6 +41,7 @@ public class GlobalMode { preview = "true".equals(props.property(CoreProperties.DRY_RUN)); } else { String mode = props.property(CoreProperties.ANALYSIS_MODE); + validate(mode); preview = CoreProperties.ANALYSIS_MODE_PREVIEW.equals(mode) || CoreProperties.ANALYSIS_MODE_QUICK.equals(mode); } @@ -47,4 +49,15 @@ public class GlobalMode { LOG.info("Preview global mode"); } } + + private void validate(String mode) { + if (StringUtils.isEmpty(mode)) { + return; + } + + if (!CoreProperties.ANALYSIS_MODE_PREVIEW.equals(mode) && !CoreProperties.ANALYSIS_MODE_QUICK.equals(mode) && + !CoreProperties.ANALYSIS_MODE_ANALYSIS.equals(mode)) { + throw new IllegalStateException("Invalid analysis mode: " + mode); + } + } } diff --git a/sonar-batch/src/main/java/org/sonar/batch/scan/ProjectAnalysisMode.java b/sonar-batch/src/main/java/org/sonar/batch/scan/ProjectAnalysisMode.java index d13d1710e55..5ebd094360c 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/scan/ProjectAnalysisMode.java +++ b/sonar-batch/src/main/java/org/sonar/batch/scan/ProjectAnalysisMode.java @@ -19,8 +19,8 @@ */ package org.sonar.batch.scan; +import org.apache.commons.lang.StringUtils; import org.sonar.batch.bootstrap.BootstrapProperties; - import org.sonar.batch.bootstrap.AnalysisProperties; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -78,6 +78,7 @@ public class ProjectAnalysisMode implements AnalysisMode { preview = "true".equals(getPropertyWithFallback(analysisProps, globalProps, CoreProperties.DRY_RUN)); } else { String mode = getPropertyWithFallback(analysisProps, globalProps, CoreProperties.ANALYSIS_MODE); + validate(mode); preview = CoreProperties.ANALYSIS_MODE_PREVIEW.equals(mode); quick = CoreProperties.ANALYSIS_MODE_QUICK.equals(mode); } @@ -107,4 +108,15 @@ public class ProjectAnalysisMode implements AnalysisMode { return "true".equals(props.get(CoreProperties.DRY_RUN)) || CoreProperties.ANALYSIS_MODE_PREVIEW.equals(mode) || CoreProperties.ANALYSIS_MODE_QUICK.equals(mode); } + + private void validate(String mode) { + if (StringUtils.isEmpty(mode)) { + return; + } + + if (!CoreProperties.ANALYSIS_MODE_PREVIEW.equals(mode) && !CoreProperties.ANALYSIS_MODE_QUICK.equals(mode) && + !CoreProperties.ANALYSIS_MODE_ANALYSIS.equals(mode)) { + throw new IllegalStateException("Invalid analysis mode: " + mode); + } + } } diff --git a/sonar-batch/src/test/java/org/sonar/batch/scan/ProjectAnalysisModeTest.java b/sonar-batch/src/test/java/org/sonar/batch/scan/ProjectAnalysisModeTest.java index c7a04640777..18e24b9d1dd 100644 --- a/sonar-batch/src/test/java/org/sonar/batch/scan/ProjectAnalysisModeTest.java +++ b/sonar-batch/src/test/java/org/sonar/batch/scan/ProjectAnalysisModeTest.java @@ -36,12 +36,7 @@ public class ProjectAnalysisModeTest { @Test public void regular_analysis_by_default() { - ProjectAnalysisMode mode = createMode(null); - - assertThat(mode.isPreview()).isFalse(); - - mode = createMode(CoreProperties.ANALYSIS_MODE, "pouet"); - + ProjectAnalysisMode mode = createMode(null, null); assertThat(mode.isPreview()).isFalse(); } @@ -57,6 +52,11 @@ public class ProjectAnalysisModeTest { assertThat(mode.isPreview()).isFalse(); } + @Test(expected = IllegalStateException.class) + public void validate_mode() { + createMode(CoreProperties.ANALYSIS_MODE_INCREMENTAL); + } + @Test public void support_preview_mode() { ProjectAnalysisMode mode = createMode(CoreProperties.ANALYSIS_MODE_PREVIEW); -- 2.39.5