我正在使用 Sonar 查看有关我们 PHP 项目的报告。到目前为止效果很好,但我遇到了障碍。代码覆盖率似乎忽略了过滤的文件。
我的 Ant 配置采用 Solar PHP 插件的所有模块并将它们置于“analyzeOnly”模式以仅解析模块的输出(其中我已在 ant 中分解为单独的构建目标)。效果很好,Sonar PHP 插件在控制台中运行时的路径输出似乎与我的所有构建日志匹配。除了 PHPUnit 代码覆盖率 sonar.phpUnit.coverageReportFile 之外,一切似乎都在摄取和解析。我相信我的 PHPUnit 配置设置正确。当我查看代码覆盖率的 HTML 输出时,报告中只有过滤后的文件,产生 80% 的代码覆盖率。当我使用 Sonar 分析 clover 样式的 xml 输出(该文件仅包含正确扫描的文件)时,Sonar 显示只有 17% 的代码覆盖率。这是因为它说我所有被忽略的文件的覆盖率都是 0%。
我做了一些背景研究,一些答案似乎导致了 2 年前的一个错误,该错误已被关闭。这是在带有最新 PHP 插件的当前 3.4.1 版本的 Sonar 上。有任何想法吗?我需要在其他地方排除文件吗?
蚂蚁设置:`
<property name="sonar.phpUnit.analyzeOnly" value="true"/>
<property name="sonar.phpUnit.reportFileName" value="../../../build/logs/junit.xml"/>
<property name="sonar.phpUnit.coverage.analyzeOnly" value="true" />
<property name="sonar.phpUnit.coverageReportFile" value="../../../build/logs/clover.xml" />`
编辑:这可能与以下内容有关:http: //jira.codehaus.org/browse/SONARPLUGINS-1394 PHPUnit 不检查忽略的文件,因此它们不包含在报告中。PHPUnit 扫描的每个文件都会报告。如果文件没有覆盖,它会报告文件没有覆盖。