我在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正确合并覆盖范围?
答案 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
这似乎为我做了伎俩