【发布时间】:2016-01-21 18:24:09
【问题描述】:
声纳: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配置更难管理。
【问题讨论】:
-
您会注意到我还以 html 格式导出了覆盖范围 - 这是供开发人员使用的,因此当我们在本地机器上运行它时,我们可以看到我们实际覆盖了多少。