- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的同事今天早上发现,在启用 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/
我想澄清一些关于违反 MVVM 的问题。因此,我创建了一个解决方案,其中包含一些项目来演示这些案例。 这是解决方案的定义(项目): View (它是一个 WPF 类库,显然它有 View ) View
这个比较器方法有什么问题? 我已阅读: Java error: Comparison method violates its general contract 并理解,如果 c1 > c2,且 c2
public Integer getMaxCount(String id,String type) { String maxCount ="SELECT MAX(ID) AS COUNT FR
代码如下 #include int main() { auto [a] = std::make_tuple(1); return [a]() -> int { return a;
我正在尝试开发一个应用程序,该应用程序将显示缩放以适合屏幕大小的任意图像。但是,在 EDT 上缩放图像会显着降低 UI,因此我决定使用以下代码在后台线程中缩放图像。 final Runnabl
无论如何,是否可以在 Grails 项目中自动查找 I18N 违规?例如, Enabled: 应该被标记,因为它没有使用 获取标签值。 如果 codenarc 对此有规则,那就太好了,但我认为没有。
我想从 Sonar 中排除一些方法(用于分析目的)。 实际上是自动生成的equals()和hashCode()。没有使用大括号等,我并不总是想修复它们。有没有办法只排除某些方法的范围? 最佳答案 您可
我有一些看起来像这样的代码(我用通用变量替换了我的业务变量): Map map = new HashMap(); for (int i = 1; i < 10; i++) { String s
在使用 IList> 时作为方法声明中的参数类型发生 FXCop 违规 It doesnt nest generic type IList> 我该如何解决? 最佳答案 原因是: A nested ty
我有以下代码,我得到了 PMD 违规 SuspiciousEqualsMethodName。 我想知道为什么这会被视为违规? private boolean areEquals(final Objec
令我惊讶的是,Java 有时可以为您检查比较器契约。 例如,当你写一个不遵循传递性的顺序关系时,你得到 java.lang.IllegalArgumentException: Comparison m
我们有一个头文件,其中包含各种浮点精度的一些残差: template struct rsdTarget { static const double value; }; template <> c
我正在尝试更新一篇博客文章,但我从数据库部分收到了唯一的关键错误,然后我没有使用模型并直接访问 ORM,但又没有成功。 这是我具体要编辑的路线 Route::get('/getedit/{slug}'
需要帮助解决 Sonar 问题。我们正在使用一些在 Maven 公共(public)存储库中不存在的第三方 jar。我将它的依赖定义为: api
我开始使用 CheckThreadViolationRepaintManager 来检测 EDT 违规。 它提示: partner = getParameter("partner",generateP
我有 ViewState POJO 类,它们的构造函数带有许多参数。问题是 PMD 对它们抛出 ExcessiveParameterList 违规。 现在,我试图抑制所有以 ViewState.jav
PMD 失败:...规则:UnusedPrivateMethod 优先级:3 避免未使用的私有(private)方法,例如“printMyString(String)” private void an
我写了一个 lisp 程序,它有两个参数,一个目的地和一个 BST 形式的 map 。它在 BST 中搜索目标号码,如果找到目标则打印 (found: path)。如果未找到,则应该打印(未找到:目的
我有以下 Java 方法: private int calculate() { return (bytes[0] & 0xff) + ((bytes[1] & 0xff) << 8); } P
我一直在思考以下问题。考虑两个文件: A.cpp: template void g(T) {} inline void f() { g(1); } B.cpp: template void g(T)
我是一名优秀的程序员,十分优秀!