与引用的 SonarQube 服务器相比,SonarLint 没有显示所有记录

SonarLint is not showing all records compared to referenced SonarQube server

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

通常的区别之一是 "Variable could be declared final"。

我的一位使用 SonarLint for IntelliJIdea 的同事也有类似的问题(Idea 版本 2016.1.1,SonarLint 2.0.2,示例文件 - 与 IDE [=20= 中用于比较的相同]293 个错误).

我想知道为什么对服务器甚至 IDEs 之间会有这样的差异。

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

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

其次,SonarLint 显示的问题少于或多于 SonarQube 有一些已知原因:

  • 一些基于指标的规则仅在 SonarQube 中计算。例如:
    • (线路或分支)覆盖不足
    • 评论密度不足
    • 重复代码
  • 您可能已经在 SonarQube 上定义了问题排除,但 SonarLint 中尚未考虑这些问题
    • 但这很快就会到来
  • 您可能已经在 SonarQube 上定义了源代码排除项,但 SonarLint 中尚未考虑这些
    • 但这很快就会到来

我遇到了类似的问题,如下例所示: SonarLint 2.0.2:99 个问题。 SonarQube 5.4 UI:116 个问题。 属于 Checkstyle 插件的 2 个规则引起的差异。

正如您所说的 "Variable could be declared final" 我假设您遗漏问题背后的规则是 pmd:LocalVariableCouldBeFinal,它属于 PMD 插件。

Fabrice 在 SonarQube Google Group they "won't add support for any external engine": SonarQube Google Group(PMD、Checkstyle、 Findbugs 和其他...)

很遗憾,我们只能使用 SonarLint rules list 中提到的规则,这些规则由 SonarQube 开箱即用(即他们的 Java 插件)。

如果你只是点击项目,它不会工作,你需要进入项目并点击 java 文件,一旦你开始点击存在的 Java 文件在 Project.You 中会看到 SonarLint 被激活并向您显示所有错误 present.It 对我有用