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 # Paths to source directories. # Paths are relative to the sonar-project.properties file. Replace "\" by "/" on Windows. # Do not put the "sonar-project.properties" file in the same directory with the source code. # (i.e. never set the "sonar.sources" property to ".") sonar.sources=srcDir # The value of the property must be the key of the language. sonar.language=cobol # Encoding of the source code sonar.sourceEncoding=UTF-8 # Additional parameters sonar.my.property=value
Run the following command from the project base directory to launch the analysis:
Any user who's granted Execute Analysis permission can run an analysis.
If the Anyone group is not granted Execute Analysis permission or if the SonarQube instance is secured (the
sonar.forceAuthentication property is set to
true), the credentials of a user having been granted Execute Analysis permission have to be provided through the
sonar.password properties. Example:
sonar-runner -Dsonar.login=myLogin -Dsonar.password=myPassword
If a project cannot be accessed anonymously, the
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:
A project cannot be anonymously accessed when either:
sonar.forceAuthenticationproperty is set to
sonar.forceAuthenticationproperty is set to
falseand the Anyone group has not been granted a User role on the project
There is no security restriction.
To help you get started, simple project samples are available for most languages on github. They can be browsed or downloaded. You'll find them filed under projects/languages.
There are two ways to define a multi-module structure in SonarQube:
|Using the given file structure...||... with the given 'properties' files|
Set all the configuration in the properties file in the root folder
Set the configuration in multiple properties files
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:
To help you get started, multi-module project samples can be browsed or downloaded from github:
Since SonarQube 3.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 ...
Before SonarQube 3.6, it was only possible to run a project analysis. Since SonarQube 3.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 developer 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:
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 and combine the two parameters into a single one.
Replace the following properties in the sonar-project.properties file:
sonar.sourceEncodingproperty in the sonar-project.properties file.