The SonarQube Runner is recommended as the default launcher to analyze a project with SonarQube.
You must have previously installed the SonarQube Runner and read Analyzing Code Source.
Create a configuration file in the root directory of the project: sonar-project.properties
# required metadata sonar.projectKey=my:project sonar.projectName=My project sonar.projectVersion=1.0 # optional description sonar.projectDescription=Fake description # path to source directories (required) sonar.sources=srcDir1,srcDir2 # path to test source directories (optional) sonar.tests=testDir1,testDir2 # path to project binaries (optional), for example directory of Java bytecode sonar.binaries=binDir # optional comma-separated list of paths to libraries. Only path to JAR file is supported. sonar.libraries=path/to/library/*.jar,path/to/specific/library/myLibrary.jar,parent/*/*.jar # The value of the property must be the key of the language. sonar.language=cobol # Additional parameters sonar.my.property=value |
Run the following command from the project base directory to launch the analysis:
sonar-runner |
Since SonarQube3.4, if a project cannot be accessed anonymously, the sonar.login and sonar.password properties are required to run an analysis on this project. These properties have to be set to the credentials of a user having the 'User' role on this project. You can set them either:
-Dsonar.login=myUser -Dsonar.password=myPasswordA project cannot be anonymously accessed when either:
sonar.forceAuthentication property is set to truesonar.forceAuthentication property is set to false and the Anyone group has not been granted a User role on the projectTo help you getting started, for each language, a simple project sample is available on github that can be browsed or downloaded: projects/languages
There are two ways to define a multi-module structure in SonarQube:
| Using the given file structure... | ... with the given 'properties' files | ||||
|---|---|---|---|---|---|
Way #1 Set all the configuration in the properties file in the root folder | ![]() |
| |||
Way #2 Set the configuration in multiple properties files | ![]() |
|
Noteworthy:
sonar.projectBaseDir property.the folder of a module contains white spaces or special characters:
module1.sonar.projectBaseDir=My Module One |
the module is not located directly in the parent folder, but in a deeper directory structure:
module1.sonar.projectBaseDir=modules/mod1 module2.sonar.projectBaseDir=modules/mod2 |
To help you getting started, multi-module project samples are available on github that can be browsed or downloaded:
Since SonarQube3.3, it is possible to run an analysis on a multi-module project whose modules contains source code from different languages.
In addition to the multi-module configuration, the only mandatory property to set is the language for each module:
module1.sonar.language=java module2.sonar.language=js ... |
To help you getting started, a multi-language project sample is available on github that can be browsed or downloaded: projects/languages/multi-language/multi-language-java-javascript-sonar-runner
Before SonarQube3.6, it was only possible to run a project analysis. Since SonarQube3.6, it is possible to run other tasks such as:
# To run the computation of views (Views plugin is required) sonar-runner views # To run the computation of reports (Report plugin is required) sonar-runner report # To run the computation of developers data (Developer Cockpit plugin is required) sonar-runner devcockpit |
If a sonar-project.properties file cannot be created in the root directory of the project, there are several alternatives:
The properties can be specified directly through the command line. Ex:
sonar-runner -Dsonar.projectKey=myproject -Dsonar.sources=src1 |
The property 'project.settings' can be used to specify the path to the project configuration file (this option is incompatible with the 'project.home' property). Ex:
sonar-runner -Dproject.settings=../myproject.properties |
The root folder of the project to analyze can be set through the 'project.home' property. This folder must contain a sonar-project.properties file if the mandatory properties (like sonar.projectKey) are not specified on the command line.
Additional analysis parameters can be defined in this project configuration file or through command-line parameters.
If you get an java.lang.OutOfMemoryError, you can set the SONAR_RUNNER_OPTS environment variable, like this in *nix environments:
On Windows environments, avoid the double-quotes, since they get misinterpreted, turning the two parameters into a single one.
|
Replace the following properties in the sonar-project.properties file:
sources => sonar.sourcestests => sonar.testsbinaries => sonar.binarieslibraries => sonar.librariessonar.sourceEncoding property in the sonar-project.properties file.