Vin*_*t F 8 java lombok sonarqube jacoco-maven-plugin
最新的Jacoco插件(仍然是快照版本,0.7.10-SNAPSHOT),有一个很好的新功能来过滤掉Lombok生成的代码(https://github.com/jacoco/jacoco/wiki/FilteringOptions).我们需要做的就是在存储库的根目录下添加一个lombok.config文件
lombok.addLombokGeneratedAnnotation=true
Run Code Online (Sandbox Code Playgroud)
当我在内部生成Jacoco报告时,我看到了差异,我很高兴.
但是,当我的常规质量工作执行并将结果发布到Sonar时,我会得到不同的(即更糟糕的)结果.
为什么我的本地报告和声纳中没有相同的结果?有没有解决方法?
谢谢
文森特
Vin*_*t F 12
正如这里提到的:https://github.com/jacoco/jacoco/pull/513#issuecomment-293176354
在生成报告(创建html,xml等)时执行过滤,而不是在收集执行信息(创建exec文件)时执行.因此,工具直接读取执行数据而不是读取xml(这是一种错误,他们依靠纯粹的内部中间格式,但做了什么)并创建自己的报告(如SonarQube,Jenkins等) )一旦它将被释放,将需要更新它们对JaCoCo的依赖性,以便过滤报告.在我们的发布完成后,我们将明确通知下游项目(特别是上面提到的所有项目).再一次 - 请耐心等待.谢谢你的理解.
我没有找到Sonar阅读结束报告而不是exec文件的方法,所以我想我们需要耐心等待官方0.7.10 jacoco插件发布,然后更新Sonar方面!
------更新2018年5月9日
新版本已经发布,我可以确认它对我有用.
使用:
我现在得到更好的覆盖结果报告给Sonar,因为Lombok生成的代码现在被忽略了.它确实有助于确定"真正的"未覆盖区域是什么,以及它是否有风险.
首先你必须检查你的lombok版本至少是1.16.14
pom.xml :
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
<version>1.16.14</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
然后你必须检查你的 Jacoco 版本是否至少是0.8.0
pom.xml :
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.0</version>
<!-- // -->
</plugin>
Run Code Online (Sandbox Code Playgroud)
然后你必须lombok.config
在src
你的项目的文件夹中添加一个文件(不在resources
文件夹中)
lombok.config:
# tells Lombok that this is the root directory and that it shouldn’t search parent directories for more configuration files
config.stopBubbling = true
# tells Lombok to add @lombok.Generated annotation to all generated methods
lombok.addLombokGeneratedAnnotation = true
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6659 次 |
最近记录: |