有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Sonarqube gradle插件覆盖Lombok

在gradle项目中,我有一个用Lombok的@Data注释的类,使用Sonarqube和Jacoco插件

源代码可在here on github

我有一个本地运行的sonarqube server作为docker容器运行,开始时是这样的:

docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 sonarqube  

我添加了一个“lombok.config”文件,要求它添加@lombok。根据文档中的全局配置键部分here,对其生成的代码生成注释

lombok.addLombokGeneratedAnnotation = true

我有以下声纳条件配置

enter image description here

当我第一次运行sonarqube目标时,它会报告项目通过

enter image description here

如果我换了龙目山。添加LombokGeneratedAnnotation为false,然后重新运行sonarqube目标,它报告出现故障:

enter image description here

如果我换了龙目山。addLombokGeneratedAnnotation返回true,然后再次运行,sonarqube报告该项目仍然失败。我无法让这个项目再次通过

然后我在构建中更改了组名。gradle文件,强制sonarqube gradle插件在sonarqube服务器中创建新项目。当我这样做时,项目再次通过

在此过程中,我从未更改过任何源代码

请问有人知道为什么Sonarqube会这样吗


共 (2) 个答案

  1. # 1 楼答案

    作为将来的参考,我们发现通过将SonarJava插件更新到最新的5.1.1版本,问题得到了解决

    我认为这张5.1版的票,升级到Jacoco 0.8.0,可能是开始向@Lombok致敬的东西。生成的注释

    enter image description here

  2. # 2 楼答案

    I've never changed any of the source code during this process.

    哦,但你有。或者更确切地说,Lombok通过在代码中插入(或不插入)注释来实现

    您使用的是只查看“新代码”的质量门。在您的第一次分析中,没有新的代码,因此没有任何代码可以考虑。然后你旋转你的龙目设置,重新生成和分析。Lombok显然对代码进行了一些更改。我从来没有使用过Lombok,所以我无法详细介绍这里发生了什么,但你可以点击项目主页上新的覆盖率相关指标,以获得文件列表。钻取一个文件,查看其中被认为是“新”的内容(黄色高亮显示)。查看边缘标记(红色、绿色、黄色条纹)以查看被视为覆盖的内容

    N.B.您的质量关卡目前要求对新代码中的条件进行99%的覆盖。这是不现实的,已经超过了回报递减的程度。你应该重新考虑这个值。IMO 85-95%更现实,这取决于你的团队