sonarqube:5.1.2 声纳 - 跑步者:2.2.1 php插件:2.6 PHPUnit 4.2.6
我们在我们的应用程序上运行phpunit,但是我无法按预期在声纳上获得正确的覆盖率。
在我的phpunit.xml中,我们有过滤器,用于定义我们只想覆盖的文件夹。
<whitelist addUncoveredFilesFromWhitelist="false">
<directory>./site-library-php/src/main/php/BabelCentral/Model/Content</directory>
</whitelist>
在我的声纳属性中
sonar.modules=php-module
php-module.sonar.phpUnit.coverage.analyzeOnly=true
php-module.sonar.phpUnit.analyzeOnly=true
php-module.sonar.php.tests.reportPath=site-main-php/src/test/target/reports/phpunit.xml
php-module.sonar.php.coverage.reportPath=site-main-php/src/test/target/reports/phpunit.coverage.xml
查看jenkins上的日志,测试似乎运行正常,结束于:
Tests: 1479, Assertions: 4165, Failures: 58, Incomplete: 14, Skipped: 55.
Generating code coverage report in Clover XML format ... done
Generating code coverage report in HTML format ... done
// further down
11:47:51.973 INFO - Analyzing PHPUnit test report: site-main-php/src/test/target/reports/phpunit.xml with org.sonar.plugins.php.phpunit.PhpUnitResultParser@35e7e715
11:47:52.604 INFO - Analyzing PHPUnit unit test coverage report: site-main-php/src/test/target/reports/phpunit.coverage.xml with PHPUnit Unit Test Coverage Result Parser
一切似乎都运作良好。但是,声纳会报告不同的结果,覆盖整个源文件夹。这些是仪表板上显示的数字。
Unit Tests Coverage 1.8%
line coverage 1.8%
Unit test success 95.9%
是否有声纳尊重phpunit配置的过滤器?
注意: 如果我明确设置
,我就可以在覆盖范围内达到所需的数字php-module.sonar.sources
到我想要的目录/文件。就是这样,逗号分隔的配置很难管理,而不是phpunit的xml配置。
答案 0 :(得分:0)
定义SonarQube应该分析的源文件集是至关重要的:它应用于这组文件,应用编码规则并计算度量。
因此sonar.sources
是强制属性,是配置源文件集的主要方式。
其他属性可用于优化源文件集:
sonar.tests
:测试文件会自动从sonar.sources
排除。sonar.exclusions
排除其他一些PHP文件,例如依赖项或生成的代码。您还应该知道,有几个插件可能会对项目的全局覆盖做出贡献:如果您安装了JavaScript插件,并且sonar.sources
包含JavaScript文件,那么在计算覆盖率指标时也会考虑这些插件
如果您只想调整覆盖率,则可以使用sonar.coverage.exclusions
从覆盖率指标中排除文件。