]> source.dussan.org Git - sonar-scanner-cli.git/commitdiff
SQSCANNER-7 SQSCANNER-6 Deprecate sonar-runner and SONAR_RUNNER_OPTS 8/head
authorJulien HENRY <julien.henry@sonarsource.com>
Mon, 11 Apr 2016 12:27:32 +0000 (14:27 +0200)
committerJulien HENRY <julien.henry@sonarsource.com>
Mon, 11 Apr 2016 14:08:38 +0000 (16:08 +0200)
And replace by sonar-scanner and SONAR_SCANNER_OPTS

22 files changed:
appveyor.ps1
assembly.xml
it/pom.xml
it/src/test/java/com/sonar/runner/it/JavaTest.java
it/src/test/java/com/sonar/runner/it/ScannerTestCase.java
pom.xml
src/main/assembly/bin/sonar-runner
src/main/assembly/bin/sonar-runner.bat
src/main/assembly/bin/sonar-scanner [new file with mode: 0755]
src/main/assembly/bin/sonar-scanner.bat [new file with mode: 0644]
src/main/assembly/conf/sonar-runner.properties [deleted file]
src/main/assembly/conf/sonar-scanner.properties [new file with mode: 0644]
src/main/java/org/sonarsource/scanner/cli/Conf.java
src/main/java/org/sonarsource/scanner/cli/Main.java
src/main/java/org/sonarsource/scanner/cli/SystemInfo.java
src/test/java/org/sonarsource/scanner/cli/ConfTest.java
src/test/java/org/sonarsource/scanner/cli/SystemInfoTest.java
src/test/resources/org/sonarsource/scanner/cli/ConfTest/shouldLoadCompleteConfiguration/runner/conf/sonar-runner.properties [deleted file]
src/test/resources/org/sonarsource/scanner/cli/ConfTest/shouldLoadCompleteConfiguration/runner/conf/sonar-scanner.properties [new file with mode: 0644]
src/test/resources/org/sonarsource/scanner/cli/ConfTest/shouldLoadRunnerSettingsByHome/conf/sonar-runner.properties [deleted file]
src/test/resources/org/sonarsource/scanner/cli/ConfTest/shouldLoadRunnerSettingsByHome/conf/sonar-scanner.properties [new file with mode: 0644]
travis.sh

index 7885abf5d5b0d84ef00c83cf48e83ab5d84d7f18..c3fa1d94034a56728948d4b3a2be193d7724ef84 100644 (file)
@@ -113,6 +113,8 @@ CALLSTACK:$(Get-PSCallStack | Out-String)
     }
 }
 
+BuildSnapshot "SonarSource/sonar-scanner-api"
+
 switch ($env:RUN)
 {
        "ci"
index e1ba25cf1d1c03ac8c494517a897371a44008145..057789bb259a386d02c93aeb3f2bddcc9f60b693 100644 (file)
@@ -13,6 +13,7 @@
       <outputDirectory>bin</outputDirectory>
       <includes>
         <include>sonar-runner.bat</include>
+        <include>sonar-scanner.bat</include>
       </includes>
       <lineEnding>dos</lineEnding>
       <filtered>true</filtered>
@@ -22,6 +23,7 @@
       <outputDirectory>bin</outputDirectory>
       <includes>
         <include>sonar-runner</include>
+        <include>sonar-scanner</include>
       </includes>
       <lineEnding>unix</lineEnding>
       <fileMode>0755</fileMode>
index a336a7419f905f936cfc085ce440a9d292f7aead..14d38e73c8c12cf933ec9f70151e9a4bdd9f2933 100644 (file)
@@ -31,7 +31,7 @@
     <dependency>
       <groupId>org.sonarsource.orchestrator</groupId>
       <artifactId>sonar-orchestrator</artifactId>
-      <version>3.10.1</version>
+      <version>3.11-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
index e092ebbf3e1b6a8b75ed789bbbf24749e64e84fe..001ed23d301bf427d45f5758b438c0e69161b82f 100644 (file)
 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";
index 9d8e63ddf94fef9b85bac0f5b608a24db97337ea..0f8d7faa5030a57f02f15dc55d69b8a1075e6136 100644 (file)
@@ -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 d490039c7fb1aa63df2206df8b7835dade771713..a8c73cedb597fa2a824dacf056fbf4c45335ba8b 100644 (file)
--- a/pom.xml
+++ b/pom.xml
             <configuration>
               <rules>
                 <requireFilesSize>
-                  <minsize>490000</minsize>
-                  <maxsize>500000</maxsize>
+                  <minsize>500000</minsize>
+                  <maxsize>510000</maxsize>
                   <files>
                     <file>${project.build.directory}/sonar-scanner-${project.version}.zip</file>
                   </files>
index 3d2b09298336efb0b5e81af8c0aa1d391df39ebc..556e712e4ffbe311074d09858c9817404c6efecd 100755 (executable)
@@ -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 "$@"
 
index 32b3e83067c0d4b8b9108ee05817012fe9b2339b..b004a1016da282d36136253ab579fe64bbea88ea 100644 (file)
@@ -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 (executable)
index 0000000..1a25d3f
--- /dev/null
@@ -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 <COPYRIGHT HOLDER> 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 (file)
index 0000000..55ae38a
--- /dev/null
@@ -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-runner.properties
deleted file mode 100644 (file)
index e1528cb..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-#Configure here general information about the environment, such as SonarQube DB details for example
-#No information about specific project should appear here
-
-#----- Default SonarQube server
-#sonar.host.url=http://localhost:9000
-
-#----- Default source code encoding
-#sonar.sourceEncoding=UTF-8
-
-#----- Global database settings (not used for SonarQube 5.2+)
-#sonar.jdbc.username=sonar
-#sonar.jdbc.password=sonar
-
-#----- PostgreSQL
-#sonar.jdbc.url=jdbc:postgresql://localhost/sonar
-
-#----- MySQL
-#sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&amp;characterEncoding=utf8
-
-#----- Oracle
-#sonar.jdbc.url=jdbc:oracle:thin:@localhost/XE
-
-#----- Microsoft SQLServer
-#sonar.jdbc.url=jdbc:jtds:sqlserver://localhost/sonar;SelectMethod=Cursor
diff --git a/src/main/assembly/conf/sonar-scanner.properties b/src/main/assembly/conf/sonar-scanner.properties
new file mode 100644 (file)
index 0000000..e1528cb
--- /dev/null
@@ -0,0 +1,24 @@
+#Configure here general information about the environment, such as SonarQube DB details for example
+#No information about specific project should appear here
+
+#----- Default SonarQube server
+#sonar.host.url=http://localhost:9000
+
+#----- Default source code encoding
+#sonar.sourceEncoding=UTF-8
+
+#----- Global database settings (not used for SonarQube 5.2+)
+#sonar.jdbc.username=sonar
+#sonar.jdbc.password=sonar
+
+#----- PostgreSQL
+#sonar.jdbc.url=jdbc:postgresql://localhost/sonar
+
+#----- MySQL
+#sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&amp;characterEncoding=utf8
+
+#----- Oracle
+#sonar.jdbc.url=jdbc:oracle:thin:@localhost/XE
+
+#----- Microsoft SQLServer
+#sonar.jdbc.url=jdbc:jtds:sqlserver://localhost/sonar;SelectMethod=Cursor
index 74f0f62f18238834f233c43978c739b363989f10..cf2b37f3e240172706c494dfd4ab53aaf8d724c0 100644 (file)
@@ -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);
index fc7be85af156b291a21d8335de474efdf04e57c8..f0b76bfb4bb740da4d854e82bbceac6f322ad8c7 100644 (file)
@@ -26,9 +26,9 @@ import org.sonarsource.scanner.api.EmbeddedScanner;
 /**
  * Arguments :
  * <ul>
- * <li>runner.home: optional path to runner home (root directory with sub-directories bin, lib and conf)</li>
- * <li>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</li>
+ * <li>scanner.home: optional path to Scanner home (root directory with sub-directories bin, lib and conf)</li>
+ * <li>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</li>
  * <li>project.home: path to project root directory. If not set, then it's supposed to be the directory where the runner is executed</li>
  * <li>project.settings: optional path to project settings. Default value is ${project.home}/sonar-project.properties.</li>
  * </ul>
index dadde0d7996eed5211f65771065aea81cac3caaa..e202a3eb1e450f9d1d2bc76b7831bde0b7b0e2c2 100644 (file)
@@ -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);
     }
   }
 
index c792504587d2bdb527b8695a44f5c63cdff398e1..db9b6c527a42645708a72dad0dd994c403d611b9 100644 (file)
@@ -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());
index 0c1fa8fa31d5e1cb7be688ed0c1e50d7a836ea0b..0786c83c772ac484e5d9a4bd8940b87a556534bd 100644 (file)
@@ -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-runner.properties
deleted file mode 100644 (file)
index 7edfb99..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-overridden.prop=runner scope
-global.prop=jdbc:mysql:localhost/sonar
diff --git a/src/test/resources/org/sonarsource/scanner/cli/ConfTest/shouldLoadCompleteConfiguration/runner/conf/sonar-scanner.properties b/src/test/resources/org/sonarsource/scanner/cli/ConfTest/shouldLoadCompleteConfiguration/runner/conf/sonar-scanner.properties
new file mode 100644 (file)
index 0000000..7edfb99
--- /dev/null
@@ -0,0 +1,2 @@
+overridden.prop=runner scope
+global.prop=jdbc:mysql:localhost/sonar
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-runner.properties
deleted file mode 100644 (file)
index 1e03622..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-sonar.prop=value
-sonar.jdbc.url=jdbc:mysql:localhost/sonar
diff --git a/src/test/resources/org/sonarsource/scanner/cli/ConfTest/shouldLoadRunnerSettingsByHome/conf/sonar-scanner.properties b/src/test/resources/org/sonarsource/scanner/cli/ConfTest/shouldLoadRunnerSettingsByHome/conf/sonar-scanner.properties
new file mode 100644 (file)
index 0000000..1e03622
--- /dev/null
@@ -0,0 +1,2 @@
+sonar.prop=value
+sonar.jdbc.url=jdbc:mysql:localhost/sonar
index f9a97848f9b312872ad4b6f42d96057236b123e0..1c860bca3709fafe1ce8b9d0f3658e40b7157480 100755 (executable)
--- 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