Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sonarqube 6.2和PHP插件的覆盖范围不正确_Php_Sonarqube_Code Analysis_Static Analysis - Fatal编程技术网

Sonarqube 6.2和PHP插件的覆盖范围不正确

Sonarqube 6.2和PHP插件的覆盖范围不正确,php,sonarqube,code-analysis,static-analysis,Php,Sonarqube,Code Analysis,Static Analysis,最近我将SonarQube安装到了6.2版。我注意到代码覆盖率指标已经显著降低。在coverage details中,我可以看到带有@codeCoverageIgnore注释或接口的文件没有显示行。看起来像是Sonar通过Sonar.sources在Sonar project.properties中指向的目录中每个所有文件的覆盖行数(来自PHPUnit的xml输出日志)计算覆盖率 在我的服务器上安装SonarQube之前,我一直在玩运行在Docker官方镜像上的6.1版,它的工作非常出色 我没有

最近我将SonarQube安装到了6.2版。我注意到代码覆盖率指标已经显著降低。在coverage details中,我可以看到带有
@codeCoverageIgnore
注释或接口的文件没有显示行。看起来像是Sonar通过
Sonar.sources
Sonar project.properties
中指向的目录中每个所有文件的覆盖行数(来自PHPUnit的xml输出日志)计算覆盖率

在我的服务器上安装SonarQube之前,我一直在玩运行在Docker官方镜像上的6.1版,它的工作非常出色

我没有发现与此类问题相关的公开问题/股票代码/类似问题,因此可能我做错了什么

详情:

  • PHPUnit 5.7.5正在使用以下命令运行:
phpunit--coverage clover=build/phpunit.coverage.xml--log junit=build/phpunit.log.xml

  • SonarQube 6.2(从apt官方存储库安装)
  • SonarQube扫描仪2.8
  • SonarQube的PHP插件2.9.2.1744

使用SonarQube 6.2和SonarPHP 2.9.2会降低您的覆盖率,因为这些版本(以及更高版本)的组合会提供“可执行行”数据,这样覆盖率就可以“强制为零”覆盖率报告中未包含的文件

也就是说,SonarQube 6.2旨在让您更准确地了解您的真实覆盖率。在此之前,它必须依赖覆盖引擎提供的文件和行列表,而许多覆盖引擎只是忽略(即不包括在其报告中)没有测试任何行的文件。现在代码分析器(在本例中为SonarPHP)正在为覆盖率引擎忽略的所有文件提供一个可执行行列表,因此未覆盖行的比率较大,因此覆盖率有所下降

如果你想让你的保险范围恢复到原来的水平,你有两个选择:

  • 写更多的测试-p
  • 为未覆盖的文件添加

  • 感谢您的回复:)真实覆盖率的概念很好,但是当一个带有接口的文件根本没有被覆盖,并且没有办法解决这个问题(仅通过排除)时,这就有点奇怪了。我收到错误的警报,新代码已经暴露了行,有时很难找到应该修复而不是忽略的文件。我担心我的团队将开始放弃报告的问题,因为他们会认为Sonar可能是错误的,所以不值得去看。请将此类FP报告给