有两种解决方案:
- 您可以使用 SonarScanner Documentaion 在本地机器上安装 sonar-scanner 由于 sonar-scanner 需要在机器上安装 Java-11,您必须使用
安装 openjdk-11-jdk-headless
sudo apt install openjdk-11-jdk-headless
并使用文档中提供的步骤在您的机器上安装声纳扫描仪。
2. 您可以使用安装了 sonar-scanner 的 docker 镜像作为基础镜像,并使用该镜像构建您自己的带有所需 python 版本和所需软件的 docker 镜像。
例如,您可以使用以下 docker 镜像作为您的 docker 镜像的参考镜像
bluelabseu/sonar-scanner:4.3.0-7879
使用声纳扫描仪图像为 python 项目创建图像的示例 docker 文件。
FROM bluelabseu/sonar-scanner:4.3.0-7248`
RUN apt-get update && apt-get install python2.7 -y && apt-get install python3.6 -y
一旦你有一个 docker 文件,使用它来创建一个 docker 镜像并将它上传到你的项目存储库的 gitlab-container 注册表。
在 python 项目中使用声纳扫描仪:
如果您想将代码覆盖率和代码质量发布到 sonarqube,您必须生成可由任何构建工具生成的测试覆盖率文件。
-
在 sonarqube 管理中添加 python 配置文件的覆盖率报告路径。可以这样设置:
一个。使用管理员用户登录 sonarqube 服务器。
b.转到管理-> 配置-> python -> 测试和覆盖率-> 覆盖率报告的路径。将coverage-reports/*coverage-*.xml 设置为sonar.python.coverage.reportPaths 键的覆盖路径。
例如使用诗歌构建工具生成测试覆盖率报告
poetry run py.test tests/ --cov=<PROJECT_PACKAGE_NAME>/ --cov-report xml:coverage-reports/coverage-result.xml
在您的
上执行以下命令
sonar-scanner -Dsonar.coverage.exclusions=tests/** -Dsonar.python.coverage.reportPaths=coverage-reports/coverage-reports.xml -Dsonar.projectKey=<PROJECT_NAME> -Dsonar.projectName=<PROJECT_NAME> -Dsonar.projectVersion=<<PROJECT_VERSION> -Dsonar.sources=<PROJECT_PACKAGE_NAME> -Dsonar.tests=tests/ -Dsonar.sourceEncoding=UTF-8 -Dsonar.host.url=<SONAR_HOST_SERVER_URL> -Dsonar.login=<SONAR_AUTH_TOKEN>
注意:最好不要在 sonar-scanner.properties 文件中设置任何配置,并在命令本身中使用 -D 参数提供配置