我正在使用Sonar查看有关PHP项目的报告 . 到目前为止它已经很好了,但我遇到了障碍 . 代码覆盖似乎忽略了过滤的文件 .

我的Ant配置获取所有Solar PHP Plugin的模块,并将它们置于“analyzeOnly”模式,以便解析模块的输出(我已经将其分解为ant中的单独构建目标) . 这很好,在控制台中运行的Sonar PHP插件的路径输出似乎与我的所有构建日志相匹配 . 除了PHPUnit代码覆盖,sonar.phpUnit.coverageReportFile之外,一切似乎都在摄取和解析 . 我相信我的PHPUnit配置设置正确 . 当我查看代码覆盖率的HTML输出时,只有过滤后的文件在报告中,产生80%的代码覆盖率 . 当我使用Sonar分析三叶草样式的xml输出(此文件仅包含正确扫描的文件)时,Sonar仅显示17%的代码覆盖率 . 这是因为它说我所有被忽略的文件都有0%的覆盖率 . 这些被忽略是有原因的,其中一些是配置类型数组(Zend Framework 2),其他是我自己的测试用例 .

我做了一些背景研究,一些答案似乎导致了2年前关闭的错误 . 这是使用最新PHP插件的当前3.4.1版本的Sonar . 有任何想法吗?我是否需要在其他地方排除文件?

Ant设置:`

<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报告中包含被忽略的文件't checked by PHPUnit, so they aren't . PHPUnit扫描的每个文件都会报告 . 如果文件没有覆盖,则会报告该文件没有覆盖 .