我使用下面给出的docker compose在我的MAC机器上安装了sonarqube。
version: "2"
services:
sonarqube:
image: sonarqube
ports:
- "9000:9000"
networks:
- sonarnet
environment:
- SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar
volumes:
- sonarqube_conf:/opt/sonarqube/conf
- sonarqube_data:/opt/sonarqube/data
- sonarqube_extensions:/opt/sonarqube/extensions
- sonarqube_bundled-plugins:/opt/sonarqube/lib/bundled-plugins
db:
image: postgres
networks:
- sonarnet
environment:
- POSTGRES_USER=sonar
- POSTGRES_PASSWORD=sonar
volumes:
- postgresql:/var/lib/postgresql
# This needs explicit mapping due to https://github.com/docker-library/postgres/blob/4e48e3228a30763913ece952c611e5e9b95c8759/Dockerfile.template#L52
- postgresql_data:/var/lib/postgresql/data
networks:
sonarnet:
driver: bridge
volumes:
sonarqube_conf:
sonarqube_data:
sonarqube_extensions:
sonarqube_bundled-plugins:
postgresql:
postgresql_data:
之后我使用了命令
sonar-scanner
使用sonarqube分析项目。
分析报告如上所示。如果你注意到,代码覆盖部分是空白的,即使我已经编写了一些python unittest脚本。请建议一种方法,以便我可以在sonarqube中获取我的python项目的代码覆盖率报告。提前谢谢。
答案 0 :(得分:2)
SonarQube不计算代码覆盖率。它仅显示其他工具提供的结果。
您必须执行一个计算代码覆盖率的工具(例如Coverage.py),然后添加分析参数:
sonar.python.coverage.reportPath
- 单元测试结果的报告路径sonar.python.coverage.itReportPath
- 集成测试结果的报告路径您可以阅读SonarQube wiki上的所有内容:https://docs.sonarqube.org/display/PLUG/Python+Coverage+Results+Import
答案 1 :(得分:0)
您需要一个代码覆盖率工具来分析单元测试覆盖的项目代码量。
如上所述,其中一种工具是NSTextAttachment
。
coverage
工具可用于生成与SonarQube兼容的XML报告,然后将其上载到SonarQube。
安装后,运行coverage
。
在您的coverage xml
中添加:
sonar-project.properties
请记住将自动生成的coverage输出文件添加到sonar.python.coverage.reportPath=coverage.xml
:
.gitignore