gpt4 book ai didi

java - Cobertura 改变了 Sonar 违规行为

转载 作者:行者123 更新时间:2023-11-30 03:06:25 24 4
gpt4 key购买 nike

我的同事今天早上发现,在启用 Cobertura 的情况下编译项目会更改同一项目的 Sonar 结果。

在这个特定项目中,我们使用 sonar:sonar 运行构建,然后使用 cobertura:cobertura sonar:sonar 再次运行它。

比较中的 Sonar 结果现在显示,如果没有 Cobertura,我们会出现 7/78/153/24/0 违反 5 种严重程度的情况,但使用 Cobertura 后,它会更改为 7/81/94/24/0,特别是发现了 3 个新的严重违规行为和 15 个新的重大违规行为,这些违规行为在没有 Cobertura 的情况下是找不到的。

最大的变化之一是,如果没有 Cobertura,则会出现 60 起针对空方法(其中许多是构造函数)的违反规则的情况,而使用 Cobertura 时,只会报告其中 3 起。

如果 Cobertura 仅阻止发现违规行为,我们可以独立运行这两个分析,但由于只有在启用 Cobertura 的情况下才能发现某些违规行为,因此我们似乎必须进行两次单独的 Sonar 分析。

这是已知的交互吗?除了在单独的构建中进行 Cobertura 和 Sonar 之外,还有其他解决方法吗?并使用两组结果来获得最佳数据?

最佳答案

根据您的评论,让我解释一下似乎发生了什么:您正在通过 SonarQube 使用 FindBugs(您提到的规则是 findbugs 规则)

首先让我们考虑一下这里涉及的两个工具以及它们的工作原理(大致):

  • FindBugs:它是一个基于字节码的静态分析工具:它会读取字节码并在检测到不良模式时提出问题。

  • Cobertura:覆盖率工具:它是如何工作的?它通过字节码来放置探测器,并在运行测试时跟踪哪些探测器命中或未命中。

然后您就可以了解问题可能出在哪里:FindBugs 最终分析 Cobertura 检测的字节码。这可以解释为什么您会遇到一些新问题,以及为什么在使用 cobertura 进行分析时会删除一些空方法问题。

为了避免这个问题,你必须确保你的字节码文件在使用 FindBugs 分析时没有被检测,但是(免责声明,我开发了 Sonar java 插件,所以我在这里可能有点偏见;))我建议你停止使用 FindBugs,转而使用 SonarQube Java 分析器,该分析器不会出现此问题,因为其分析器的处理方法略有不同(请参阅此 blog post 关于此内容)

关于java - Cobertura 改变了 Sonar 违规行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34662788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com