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

时间:2017-06-09 18:07:34

标签: yii2 sonarqube codeception

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

到目前为止,我已经设法让SonarPHP分析PHP - 这很棒。但我无法将其纳入报道范围。我正在制作一份三叶草报道。

这是我的codecept命令:

${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:无法读取phpUnit报告:report.xml   引起: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正确合并覆盖范围?

1 个答案:

答案 0 :(得分:1)

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

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

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

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

在构建版本的Bamboo的其他部分中,您可以启用三叶草覆盖。由于这是与Yii一起打包的,您只需要单击“Clover已经集成到此构建中,并且将生成一个clover.xml文件”。选项并指定.xml文件的路径。

我的是:tests / bamboo / coverage.xml

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

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

  

sonar.projectKey = CR

     

sonar.projectName = CCasper报告

     

sonar.projectVersion = 4.0

     

sonar.language = php

     

sonar.sources =模型,控制器,组件,模块/ api /模型,模块/ api /控制器

     

sonar.sourceEncoding = UTF-8

     

sonar.php.coverage.reportPath =测试/竹/ coverage.xml

这似乎为我做了伎俩