Description / Features
This plugin enables the analysis of Python projects.
Current feature list:
- Recognition of basic program entities:
- Python modules
- Python packages
- Provides basic size metrics:
- files (number of)
- lines
- lines of comments
- lines of code
- Static code checking via pylint (covering as well code style as code defects aspects)
- Provides cyclomatic complexity metrics including:
- Complexity per function/method
- Complexity per module
- Complexity distributions
- Recognition of code duplication
- Basic highlighting mode for Python in Sonar UI
Dependencies
This plugin has following dependencies:
- For complexity analysis the Python interpreter is needed, anything >=2.5 will do.
- Pylint is used for the rules compliance analysis.
Installation
- Copy the jar-archive into <sonar home>
/extensions/plugins/directory - Restart the Sonar web server
Configuration
Python plugin uses the following properties during analysis. See here for the ways how to pass them to the plugin.
Property | Scope | Example | Description |
|---|---|---|---|
| sonar.python.pylint | System-wide | /usr/local/bin/pylint | Path to the pylint executable to use in pylint analysis. Set to empty to use the default one. |
| sonar.python.pylint_config | Project-wide | .pylintrc | Path to the pylint configuration file (relative to project root) to use in pylint analysis. Set to empty to use the default. |
| sonar.python.path | Project-wide | engine,utils | Comma separated list of paths relative to project root to add to PYTHONPATH when executing pylint. |
Usage
You can analyze your projects using the usual means (see this page for all available). Just make sure to set a couple of properties. See below how to do it for maven and sonar-runner.
Analyzing with maven
Add your source directories to the build and the language-property to the properties section of your pom. Syntax:
<properties> ... <sonar.language>py</sonar.language> ... </properties> <build> ... <sourceDirectory> path </sourceDirectdory> ... </build>
Make sure the dynamic analysis is not switched of. Syntax:
<properties> ... <sonar.dynamicAnalysis>true<sonar.dynamicAnalysis> ... </properties>
- Make sure sonar-server is running
Start the analysis with
"mvn sonar:sonar"
See here for general information about analyzing via maven.
Analyzing with sonar-runner
- Add a
sonar-project.properties-file to the root directory of your project - Set
sonar.languagetopy.Syntax:
sonar.language=py
- Make sure your sonar-server is running
- run
sonar-runnerin the directory containing thesonar-project.properties-file
See here for general information about analyzing via sonar-runner.
Sample Project
... is available here.
Changelog

