Codeception & SonarQube PHP [无法读取 phpUnit 报告]

Codeception & SonarQube PHP [Can't read phpUnit report]

我 运行通过 bamboo CI 服务器在 Yii2 中使用 Codeception,并使用 SonarQube 来帮助 运行 分析。

到目前为止,我已经设法让 SonarPHP 分析 PHP - 这太棒了。但我无法让它包含覆盖率报告。我正在制作三叶草报道报告。

这是我的密码指令:

${bamboo.php} ${bamboo.composer} exec codecept run unit models/HelperTest.php -- --xml --coverage --coverage-xml

sonar.projectKey=CR
sonar.projectName=CCasper Reporting
sonar.projectVersion=4.0
sonar.language=php
sonar.sources=models, controllers, components, modules/api/models, modules/api/controllers
sonar.sourceEncoding=UTF-8
sonar.tests=tests/api/models, tests/unit/models
sonar.php.tests.reportPath=tests/bamboo/report.xml
sonar.php.coverage.reportPath=tests/bamboo/coverage.xml
sonar.php.coverage.itReportPath=tests/bamboo/coverage.xml
sonar.coverage.exclusions=tests/*.php

java.lang.IllegalStateException: Can't read phpUnit report: report.xml Caused by: com.thoughtworks.xstream.mapper.CannotResolveClassException: testsuites : testsuites

我假设这是因为生成的文件:

<?xml version="1.0" encoding="UTF-8"?>
<testsuites>
  <testsuite name="unit" tests="2" assertions="2" errors="0" failures="0" skipped="0" time="0.015625">
    <testcase name="testGetRange" class="tests\models\HelperTest" file="C:\bamboo-home\xml-data\build-dir\CR-QA-JOB1\tests\unit\models\HelperTest.php" assertions="1" time="0.015625"/>
    <testcase name="testBadDateCheckerParam" class="tests\models\HelperTest" file="C:\bamboo-home\xml-data\build-dir\CR-QA-JOB1\tests\unit\models\HelperTest.php" assertions="1" time="0.000000"/>
  </testsuite>
</testsuites>

所以我的问题是,如何让 SonarPHP 5.5.6 正确合并覆盖范围?

我在这上面花了更多时间,并设法使用以下设置集成代码覆盖率。

${bamboo.php} ${bamboo.composer} exec codecept run -- --verbose --xml --coverage --coverage-xml --coverage-html --no-exit

--xml 参数创建一个 JUNIT 文件。 在 bamboo 构建中添加一个 JUNIT 任务,在我的例子中,路径是 /tests/bamboo/*.xml。这是特定于 Yii2 和我自定义创建的 bamboo 文件夹。

--coverage--coverage-xml--coverage-html创建三叶草样式覆盖项。

在构建的 Bamboo 杂项部分中,您可以启用三叶草覆盖。因为它是用 Yii 打包的,所以你只需要点击“Clover 已经集成到这个构建中并且将生成一个 clover.xml 文件。”选项并指定 .xml 文件的路径。

我的是:tests/bamboo/coverage.xml

然后我 运行 声纳扫描仪。我是我的项目根目录,我有以下声纳属性文件。

我的 Sonar PHP 文件(5.56 SonarQube 和假设最新的 PHP 插件是从 Sonar Server Web 界面下载的。

sonar.projectKey=CR

sonar.projectName=CCasper Reporting

sonar.projectVersion=4.0

sonar.language=php

sonar.sources=models, controllers, components, modules/api/models, modules/api/controllers

sonar.sourceEncoding=UTF-8

sonar.php.coverage.reportPath=tests/bamboo/coverage.xml

这似乎对我有用