php - Jenkins PHP 单元测试和代码覆盖率无法导入到 SonarQube 中

标签 php testing jenkins sonarqube code-coverage

我一直在努力将单元测试结果和代码覆盖率从 Jenkins 导入 SonarQube。此时,我已经验证了结果正在生成,因为它们显示在 Jenkins 的项目页面中。

sonar.properties 文件如下所示。 php 结果是使用 phpunit 创建的,代码覆盖率是使用 phpunit 和 clover 创建的。为了排除故障,我添加了 sonar.php.coverage.reportPath 和 sonar.clover.reportPath。

sonar.projectKey=projectKey
sonar.projectName=projectKey
sonar.projectVersion=1.0
sonar.language=php
sonar.sourceEncoding=UTF-8

sonar.php.tests.reportPath=report/phpunitresults.xml
sonar.php.coverage.reportPath=report/clover_code_coverage.xml
sonar.clover.reportPath=report/clover_code_coverage.xml 

sonar.sources=./src/
sonar.exclusions=./src/tests/**
sonar.tests=./src/tests/
sonar.coverage.exclusions=./src/tests/**/*.php

所有结果 单元测试覆盖率 0.0% 线路覆盖 0.0%

Jenkins 构建不会产生任何错误或有助于识别结果未导入问题的有用信息。

谁能帮忙解决这个问题吗?

谢谢。

最佳答案

我的问题是,覆盖率报告是在与运行 sonar-scanner 的服务器不同的服务器上生成的,并且 clover.xml 中的绝对路径不同。

解决方案是修复路径:

replace="s|/home/bamboo/project/|`pwd`/|g"
sed -i -- $replace report/*.xml

关于php - Jenkins PHP 单元测试和代码覆盖率无法导入到 SonarQube 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31840022/

相关文章:

php - 使用多个用户选择从数据库中过滤数据

unit-testing - 在 Pony 中所有行为结束后运行函数/行为

jenkins - 如何在 Jenkins 管道中使用运行参数

jenkins - 谷歌云存储: Output path does not exist or is not writeable

javascript - 自动点击加载更多但自动点击仅在第一次手动点击后触发

php - 使用 NSData 将日期从 xCode 传递到 PHP

testing - 使用函数式语言实现 UI 自动化

testing - 如何在使用 Cypress 的 E2E 测试中登录 Auth0?

Jenkins Job DSL 插件 - 包含另一个 Jenkinsfile

PHPUnit 被安装到错误的目录