From ea7aefed7960719825584238ce311d4db71d0cae Mon Sep 17 00:00:00 2001 From: Julien HENRY Date: Mon, 11 Apr 2016 14:27:32 +0200 Subject: [PATCH] SQSCANNER-7 SQSCANNER-6 Deprecate sonar-runner and SONAR_RUNNER_OPTS And replace by sonar-scanner and SONAR_SCANNER_OPTS --- appveyor.ps1 | 2 + assembly.xml | 2 + it/pom.xml | 2 +- .../java/com/sonar/runner/it/JavaTest.java | 57 ++++++--- .../com/sonar/runner/it/ScannerTestCase.java | 3 +- pom.xml | 4 +- src/main/assembly/bin/sonar-runner | 14 ++- src/main/assembly/bin/sonar-runner.bat | 17 ++- src/main/assembly/bin/sonar-scanner | 110 ++++++++++++++++++ src/main/assembly/bin/sonar-scanner.bat | 97 +++++++++++++++ ...er.properties => sonar-scanner.properties} | 0 .../org/sonarsource/scanner/cli/Conf.java | 16 +-- .../org/sonarsource/scanner/cli/Main.java | 6 +- .../sonarsource/scanner/cli/SystemInfo.java | 6 +- .../org/sonarsource/scanner/cli/ConfTest.java | 10 +- .../scanner/cli/SystemInfoTest.java | 6 +- ...er.properties => sonar-scanner.properties} | 0 ...er.properties => sonar-scanner.properties} | 0 travis.sh | 1 + 19 files changed, 308 insertions(+), 45 deletions(-) create mode 100755 src/main/assembly/bin/sonar-scanner create mode 100644 src/main/assembly/bin/sonar-scanner.bat rename src/main/assembly/conf/{sonar-runner.properties => sonar-scanner.properties} (100%) rename src/test/resources/org/sonarsource/scanner/cli/ConfTest/shouldLoadCompleteConfiguration/runner/conf/{sonar-runner.properties => sonar-scanner.properties} (100%) rename src/test/resources/org/sonarsource/scanner/cli/ConfTest/shouldLoadRunnerSettingsByHome/conf/{sonar-runner.properties => sonar-scanner.properties} (100%) diff --git a/appveyor.ps1 b/appveyor.ps1 index 7885abf..c3fa1d9 100644 --- a/appveyor.ps1 +++ b/appveyor.ps1 @@ -113,6 +113,8 @@ CALLSTACK:$(Get-PSCallStack | Out-String) } } +BuildSnapshot "SonarSource/sonar-scanner-api" + switch ($env:RUN) { "ci" diff --git a/assembly.xml b/assembly.xml index e1ba25c..057789b 100644 --- a/assembly.xml +++ b/assembly.xml @@ -13,6 +13,7 @@ bin sonar-runner.bat + sonar-scanner.bat dos true @@ -22,6 +23,7 @@ bin sonar-runner + sonar-scanner unix 0755 diff --git a/it/pom.xml b/it/pom.xml index a336a74..14d38e7 100644 --- a/it/pom.xml +++ b/it/pom.xml @@ -31,7 +31,7 @@ org.sonarsource.orchestrator sonar-orchestrator - 3.10.1 + 3.11-SNAPSHOT junit diff --git a/it/src/test/java/com/sonar/runner/it/JavaTest.java b/it/src/test/java/com/sonar/runner/it/JavaTest.java index e092ebb..001ed23 100644 --- a/it/src/test/java/com/sonar/runner/it/JavaTest.java +++ b/it/src/test/java/com/sonar/runner/it/JavaTest.java @@ -20,11 +20,12 @@ package com.sonar.runner.it; import com.sonar.orchestrator.build.BuildResult; -import com.sonar.orchestrator.build.SonarRunner; +import com.sonar.orchestrator.build.SonarScanner; import com.sonar.orchestrator.locator.ResourceLocation; import java.io.File; import java.io.IOException; import java.util.List; +import org.apache.commons.lang.SystemUtils; import org.junit.After; import org.junit.Rule; import org.junit.Test; @@ -56,7 +57,7 @@ public class JavaTest extends ScannerTestCase { orchestrator.getServer().provisionProject("java:sample", "Java Sample, with comma"); orchestrator.getServer().associateProjectToQualityProfile("java:sample", "java", "sonar-way"); - SonarRunner build = newScanner(new File("projects/java-sample")) + SonarScanner build = newScanner(new File("projects/java-sample")) .setProperty("sonar.verbose", "true") .addArguments("-e"); // SONARPLUGINS-3061 @@ -102,7 +103,7 @@ public class JavaTest extends ScannerTestCase { orchestrator.getServer().provisionProject("java:bytecode", "Java Bytecode Sample"); orchestrator.getServer().associateProjectToQualityProfile("java:bytecode", "java", "requires-bytecode"); - SonarRunner build = newScanner(new File("projects/java-bytecode")); + SonarScanner build = newScanner(new File("projects/java-bytecode")); orchestrator.executeBuild(build); Resource project = orchestrator.getServer().getWsClient().find(new ResourceQuery("java:bytecode").setMetrics("lcom4", "violations")); @@ -134,7 +135,7 @@ public class JavaTest extends ScannerTestCase { orchestrator.getServer().provisionProject("java:basedir-with-source", "Basedir with source"); orchestrator.getServer().associateProjectToQualityProfile("java:basedir-with-source", "java", "sonar-way"); - SonarRunner build = newScanner(new File("projects/basedir-with-source")); + SonarScanner build = newScanner(new File("projects/basedir-with-source")); orchestrator.executeBuild(build); Resource project = orchestrator.getServer().getWsClient().find(new ResourceQuery("java:basedir-with-source").setMetrics("files", "ncloc")); @@ -151,7 +152,7 @@ public class JavaTest extends ScannerTestCase { orchestrator.getServer().provisionProject("SAMPLE", "Java Sample, with comma"); orchestrator.getServer().associateProjectToQualityProfile("SAMPLE", "java", "sonar-way"); - SonarRunner build = newScanner(new File("projects/java-sample")) + SonarScanner build = newScanner(new File("projects/java-sample")) .setProjectKey("SAMPLE"); orchestrator.executeBuild(build); @@ -165,7 +166,7 @@ public class JavaTest extends ScannerTestCase { */ @Test public void should_override_working_dir_with_relative_path() { - SonarRunner build = newScanner(new File("projects/override-working-dir")) + SonarScanner build = newScanner(new File("projects/override-working-dir")) .setProperty("sonar.working.directory", ".overridden-relative-sonar"); orchestrator.executeBuild(build); @@ -179,7 +180,7 @@ public class JavaTest extends ScannerTestCase { @Test public void should_override_working_dir_with_absolute_path() { File projectHome = new File("projects/override-working-dir"); - SonarRunner build = newScanner(projectHome) + SonarScanner build = newScanner(projectHome) .setProperty("sonar.working.directory", new File(projectHome, ".overridden-absolute-sonar").getAbsolutePath()); orchestrator.executeBuild(build); @@ -192,7 +193,7 @@ public class JavaTest extends ScannerTestCase { */ @Test public void should_fail_if_source_dir_does_not_exist() { - SonarRunner build = newScanner(new File("projects/bad-source-dirs")); + SonarScanner build = newScanner(new File("projects/bad-source-dirs")); BuildResult result = orchestrator.executeBuildQuietly(build); assertThat(result.getStatus()).isNotEqualTo(0); @@ -206,7 +207,7 @@ public class JavaTest extends ScannerTestCase { @Test public void should_log_message_when_deprecated_properties_are_used() { assumeTrue(!orchestrator.getServer().version().isGreaterThanOrEquals("4.3")); - SonarRunner build = newScanner(new File("projects/using-deprecated-props")); + SonarScanner build = newScanner(new File("projects/using-deprecated-props")); BuildResult result = orchestrator.executeBuild(build); String logs = result.getLogs(); @@ -221,7 +222,7 @@ public class JavaTest extends ScannerTestCase { */ @Test public void should_warn_when_analysis_is_platform_dependent() { - SonarRunner build = newScanner(new File("projects/java-sample")) + SonarScanner build = newScanner(new File("projects/java-sample")) // ORCH-243 .setSourceEncoding(""); String log = orchestrator.executeBuild(build).getLogs(); @@ -240,7 +241,7 @@ public class JavaTest extends ScannerTestCase { public void should_enable_verbose() { // this line should appear in all versions (LTS-DEV) in debug only String expectedLog = "Available languages:"; - SonarRunner build = newScanner(new File("projects/java-sample")) + SonarScanner build = newScanner(new File("projects/java-sample")) .setProperty("sonar.verbose", "true"); String logs = orchestrator.executeBuild(build).getLogs(); assertThat(logs).contains(expectedLog); @@ -248,7 +249,7 @@ public class JavaTest extends ScannerTestCase { @Test public void should_fail_if_unable_to_connect() { - SonarRunner build = newScanner(new File("projects/java-sample")) + SonarScanner build = newScanner(new File("projects/java-sample")) .setProperty("sonar.host.url", "http://foo"); BuildResult result = orchestrator.executeBuildQuietly(build); @@ -262,7 +263,7 @@ public class JavaTest extends ScannerTestCase { @Test public void run_from_external_location() throws IOException { File tempDir = temp.newFolder(); - SonarRunner build = newScanner(tempDir) + SonarScanner build = newScanner(tempDir) .setProperty("sonar.projectBaseDir", new File("projects/java-sample").getAbsolutePath()) .addArguments("-e"); orchestrator.executeBuild(build); @@ -272,6 +273,36 @@ public class JavaTest extends ScannerTestCase { assertThat(project.getVersion()).isEqualTo("1.2.3"); } + @Test + public void use_old_script_and_old_env_variable() { + SonarScanner build = newScanner(new File("projects/java-sample")) + .setUseOldSonarRunnerScript(true) + .setEnvironmentVariable("SONAR_RUNNER_OPTS", "-Xmx2m"); + BuildResult executeBuild = orchestrator.executeBuildQuietly(build); + assertThat(executeBuild.getStatus()).isNotEqualTo(0); + String logs = executeBuild.getLogs(); + if (SystemUtils.IS_OS_WINDOWS) { + assertThat(logs).contains("WARN: sonar-runner.bat script is deprecated. Please use sonar-scanner.bat instead."); + assertThat(logs).contains("WARN: SONAR_RUNNER_OPTS is deprecated. Please use SONAR_SCANNER_OPTS instead."); + } else { + assertThat(logs).contains("WARN: sonar-runner script is deprecated. Please use sonar-scanner instead."); + assertThat(logs).contains("WARN: $SONAR_RUNNER_OPTS is deprecated. Please use $SONAR_SCANNER_OPTS instead."); + } + assertThat(logs).contains("java.lang.OutOfMemoryError"); + } + + @Test + public void use_new_script_and_new_env_variable() { + SonarScanner build = newScanner(new File("projects/java-sample")) + .setEnvironmentVariable("SONAR_SCANNER_OPTS", "-Xmx2m"); + BuildResult executeBuild = orchestrator.executeBuildQuietly(build); + assertThat(executeBuild.getStatus()).isNotEqualTo(0); + String logs = executeBuild.getLogs(); + assertThat(logs).doesNotContain("sonar-runner"); + assertThat(logs).doesNotContain("SONAR_RUNNER_OPTS"); + assertThat(logs).contains("java.lang.OutOfMemoryError"); + } + private String findbugsFileKey() { if (orchestrator.getServer().version().isGreaterThanOrEquals("4.2")) { return "java:bytecode:src/HasFindbugsViolation.java"; diff --git a/it/src/test/java/com/sonar/runner/it/ScannerTestCase.java b/it/src/test/java/com/sonar/runner/it/ScannerTestCase.java index 9d8e63d..0f8d7fa 100644 --- a/it/src/test/java/com/sonar/runner/it/ScannerTestCase.java +++ b/it/src/test/java/com/sonar/runner/it/ScannerTestCase.java @@ -56,7 +56,8 @@ public abstract class ScannerTestCase { SonarScanner newScanner(File baseDir, String... keyValueProperties) { SonarScanner scannerCli = SonarScanner.create(baseDir, keyValueProperties); - scannerCli.setRunnerVersion(artifactVersion().toString()); + scannerCli.setScannerVersion(artifactVersion().toString()); return scannerCli; } + } diff --git a/pom.xml b/pom.xml index d490039..a8c73ce 100644 --- a/pom.xml +++ b/pom.xml @@ -158,8 +158,8 @@ - 490000 - 500000 + 500000 + 510000 ${project.build.directory}/sonar-scanner-${project.version}.zip diff --git a/src/main/assembly/bin/sonar-runner b/src/main/assembly/bin/sonar-runner index 3d2b092..556e712 100755 --- a/src/main/assembly/bin/sonar-runner +++ b/src/main/assembly/bin/sonar-runner @@ -65,6 +65,8 @@ real_path () { echo "$FOO" } +echo WARN: 'sonar-runner' script is deprecated. Please use 'sonar-scanner' instead. + if [ -z "$SONAR_RUNNER_HOME" ] ; then PRG="$0" @@ -92,6 +94,14 @@ else JAVA_CMD="`which java`" fi +if [ -n "$SONAR_RUNNER_OPTS" ] ; +then + echo WARN: '$SONAR_RUNNER_OPTS' is deprecated. Please use '$SONAR_SCANNER_OPTS' instead. + if [ -z "$SONAR_SCANNER_OPTS" ] ; then + SONAR_SCANNER_OPTS=$SONAR_RUNNER_OPTS + fi +fi + JAR_FILE="${SONAR_RUNNER_HOME}"/lib/sonar-scanner-cli-${project.version}.jar PROJECT_HOME=`pwd` @@ -102,9 +112,9 @@ PROJECT_HOME=`pwd` exec "$JAVA_CMD" \ -Djava.awt.headless=true \ - $SONAR_RUNNER_OPTS \ + $SONAR_SCANNER_OPTS \ -classpath $JAR_FILE \ - "-Drunner.home=\${SONAR_RUNNER_HOME}" \ + "-Dscanner.home=\${SONAR_RUNNER_HOME}" \ "-Dproject.home=\${PROJECT_HOME}" \ org.sonarsource.scanner.cli.Main "$@" diff --git a/src/main/assembly/bin/sonar-runner.bat b/src/main/assembly/bin/sonar-runner.bat index 32b3e83..b004a10 100644 --- a/src/main/assembly/bin/sonar-runner.bat +++ b/src/main/assembly/bin/sonar-runner.bat @@ -14,6 +14,8 @@ set ERROR_CODE=0 @REM set local scope for the variables with windows NT shell @setlocal +echo WARN: sonar-runner.bat script is deprecated. Please use sonar-scanner.bat instead. + @REM ==== START VALIDATION ==== @REM *** JAVA EXEC VALIDATION *** if not "%JAVA_HOME%" == "" goto foundJavaHome @@ -51,14 +53,14 @@ set JAVA_EXEC="%JAVA_HOME%\bin\java.exe" :OkJava if NOT "%SONAR_RUNNER_HOME%"=="" goto cleanSonarRunnerHome set SONAR_RUNNER_HOME=%~dp0.. -goto run +goto sonarRunnerOpts :cleanSonarRunnerHome @REM If the property has a trailing backslash, remove it if "%SONAR_RUNNER_HOME:~-1%"=="\" set SONAR_RUNNER_HOME=%SONAR_RUNNER_HOME:~0,-1% @REM Check if the provided SONAR_RUNNER_HOME is a valid install dir -IF EXIST "%SONAR_RUNNER_HOME%\lib\sonar-scanner-cli-${project.version}.jar" goto run +IF EXIST "%SONAR_RUNNER_HOME%\lib\sonar-scanner-cli-${project.version}.jar" goto sonarRunnerOpts echo. echo ERROR: SONAR_RUNNER_HOME exists but does not point to a valid install @@ -66,7 +68,14 @@ echo directory: %SONAR_RUNNER_HOME% echo. goto error - +@REM ==== HANDLE DEPRECATED SONAR_RUNNER_OPTS ==== +:sonarRunnerOpts +if "%SONAR_RUNNER_OPTS%" == "" ( + goto run +) else ( + echo WARN: SONAR_RUNNER_OPTS is deprecated. Please use SONAR_SCANNER_OPTS instead. + if not "%SONAR_SCANNER_OPTS%" == "" (set SONAR_SCANNER_OPTS=%SONAR_RUNNER_OPTS%) +) @REM ==== START RUN ==== :run @@ -74,7 +83,7 @@ echo %SONAR_RUNNER_HOME% set PROJECT_HOME=%CD% -%JAVA_EXEC% -Djava.awt.headless=true %SONAR_RUNNER_OPTS% -cp "%SONAR_RUNNER_HOME%\lib\sonar-scanner-cli-${project.version}.jar" "-Drunner.home=%SONAR_RUNNER_HOME%" "-Dproject.home=%PROJECT_HOME%" org.sonarsource.scanner.cli.Main %* +%JAVA_EXEC% -Djava.awt.headless=true %SONAR_SCANNER_OPTS% -cp "%SONAR_RUNNER_HOME%\lib\sonar-scanner-cli-${project.version}.jar" "-Dscanner.home=%SONAR_RUNNER_HOME%" "-Dproject.home=%PROJECT_HOME%" org.sonarsource.scanner.cli.Main %* if ERRORLEVEL 1 goto error goto end diff --git a/src/main/assembly/bin/sonar-scanner b/src/main/assembly/bin/sonar-scanner new file mode 100755 index 0000000..1a25d3f --- /dev/null +++ b/src/main/assembly/bin/sonar-scanner @@ -0,0 +1,110 @@ +#!/bin/sh +# +# SonarQube Scanner Startup Script for Unix +# +# Optional ENV vars: +# SONAR_SCANNER_HOME - location of runner's installed home dir +# SONAR_SCANNER_OPTS - parameters passed to the Java VM when running SonarQube Scanner + +# The following notice only apply to real_path function copied from +# https://sites.google.com/site/jdisnard/realpath +# Copyright 2010 Jon Disnard. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are +# permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this list of +# conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above copyright notice, this list +# of conditions and the following disclaimer in the documentation and/or other materials +# provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY Jon Disnard ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# The views and conclusions contained in the software and documentation are those of the +# authors and should not be interpreted as representing official policies, either expressed +# or implied, of Jon Disnard. +real_path () { + OIFS=$IFS + IFS='/' + for I in $1 + do + # Resolve relative path punctuation. + if [ "$I" = "." ] || [ -z "$I" ] + then continue + elif [ "$I" = ".." ] + then FOO="${FOO%%/${FOO##*/}}" + continue + else FOO="${FOO}/${I}" + fi + + # Dereference symbolic links. + if [ -h "$FOO" ] && [ -x "/bin/ls" ] + then IFS=$OIFS + set `/bin/ls -l "$FOO"` + while shift ; + do + if [ "$1" = "->" ] + then FOO=$2 + shift $# + break + fi + done + fi + done + IFS=$OIFS + echo "$FOO" +} + +if [ -z "$SONAR_SCANNER_HOME" ] ; then + PRG="$0" + + if [ -h "$PRG" ] ; then + # resolve symlinks + PRG=`real_path "$PRG"` + fi + + SONAR_SCANNER_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + SONAR_SCANNER_HOME=`cd "$SONAR_SCANNER_HOME" && pwd` +fi + +# check that the SONAR_SCANNER_HOME has been correctly set +if [ ! -f "$SONAR_SCANNER_HOME/lib/sonar-scanner-cli-${project.version}.jar" ] ; then + echo '$SONAR_SCANNER_HOME' does not point to a valid installation directory: $SONAR_SCANNER_HOME + exit 1 +fi + +if [ -n "$JAVA_HOME" ] +then + JAVA_CMD="$JAVA_HOME/bin/java" +else + JAVA_CMD="`which java`" +fi + +JAR_FILE="${SONAR_SCANNER_HOME}"/lib/sonar-scanner-cli-${project.version}.jar +PROJECT_HOME=`pwd` + +#echo "Info: Using sonar-scanner at $SONAR_SCANNER_HOME" +#echo "Info: Using java at $JAVA_CMD" +#echo "Info: Using classpath $JAR_FILE" +#echo "Info: Using project $PROJECT_HOME" + +exec "$JAVA_CMD" \ + -Djava.awt.headless=true \ + $SONAR_SCANNER_OPTS \ + -classpath $JAR_FILE \ + "-Dscanner.home=\${SONAR_SCANNER_HOME}" \ + "-Dproject.home=\${PROJECT_HOME}" \ + org.sonarsource.scanner.cli.Main "$@" + diff --git a/src/main/assembly/bin/sonar-scanner.bat b/src/main/assembly/bin/sonar-scanner.bat new file mode 100644 index 0000000..55ae38a --- /dev/null +++ b/src/main/assembly/bin/sonar-scanner.bat @@ -0,0 +1,97 @@ +@REM SonarQube Runner Startup Script for Windows +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars: +@REM SONAR_SCANNER_HOME - location of runner's installed home dir +@REM SONAR_SCANNER_OPTS - parameters passed to the Java VM when running Sonar + +@echo off + +set ERROR_CODE=0 + +@REM set local scope for the variables with windows NT shell +@setlocal + +@REM ==== START VALIDATION ==== +@REM *** JAVA EXEC VALIDATION *** +if not "%JAVA_HOME%" == "" goto foundJavaHome + +for %%i in (java.exe) do set JAVA_EXEC=%%~$PATH:i + +if not "%JAVA_EXEC%" == "" ( + set JAVA_EXEC="%JAVA_EXEC%" + goto OkJava +) + +if not "%JAVA_EXEC%" == "" goto OkJava + +echo. +echo ERROR: JAVA_HOME not found in your environment, and no Java +echo executable present in the PATH. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation, or add "java.exe" to the PATH +echo. +goto error + +:foundJavaHome +if EXIST "%JAVA_HOME%\bin\java.exe" goto foundJavaExeFromJavaHome + +echo. +echo ERROR: JAVA_HOME exists but does not point to a valid Java home +echo folder. No "\bin\java.exe" file can be found there. +echo. +goto error + +:foundJavaExeFromJavaHome +set JAVA_EXEC="%JAVA_HOME%\bin\java.exe" + +@REM *** SONAR SCANNER HOME VALIDATION *** +:OkJava +if NOT "%SONAR_SCANNER_HOME%"=="" goto cleanSQScannerHome +set SONAR_SCANNER_HOME=%~dp0.. +goto run + +:cleanSQScannerHome +@REM If the property has a trailing backslash, remove it +if "%SONAR_SCANNER_HOME:~-1%"=="\" set SONAR_SCANNER_HOME=%SONAR_SCANNER_HOME:~0,-1% + +@REM Check if the provided SONAR_SCANNER_HOME is a valid install dir +IF EXIST "%SONAR_SCANNER_HOME%\lib\sonar-scanner-cli-${project.version}.jar" goto run + +echo. +echo ERROR: SONAR_SCANNER_HOME exists but does not point to a valid install +echo directory: %SONAR_SCANNER_HOME% +echo. +goto error + + + +@REM ==== START RUN ==== +:run +echo %SONAR_SCANNER_HOME% + +set PROJECT_HOME=%CD% + +%JAVA_EXEC% -Djava.awt.headless=true %SONAR_SCANNER_OPTS% -cp "%SONAR_SCANNER_HOME%\lib\sonar-scanner-cli-${project.version}.jar" "-Dscanner.home=%SONAR_SCANNER_HOME%" "-Dproject.home=%PROJECT_HOME%" org.sonarsource.scanner.cli.Main %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +@REM ==== END EXECUTION ==== + +:end +@REM set local scope for the variables with windows NT shell +@endlocal & set ERROR_CODE=%ERROR_CODE% + +@REM see http://code-bear.com/bearlog/2007/06/01/getting-the-exit-code-from-a-batch-file-that-is-run-from-a-python-program/ +goto exit + +:returncode +exit /B %1 + +:exit +call :returncode %ERROR_CODE% diff --git a/src/main/assembly/conf/sonar-runner.properties b/src/main/assembly/conf/sonar-scanner.properties similarity index 100% rename from src/main/assembly/conf/sonar-runner.properties rename to src/main/assembly/conf/sonar-scanner.properties diff --git a/src/main/java/org/sonarsource/scanner/cli/Conf.java b/src/main/java/org/sonarsource/scanner/cli/Conf.java index 74f0f62..cf2b37f 100644 --- a/src/main/java/org/sonarsource/scanner/cli/Conf.java +++ b/src/main/java/org/sonarsource/scanner/cli/Conf.java @@ -32,8 +32,8 @@ import java.util.Map; import java.util.Properties; class Conf { - private static final String RUNNER_HOME = "runner.home"; - private static final String RUNNER_SETTINGS = "runner.settings"; + private static final String SCANNER_HOME = "scanner.home"; + private static final String SCANNER_SETTINGS = "scanner.settings"; private static final String PROJECT_HOME = "project.home"; private static final String PROJECT_SETTINGS = "project.settings"; private static final String PROPERTY_MODULES = "sonar.modules"; @@ -62,7 +62,7 @@ class Conf { } private Properties loadGlobalProperties() throws IOException { - Path settingsFile = locatePropertiesFile(cli.properties(), RUNNER_HOME, "conf/sonar-runner.properties", RUNNER_SETTINGS); + Path settingsFile = locatePropertiesFile(cli.properties(), SCANNER_HOME, "conf/sonar-scanner.properties", SCANNER_SETTINGS); if (settingsFile != null && Files.isRegularFile(settingsFile)) { logger.info("Scanner configuration file: " + settingsFile); return toProperties(settingsFile); @@ -74,7 +74,7 @@ class Conf { private Properties loadProjectProperties() throws IOException { Properties rootProps = new Properties(); Properties knownProps = new Properties(); - + knownProps.putAll(System.getProperties()); knownProps.putAll(cli.properties()); @@ -121,7 +121,7 @@ class Conf { if (parentProps.containsKey(PROPERTY_MODULES)) { for (String module : getListFromProperty(parentProps, PROPERTY_MODULES)) { Properties moduleProps = extractModuleProperties(module, parentProps); - //higher priority to child configuration files + // higher priority to child configuration files loadModuleConfigFile(parentBaseDir, moduleProps, module); // the child project may have children as well @@ -184,9 +184,9 @@ class Conf { private static Path locatePropertiesFile(Properties props, String homeKey, String relativePathFromHome, String settingsKey) { Path settingsFile = null; - String runnerHome = props.getProperty(homeKey, ""); - if (!"".equals(runnerHome)) { - settingsFile = Paths.get(runnerHome, relativePathFromHome); + String scannerHome = props.getProperty(homeKey, ""); + if (!"".equals(scannerHome)) { + settingsFile = Paths.get(scannerHome, relativePathFromHome); } return locatePropertiesFile(settingsFile, props, settingsKey); diff --git a/src/main/java/org/sonarsource/scanner/cli/Main.java b/src/main/java/org/sonarsource/scanner/cli/Main.java index fc7be85..f0b76bf 100644 --- a/src/main/java/org/sonarsource/scanner/cli/Main.java +++ b/src/main/java/org/sonarsource/scanner/cli/Main.java @@ -26,9 +26,9 @@ import org.sonarsource.scanner.api.EmbeddedScanner; /** * Arguments : *
    - *
  • runner.home: optional path to runner home (root directory with sub-directories bin, lib and conf)
  • - *
  • runner.settings: optional path to runner global settings, usually ${runner.home}/conf/sonar-runner.properties. - * This property is used only if ${runner.home} is not defined
  • + *
  • scanner.home: optional path to Scanner home (root directory with sub-directories bin, lib and conf)
  • + *
  • scanner.settings: optional path to runner global settings, usually ${scanner.home}/conf/sonar-scanner.properties. + * This property is used only if ${scanner.home} is not defined
  • *
  • project.home: path to project root directory. If not set, then it's supposed to be the directory where the runner is executed
  • *
  • project.settings: optional path to project settings. Default value is ${project.home}/sonar-project.properties.
  • *
diff --git a/src/main/java/org/sonarsource/scanner/cli/SystemInfo.java b/src/main/java/org/sonarsource/scanner/cli/SystemInfo.java index dadde0d..e202a3e 100644 --- a/src/main/java/org/sonarsource/scanner/cli/SystemInfo.java +++ b/src/main/java/org/sonarsource/scanner/cli/SystemInfo.java @@ -33,9 +33,9 @@ class SystemInfo { logger.info("SonarQube Scanner " + ScannerVersion.version()); logger.info(java()); logger.info(os()); - String runnerOpts = system.getenv("SONAR_RUNNER_OPTS"); - if (runnerOpts != null) { - logger.info("SONAR_RUNNER_OPTS=" + runnerOpts); + String scannerOpts = system.getenv("SONAR_SCANNER_OPTS"); + if (scannerOpts != null) { + logger.info("SONAR_SCANNER_OPTS=" + scannerOpts); } } diff --git a/src/test/java/org/sonarsource/scanner/cli/ConfTest.java b/src/test/java/org/sonarsource/scanner/cli/ConfTest.java index c792504..db9b6c5 100644 --- a/src/test/java/org/sonarsource/scanner/cli/ConfTest.java +++ b/src/test/java/org/sonarsource/scanner/cli/ConfTest.java @@ -52,7 +52,7 @@ public class ConfTest { @Test public void should_load_global_settings_by_home() throws Exception { Path home = Paths.get(getClass().getResource("ConfTest/shouldLoadRunnerSettingsByHome/").toURI()); - args.setProperty("runner.home", home.toAbsolutePath().toString()); + args.setProperty("scanner.home", home.toAbsolutePath().toString()); Properties properties = conf.properties(); assertThat(properties.get("sonar.prop")).isEqualTo("value"); @@ -81,7 +81,7 @@ public class ConfTest { @Test public void should_load_conf_by_direct_path() throws Exception { Path settings = Paths.get(getClass().getResource("ConfTest/shouldLoadRunnerSettingsByDirectPath/other-conf.properties").toURI()); - args.setProperty("runner.settings", settings.toAbsolutePath().toString()); + args.setProperty("scanner.settings", settings.toAbsolutePath().toString()); assertThat(conf.properties().get("sonar.prop")).isEqualTo("otherValue"); } @@ -90,7 +90,7 @@ public class ConfTest { public void shouldLoadCompleteConfiguration() throws Exception { Path runnerHome = Paths.get(getClass().getResource("ConfTest/shouldLoadCompleteConfiguration/runner").toURI()); Path projectHome = Paths.get(getClass().getResource("ConfTest/shouldLoadCompleteConfiguration/project").toURI()); - args.setProperty("runner.home", runnerHome.toAbsolutePath().toString()); + args.setProperty("scanner.home", runnerHome.toAbsolutePath().toString()); args.setProperty("project.home", projectHome.toAbsolutePath().toString()); Properties properties = conf.properties(); @@ -143,7 +143,7 @@ public class ConfTest { assertThat(properties.getProperty("module3.sonar.projectName")).isEqualTo("Module 3"); assertThat(properties.getProperty("sonar.projectBaseDir")).isEqualTo(projectHome.toString()); } - + @Test public void shouldCliOverrideSettingFiles() throws Exception { Path projectHome = Paths.get(getClass().getResource("ConfTest/shouldLoadModuleConfigurationOverrideBasedir/project").toURI()); @@ -159,7 +159,7 @@ public class ConfTest { assertThat(properties.getProperty("module3.sonar.projectName")).isEqualTo("mod3"); assertThat(properties.getProperty("sonar.projectBaseDir")).isEqualTo(projectHome.toString()); } - + @Test public void shouldUseCliToDiscoverModules() throws Exception { Path projectHome = Paths.get(getClass().getResource("ConfTest/shouldLoadModuleConfigurationOverrideBasedir/project").toURI()); diff --git a/src/test/java/org/sonarsource/scanner/cli/SystemInfoTest.java b/src/test/java/org/sonarsource/scanner/cli/SystemInfoTest.java index 0c1fa8f..0786c83 100644 --- a/src/test/java/org/sonarsource/scanner/cli/SystemInfoTest.java +++ b/src/test/java/org/sonarsource/scanner/cli/SystemInfoTest.java @@ -76,19 +76,19 @@ public class SystemInfoTest { public void should_print() { mockOs(); mockJava(); - when(mockSystem.getenv("SONAR_RUNNER_OPTS")).thenReturn("arg"); + when(mockSystem.getenv("SONAR_SCANNER_OPTS")).thenReturn("arg"); SystemInfo.print(logs); verify(mockSystem).getProperty("java.version"); verify(mockSystem).getProperty("os.version"); - verify(mockSystem).getenv("SONAR_RUNNER_OPTS"); + verify(mockSystem).getenv("SONAR_SCANNER_OPTS"); verify(logs, never()).info("SonarQube Scanner null"); verify(logs).info("SonarQube Scanner " + ScannerVersion.version()); verify(logs).info("Java 1.9 oracle (64-bit)"); verify(logs).info("linux 2.5 x64"); - verify(logs).info("SONAR_RUNNER_OPTS=arg"); + verify(logs).info("SONAR_SCANNER_OPTS=arg"); verifyNoMoreInteractions(logs); } } diff --git a/src/test/resources/org/sonarsource/scanner/cli/ConfTest/shouldLoadCompleteConfiguration/runner/conf/sonar-runner.properties b/src/test/resources/org/sonarsource/scanner/cli/ConfTest/shouldLoadCompleteConfiguration/runner/conf/sonar-scanner.properties similarity index 100% rename from src/test/resources/org/sonarsource/scanner/cli/ConfTest/shouldLoadCompleteConfiguration/runner/conf/sonar-runner.properties rename to src/test/resources/org/sonarsource/scanner/cli/ConfTest/shouldLoadCompleteConfiguration/runner/conf/sonar-scanner.properties diff --git a/src/test/resources/org/sonarsource/scanner/cli/ConfTest/shouldLoadRunnerSettingsByHome/conf/sonar-runner.properties b/src/test/resources/org/sonarsource/scanner/cli/ConfTest/shouldLoadRunnerSettingsByHome/conf/sonar-scanner.properties similarity index 100% rename from src/test/resources/org/sonarsource/scanner/cli/ConfTest/shouldLoadRunnerSettingsByHome/conf/sonar-runner.properties rename to src/test/resources/org/sonarsource/scanner/cli/ConfTest/shouldLoadRunnerSettingsByHome/conf/sonar-scanner.properties diff --git a/travis.sh b/travis.sh index f9a9784..1c860bc 100755 --- a/travis.sh +++ b/travis.sh @@ -10,6 +10,7 @@ function configureTravis { configureTravis build_snapshot SonarSource/sonar-scanner-api +build_snapshot SonarSource/orchestrator case "$TARGET" in -- 2.39.5