python项目的sonarqube没有显示任何测试覆盖率

Posted

技术标签:

【中文标题】python项目的sonarqube没有显示任何测试覆盖率【英文标题】:sonarqube for python project not showing any test coverage 【发布时间】:2018-06-29 19:20:15 【问题描述】:

我使用下面给出的 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 单元测试脚本。请提出一种方法,以便我可以在 sonarqube 中获取我的 python 项目的代码覆盖率报告。提前致谢。

【问题讨论】:

【参考方案1】:

SonarQube 不计算代码覆盖率。它只显示其他工具提供的结果。

您必须执行一个计算代码覆盖率的工具(例如Coverage.py),然后添加分析参数:

sonar.python.coverage.reportPath - 单元测试结果的报告路径 sonar.python.coverage.itReportPath - 集成测试结果的报告路径

您可以阅读 SonarQube wiki 上的所有内容:https://docs.sonarqube.org/display/PLUG/Python+Coverage+Results+Import

【讨论】:

【参考方案2】:

您需要一个代码覆盖率工具来分析项目代码中有多少被单元测试覆盖。

如前所述,其中一个工具是coverage

coverage 工具可用于生成与 SonarQube 兼容的 XML 报告,然后将其上传到 SonarQube。

安装后,运行coverage xml

在你的sonar-project.properties 添加:

sonar.python.coverage.reportPath=coverage.xml

记得将自动生成的覆盖输出文件添加到.gitignore

.coverage
coverage.xml

【讨论】:

以上是关于python项目的sonarqube没有显示任何测试覆盖率的主要内容,如果未能解决你的问题,请参考以下文章

Sonarqube for Ubuntu 成功扫描 .NET 项目,但未分析任何问题

SonarQube 覆盖范围未显示

Sonarqube 没有正确显示 Java 项目的测试覆盖率

如何获取过去 6 个月内为 sonarqube 创建的项目的报告?

SonarQube - 无法连接到没有代理的更新中心

SonarQube 覆盖多模块项目