Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Infoiframe
iconfalse
titleTable of Contents

Table of Contents
maxLevel2

The Sonar Runner is recommended as the default launcher to analyze a project with Sonar.

Prerequisites

You must have previously installed the Sonar Runner and read Analyzing Code Source.

Note
titleSonar Runner 2.0+

This page describes how to use the Sonar Runner 2.0+

Usage

Simple Project

Create a configuration file in the root directory of the project: sonar-project.properties

Code Block
titlesonar-project.properties
languagebash
# required metadata
sonar.projectKey=my:project
sonar.projectName=My project
sonar.projectVersion=1.0

# 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 and path to directory of classes are supported.
sonar.libraries=path/to/library/*.jar,path/to/classes/dir

# 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 Sonar analysis:

Code Block
languagenone
sonar-runner

Security

Since Sonar 3.4, if you have set the security property 'sonar.forceAuthentication' to 'true', to run the analysis, you have to set the 'sonar.login' and 'sonar.password' properties to an existing user, either:

  • directly on the command line by adding -Dsonar.login=myUser -Dsonar.password=myPassword
  • or by setting these two properties in the sonar-project.properties file or in the sonar-runner.properties file

Project Samples

To help you getting started, for each language, a simple project sample is available on github that can be browsed or downloaded: projects/languages

Multi-module Project

There are two ways to define a multi-module structure in Sonar:

 Using the given file structure...... with the given 'properties' files

Way #1

Set all the configuration in the properties file in the root folder

Image Removed
Code Block
title"MyProject/sonar-project.properties" file content
linenumberstrue
languagebash
# Root project information
sonar.projectKey=org.mycompany.myproject
sonar.projectName=My Project
sonar.projectVersion=1.0-SNAPSHOT

# Some properties that will be inherited by the modules
sonar.sources=src

# List of the module identifiers
sonar.modules=module1,module2

# Properties can obviously be overriden for
# each module - just prefix them with the module ID
module1.sonar.projectName=Module 1
module2.sonar.projectName=Module 2

Way #2

Set the configuration in multiple properties files

Image Removed
Code Block
title"MyProject/sonar-project.properties" file content
linenumberstrue
languagebash
# Root project information
sonar.projectKey=org.mycompany.myproject
sonar.projectName=My Project
sonar.projectVersion=1.0-SNAPSHOT

# Some properties that will be inherited by the modules
sonar.sources=src

# List of the module identifiers
sonar.modules=module1,module2
Code Block
title"MyProject/module1/sonar-project.properties" file content
linenumberstrue
languagebash
# Redefine properties
# Note that you do not need to prefix the property here
sonar.projectName=Module 1
Code Block
title"MyProject/module2/sonar-project.properties" file content
linenumberstrue
languagebash
# Redefine properties
# Note that you do not need to prefix the property here
sonar.projectName=Module 2

 

Noteworthy:

...

  • the folder of a module contains white spaces or special characters:

    Code Block
    languagebash
    module1.sonar.projectBaseDir=My Module One

      

  • the module is not located directly in the parent folder, but in a deeper directory structure:

    Code Block
    languagebash
    module1.sonar.projectBaseDir=modules/mod1
    module2.sonar.projectBaseDir=modules/mod2

      

  • A project that defines modules (or a module that defines sub-modules) cannot define a source code folder to be analyzed by Sonar.
     

To help you getting started, multi-module project samples are available on github that can be browsed or downloaded:

...

Multi-module and Multi-language Project

Since Sonar 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:

Code Block
titlemodule.sonar.language
linenumberstrue
languagebash
module1.sonar.language=java
module2.sonar.language=javascript
...

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

Advanced Usage

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:

    Code Block
    languagenone
    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:

    Code Block
    languagenone
    sonar-runner -Dproject.settings=../myproject.properties

      

The Sonar working directory can be set through the 'sonar.working.directory' property (default is '.sonar').

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. 

Troubleshootings

Note

If you get an java.lang.OutOfMemoryError, you can set the SONAR_RUNNER_OPTS environment variable, like this in *nix environments:

Code Block
languagenone
export SONAR_RUNNER_OPTS="-Xmx512m -XX:MaxPermSize=128m"

On Windows environments, avoid the double-quotes, since they get misinterpreted, turning the two parameters into a single one.

Code Block
languagenone
set SONAR_RUNNER_OPTS=-Xmx512m -XX:MaxPermSize=128m

Migrating from Sonar Runner 1.X to Sonar Runner 2.0

Replace the following properties in the sonar-project.properties file:

  • sources => sonar.sources
  • tests => sonar.tests
  • binaries => sonar.binaries
  • libraries => sonar.libraries
Explicitly set the sonar.sourceEncoding property in the sonar-project.properties file.
frameborder0
height10
srchttp://redirect.sonarsource.com/doc/analyzing-with-sq-runner.html

Documentation has been moved to http://redirect.sonarsource.com/doc/analyzing-with-sq-runner.html.

Documentation has been moved to http://redirect.sonarsource.com/doc/analyzing-with-sq-runner.html.