Prerequisite
Sonarqube is installed (Create a new project named 'shootout')Sonar scanner is installed
Anaconda is installed
Install nose and coverage
pip install nose pip install coverage
Python Project structure
main.py
sample/
hello.py
testcase/
test.py
Sonar property file
create sonar-project.properties under the root folderContents of the file
sonar.projectKey=shootout #corresponds to the project name in Sonarqube sonar.projectName=Penalty shootout sonar.projectVersion=1.0 sonar.language=py sonar.python.xunit.reportPath=nosetests.xml sonar.python.coverage.reportPaths=coverage.xml sonar.python.xunit.skipDetails=true sonar.coverage.exclusions=testcase/**/*
Activate the Anaconda virtual environment
Note: It appears that nose can only run in the virtual environment, hence the need of the activation.conda init
Generate nosetests.xml and coverage.xml
coverage erase
nosetests --with-coverage --with-xunit coverage xml
Analyze the project
sonar-scanner
View the result
http://localhost:9000
Troubleshooting
https://github.com/sunmingtao/sample-code/issues/11https://github.com/sunmingtao/sample-code/issues/12
https://github.com/sunmingtao/sample-code/issues/13
https://github.com/sunmingtao/sample-code/issues/14
https://github.com/sunmingtao/sample-code/issues/15
https://github.com/sunmingtao/sample-code/issues/16