PHPUnit+;无法导出的覆盖率与实际xml结果不匹配

PHPUnit+;无法导出的覆盖率与实际xml结果不匹配,phpunit,sonarqube,Phpunit,Sonarqube,sonarqube:5.1.2 声纳跑步者:2.2.1 php插件:2.6 PHPUnit 4.2.6 我们正在应用程序上运行phpunit,但我无法按预期在sonar上获得正确的覆盖率% 在我的phpunit.xml中,我们有一些过滤器,它们定义了我们只想涵盖的文件夹 <whitelist addUncoveredFilesFromWhitelist="false"> <directory>./site-library-php/src/main/

sonarqube:5.1.2 声纳跑步者:2.2.1 php插件:2.6 PHPUnit 4.2.6

我们正在应用程序上运行phpunit,但我无法按预期在sonar上获得正确的覆盖率%

在我的phpunit.xml中,我们有一些过滤器,它们定义了我们只想涵盖的文件夹

<whitelist addUncoveredFilesFromWhitelist="false">
            <directory>./site-library-php/src/main/php/BabelCentral/Model/Content</directory>
        </whitelist>
查看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
一切似乎都很顺利。然而,sonar将报告一个不同的结果,覆盖整个源文件夹。这些是仪表板上显示的数字

Unit Tests Coverage 1.8%
line coverage 1.8%
Unit test success 95.9% 
是否有声纳方面的phpunit配置的过滤器

注: 如果我明确地设置

php-module.sonar.sources

到我想要的目录/文件。只是逗号分隔的配置比phpunit的xml配置更难管理。

定义应该由SonarQube分析的源文件集至关重要:在这组文件上应用编码规则并计算度量。 因此,
sonar.sources
是一个强制属性,是配置源文件集的主要方式

其他属性可用于优化源文件集:

  • 您可以配置
    sonar.tests
    :测试文件将自动从
    sonar.sources
    中排除
  • 您可能需要使用
    sonar.excludes
    排除一些其他PHP文件,如依赖项或生成的代码
您还应该意识到,几个插件可能有助于项目的全球覆盖:如果您安装了JavaScript插件,并且
sonar.sources
包含JavaScript文件,则在计算覆盖率指标时也会考虑这些插件


如果您只对调整覆盖率感兴趣,您可以使用
sonar.coverage.excludes

将文件从覆盖率度量中排除,您会注意到我还以html格式导出了覆盖率-这是供开发人员使用的,因此我们可以在本地计算机上运行时看到我们实际覆盖了多少。是的。。我想声纳是唯一的办法。我只是很难管理逗号分隔的配置。有没有一种方法可以让功能请求允许阵列?类似于:sonar.sources[]=src/modules-sonar.sources[]=src/models-sonar.sources[]=src/helpers抱歉,我看不出这样的配置如何更容易管理。您好,如果我不清楚,很抱歉。我只是觉得更难跟踪。但这对我来说可能是独一无二的。你看,我们正在将代码迁移到一种更为测试驱动的风格,现在我们只想将覆盖范围集中在14个文件/文件夹上。我想我们只能使用逗号分隔的配置。当越来越多的代码是可测试的,并且我们能够减少配置时,这应该不会那么痛苦。将此标记为答案。谢谢
php-module.sonar.sources