我有一个Java项目.根据Jacoco eclipse插件(EclEmma Java代码覆盖率2.3.1.201405111647),该项目的代码覆盖率为22.3%.我生成.exec报告并将其提供给SonarQube并使用声纳运行器进行分析.结果,SonarQube的Web界面上显示的代码覆盖率为20.2%.软件包级别的coverage值也不同于Jacoco的eclipse插件显示的值.那怎么可能? SonarQube是否从Jacoco生成的.exec报告中获取值?
解决方法:
Jacoco基于字节码分析. exec文件与类文件结合在一起以获取最终的代码覆盖率值.在我的案例中,问题在于,Eclipse的Java编译器(用于Jacoco eclipse插件)生成的字节码与Javac的(在声纳运行程序分析期间)生成的字节码不同.因此,两个工具生成的代码覆盖率值是不同的.