我正在使用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 PHPUnit不会检查被忽略的文件,因此它们不包含在报告中。 PHPUnit扫描的每个文件都会报告。如果文件没有覆盖,则会报告该文件没有覆盖。