10

我们在连接模式下使用 SonarQube 服务器版本 5.3 和 SonarLint 2.0。作为 IDE,我们使用 Eclipse Mars 2.0,当我们将 SonarQube 服务器找到的结果与 SonarLint 在 IDE 中找到的结果进行比较时,结果不同(IDE 中的示例文件274 错误SonarQube 中的 826 个问题!)。

通常的区别之一是“变量可以声明为最终变量”。

我的一位将 SonarLint 用于 IntelliJIdea 的同事也遇到了类似的问题(Idea 版本 2016.1.1,SonarLint 2.0.2,示例文件 - 与 IDE 293 错误中用于比较的相同)。

我想知道为什么对服务器甚至 IDE 之间存在这种差异。

有人可以帮我解决这个问题吗?谢谢。

4

3 回答 3

13

我面临着类似的问题,如下例所示:SonarLint 2.0.2: 99 issues。SonarQube 5.4 用户界面:116 个问题。由属于 Checkstyle 插件的 2 条规则引起的差异。

当您谈论“变量可以被宣布为最终变量”时,我假设您缺少问题背后的规则是pmd:LocalVariableCouldBeFinal,它属于 PMD 插件。

Fabrice 在 SonarQube Google Group 中对此主题发表了评论,他们“不会添加对任何外部引擎的支持”SonarQube Google Group(PMD、Checkstyle、Findbugs 等都是如此……)

所以遗憾的是,我们只能使用SonarQube 开箱即用提供的SonarLint 规则列表中提到的规则(即他们的 Java 插件)。

于 2016-05-12T10:35:29.437 回答
7

首先,SonarQube 对您的项目进行全面分析,而 SonarLint 仅分析您打开的文件。所以我真的不知道您对问题计数的比较如何有意义(除非您在 Eclipse 中一一打开所有文件)。

其次,SonarLint 显示的问题比 SonarQube 更少或更多的原因有一些:

  • 一些基于度量的规则仅在 SonarQube 中计算。例如:
    • (线路或分支)覆盖范围不足
    • 评论密度不足
    • 重复代码
  • 您可能在 SonarQube 上定义了问题排除项,SonarLint 中尚未考虑这些排除项
    • 但这很快就会到来
  • 您可能在 SonarQube 上定义了源代码排除项,SonarLint 中尚未考虑这些排除项
    • 但这很快就会到来
于 2016-05-11T11:41:02.200 回答
-1

如果您只是单击项目,它将不起作用,您需要进入项目并单击 java 文件,一旦您开始单击项目中存在的 Java 文件。您会看到 SonarLint 被激活并显示给您存在的所有错误。它对我有用

于 2017-04-25T06:20:16.003 回答