* SQSCANNER-57 - Rename scanner SonarScannertags/4.3.0.2102
@@ -184,7 +184,7 @@ public class ScannerTest extends ScannerTestCase { | |||
"{ \"sonar.scanner.skip\":\"true\" }"); | |||
BuildResult result = orchestrator.executeBuild(build); | |||
assertThat(result.getLogs()).contains("SonarQube Scanner analysis skipped"); | |||
assertThat(result.getLogs()).contains("SonarScanner analysis skipped"); | |||
} | |||
@Test |
@@ -4,7 +4,7 @@ url: /analysis/scan/sonarscanner/ | |||
--- | |||
[[info]] | |||
| **Download SonarScanner 4.0** - Compatible with SonarQube 6.7+ (LTS) | |||
| **Download SonarScanner 4.0** - Compatible with SonarQube 6.7+ (LTS) and SonarCloud | |||
| By [SonarSource](https://www.sonarsource.com/) – GNU LGPL 3 – [Issue Tracker](https://jira.sonarsource.com/browse/SQSCANNER) – [Source](https://github.com/Sonarsource/sonar-scanner-cli) | |||
| | |||
| [Linux 64-bit](https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.0.0.1744-linux.zip) | |
@@ -1,9 +1,9 @@ | |||
#!/bin/sh | |||
# | |||
# SonarQube Scanner Startup Script for Unix | |||
# SonarScanner Startup Script for Unix | |||
# | |||
# Optional ENV vars: | |||
# SONAR_SCANNER_OPTS - Parameters passed to the Java VM when running the SonarQube Scanner | |||
# SONAR_SCANNER_OPTS - Parameters passed to the Java VM when running the SonarScanner | |||
# SONAR_SCANNER_DEBUG_OPTS - Extra parameters passed to the Java VM for debugging | |||
# JAVA_HOME - Location of Java's installation | |||
@@ -1,14 +1,14 @@ | |||
#!/bin/sh | |||
# | |||
# SonarQube Scanner Startup Script for Unix | |||
# SonarScanner Startup Script for Unix | |||
# | |||
# Optional ENV vars: | |||
# SONAR_SCANNER_OPTS - parameters passed to the Java VM when running the SonarQube Scanner | |||
# SONAR_SCANNER_OPTS - parameters passed to the Java VM when running the SonarScanner | |||
# JAVA_HOME - Location of Java's installation | |||
SONAR_SCANNER_DEBUG_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000" | |||
echo "Executing SonarQube Scanner in Debug Mode" | |||
echo "Executing SonarScanner in Debug Mode" | |||
echo "SONAR_SCANNER_DEBUG_OPTS=\"-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000\"" | |||
env SONAR_SCANNER_OPTS="$SONAR_SCANNER_OPTS" SONAR_SCANNER_DEBUG_OPTS="$SONAR_SCANNER_DEBUG_OPTS" "$(dirname "$0")"/sonar-scanner "$@" |
@@ -1,13 +1,13 @@ | |||
@REM SonarQube Scanner Startup Script for Windows | |||
@REM SonarScanner 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_OPTS - parameters passed to the Java VM when running the SonarQube Scanner | |||
@REM SONAR_SCANNER_OPTS - parameters passed to the Java VM when running the SonarScanner | |||
@setlocal | |||
@set SONAR_SCANNER_DEBUG_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 | |||
echo "Executing SonarQube Scanner in Debug Mode" | |||
echo "Executing SonarScanner in Debug Mode" | |||
echo "SONAR_SCANNER_DEBUG_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000" | |||
@call "%~dp0"sonar-scanner.bat %* |
@@ -1,10 +1,10 @@ | |||
@REM SonarQube Scanner Startup Script for Windows | |||
@REM SonarScanner 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_OPTS - parameters passed to the Java VM when running the SonarQube Scanner | |||
@REM SONAR_SCANNER_OPTS - parameters passed to the Java VM when running the SonarScanner | |||
@echo off | |||
@@ -28,6 +28,7 @@ import java.nio.file.Paths; | |||
import java.text.MessageFormat; | |||
import java.util.ArrayList; | |||
import java.util.List; | |||
import java.util.Locale; | |||
import java.util.Map; | |||
import java.util.Properties; | |||
import javax.annotation.Nullable; | |||
@@ -42,6 +43,7 @@ class Conf { | |||
private static final String PROPERTY_PROJECT_BASEDIR = "sonar.projectBaseDir"; | |||
private static final String PROPERTY_PROJECT_CONFIG_FILE = "sonar.projectConfigFile"; | |||
private static final String SONAR_PROJECT_PROPERTIES_FILENAME = "sonar-project.properties"; | |||
private static final String PROPERTY_SONAR_HOST_URL = "sonar.host.url"; | |||
private final Cli cli; | |||
private final Logs logger; | |||
@@ -68,6 +70,15 @@ class Conf { | |||
return result; | |||
} | |||
boolean isSonarCloud(@Nullable Properties testProperties) { | |||
String hostUrl = testProperties != null ? testProperties.getProperty(PROPERTY_SONAR_HOST_URL) : properties().getProperty(PROPERTY_SONAR_HOST_URL); | |||
if (hostUrl != null) { | |||
return hostUrl.toLowerCase(Locale.getDefault()).contains("sonarcloud"); | |||
} | |||
return false; | |||
} | |||
private Properties resolve(Properties props) { | |||
PropertyResolver resolver = new PropertyResolver(props, env); | |||
return resolver.resolve(); |
@@ -71,12 +71,12 @@ public class Main { | |||
configureLogging(p); | |||
init(p); | |||
runner.start(); | |||
logger.info("SonarQube server " + runner.serverVersion()); | |||
logger.info(String.format("Analyzing on %s", conf.isSonarCloud(null) ? "SonarCloud" : ("SonarQube server " + runner.serverVersion()))); | |||
execute(stats, p); | |||
status = Exit.SUCCESS; | |||
} catch (Throwable e) { | |||
displayExecutionResult(stats, "FAILURE"); | |||
showError("Error during SonarQube Scanner execution", e, cli.isDebugEnabled()); | |||
showError("Error during SonarScanner execution", e, cli.isDebugEnabled()); | |||
status = isUserError(e) ? Exit.USER_ERROR : Exit.INTERNAL_ERROR; | |||
} finally { | |||
exit.exit(status); | |||
@@ -86,7 +86,7 @@ public class Main { | |||
private void checkSkip(Properties properties) { | |||
if ("true".equalsIgnoreCase(properties.getProperty(ScanProperties.SKIP))) { | |||
logger.info("SonarQube Scanner analysis skipped"); | |||
logger.info("SonarScanner analysis skipped"); | |||
exit.exit(Exit.SUCCESS); | |||
} | |||
} | |||
@@ -149,7 +149,7 @@ public class Main { | |||
private void suggestDebugMode() { | |||
if (!cli.isEmbedded()) { | |||
logger.error("Re-run SonarQube Scanner using the -X switch to enable full debug logging."); | |||
logger.error("Re-run SonarScanner using the -X switch to enable full debug logging."); | |||
} | |||
} | |||
@@ -30,7 +30,7 @@ class SystemInfo { | |||
} | |||
static void print(Logs logger) { | |||
logger.info("SonarQube Scanner " + ScannerVersion.version()); | |||
logger.info("SonarScanner " + ScannerVersion.version()); | |||
logger.info(java()); | |||
logger.info(os()); | |||
String scannerOpts = system.getenv("SONAR_SCANNER_OPTS"); |
@@ -336,4 +336,39 @@ public class ConfTest { | |||
properties = conf.properties(); | |||
assertThat(properties.get("sonar.prop")).isEqualTo("expected"); | |||
} | |||
// SQSCANNER-57 | |||
@Test | |||
public void should_return_true_is_sonar_cloud() { | |||
args.setProperty("sonar.host.url", "https://sonarcloud.io"); | |||
conf.properties(); | |||
assertThat(conf.isSonarCloud(null)).isTrue(); | |||
} | |||
// SQSCANNER-57 | |||
@Test | |||
public void should_return_false_is_sonar_cloud() { | |||
args.setProperty("sonar.host.url", "https://mysonarqube.com:9000/"); | |||
//Still returns false, sonarcloud not detected in the content of the url | |||
Properties properties = conf.properties(); | |||
assertThat(properties.getProperty("sonar.host.url")).isEqualTo("https://mysonarqube.com:9000/"); | |||
assertThat(conf.isSonarCloud(null)).isFalse(); | |||
} | |||
// SQSCANNER-57 | |||
@Test | |||
public void should_return_false_is_sonar_cloud_host_is_null() { | |||
Properties emptyProperties = new Properties(); | |||
assertThat(emptyProperties.getProperty("sonar.host.url")).isNull(); | |||
assertThat(conf.isSonarCloud(emptyProperties)).isFalse(); | |||
} | |||
} |
@@ -90,7 +90,7 @@ public class MainTest { | |||
main.execute(); | |||
verify(exit).exit(Exit.INTERNAL_ERROR); | |||
verify(logs).error("Error during SonarQube Scanner execution", e); | |||
verify(logs).error("Error during SonarScanner execution", e); | |||
} | |||
@Test | |||
@@ -108,7 +108,7 @@ public class MainTest { | |||
verify(runner).start(); | |||
verify(runner, never()).execute(any()); | |||
verify(exit).exit(Exit.INTERNAL_ERROR); | |||
verify(logs).error("Error during SonarQube Scanner execution", e); | |||
verify(logs).error("Error during SonarScanner execution", e); | |||
} | |||
@Test | |||
@@ -116,8 +116,8 @@ public class MainTest { | |||
Exception e = createException(false); | |||
testException(e, false, false, Exit.INTERNAL_ERROR); | |||
verify(logs).error("Error during SonarQube Scanner execution", e); | |||
verify(logs).error("Re-run SonarQube Scanner using the -X switch to enable full debug logging."); | |||
verify(logs).error("Error during SonarScanner execution", e); | |||
verify(logs).error("Re-run SonarScanner using the -X switch to enable full debug logging."); | |||
} | |||
@Test | |||
@@ -126,11 +126,11 @@ public class MainTest { | |||
testException(e, false, false, Exit.USER_ERROR); | |||
verify(logs, times(5)).error(anyString()); | |||
verify(logs).error("Error during SonarQube Scanner execution"); | |||
verify(logs).error("Error during SonarScanner execution"); | |||
verify(logs).error("my message"); | |||
verify(logs).error("Caused by: A functional cause"); | |||
verify(logs).error(""); | |||
verify(logs).error("Re-run SonarQube Scanner using the -X switch to enable full debug logging."); | |||
verify(logs).error("Re-run SonarScanner using the -X switch to enable full debug logging."); | |||
} | |||
@Test | |||
@@ -139,7 +139,7 @@ public class MainTest { | |||
testException(e, false, true, Exit.USER_ERROR); | |||
verify(logs, times(4)).error(anyString()); | |||
verify(logs).error("Error during SonarQube Scanner execution"); | |||
verify(logs).error("Error during SonarScanner execution"); | |||
verify(logs).error("my message"); | |||
verify(logs).error("Caused by: A functional cause"); | |||
verify(logs).error(""); | |||
@@ -151,7 +151,7 @@ public class MainTest { | |||
testException(e, true, false, Exit.USER_ERROR); | |||
verify(logs, times(1)).error(anyString(), any(Throwable.class)); | |||
verify(logs).error("Error during SonarQube Scanner execution", e); | |||
verify(logs).error("Error during SonarScanner execution", e); | |||
} | |||
@Test | |||
@@ -160,7 +160,7 @@ public class MainTest { | |||
testException(e, true, true, Exit.USER_ERROR); | |||
verify(logs, times(1)).error(anyString(), any(Throwable.class)); | |||
verify(logs).error("Error during SonarQube Scanner execution", e); | |||
verify(logs).error("Error during SonarScanner execution", e); | |||
} | |||
@Test | |||
@@ -168,8 +168,8 @@ public class MainTest { | |||
Exception e = createException(false); | |||
testException(e, true, false, Exit.INTERNAL_ERROR); | |||
verify(logs).error("Error during SonarQube Scanner execution", e); | |||
verify(logs, never()).error("Re-run SonarQube Scanner using the -X switch to enable full debug logging."); | |||
verify(logs).error("Error during SonarScanner execution", e); | |||
verify(logs, never()).error("Re-run SonarScanner using the -X switch to enable full debug logging."); | |||
} | |||
private void testException(Exception e, boolean debugEnabled, boolean isEmbedded, int expectedExitCode) { | |||
@@ -222,7 +222,7 @@ public class MainTest { | |||
Main main = new Main(exit, cli, conf, scannerFactory, logs); | |||
main.execute(); | |||
verify(logs).info("SonarQube Scanner analysis skipped"); | |||
verify(logs).info("SonarScanner analysis skipped"); | |||
InOrder inOrder = Mockito.inOrder(exit, scannerFactory); | |||
inOrder.verify(exit, times(1)).exit(Exit.SUCCESS); | |||
@@ -239,7 +239,18 @@ public class MainTest { | |||
Main main = new Main(exit, cli, conf, scannerFactory, logs); | |||
main.execute(); | |||
verify(logs).info("SonarQube server 5.5"); | |||
verify(logs).info("Analyzing on SonarQube server 5.5"); | |||
} | |||
@Test | |||
public void should_log_SonarCloud_server() { | |||
Properties p = new Properties(); | |||
when(conf.properties()).thenReturn(p); | |||
when(conf.isSonarCloud(null)).thenReturn(true); | |||
Main main = new Main(exit, cli, conf, scannerFactory, logs); | |||
main.execute(); | |||
verify(logs).info("Analyzing on SonarCloud"); | |||
} | |||
@Test |
@@ -82,8 +82,8 @@ public class SystemInfoTest { | |||
verify(mockSystem).getProperty("os.version"); | |||
verify(mockSystem).getenv("SONAR_SCANNER_OPTS"); | |||
verify(logs, never()).info("SonarQube Scanner null"); | |||
verify(logs).info("SonarQube Scanner " + ScannerVersion.version()); | |||
verify(logs, never()).info("SonarScanner null"); | |||
verify(logs).info("SonarScanner " + ScannerVersion.version()); | |||
verify(logs).info("Java 1.9 oracle (64-bit)"); | |||
verify(logs).info("linux 2.5 x64"); | |||
verify(logs).info("SONAR_SCANNER_OPTS=arg"); |