SonarQube和SonarLint的区别

Jee*_*ese 67 sonarqube sonarlint

sonarQube究竟与SonarLint有什么不同?SonarQube有一个与之关联的服务器,Sonar lint更像是一个插件.但他们的具体区别是什么?

Fab*_*eam 106

SonarLint仅存在于IDE(IntelliJ,Eclipse和Visual Studio)中.其目的是在您键入代码时提供即时反馈.为此,它专注于您要添加或更新的代码.

SonarQube是一个处理完整分析的中央服务器(由各种SonarQube扫描仪触发).其目的是为您提供360°的代码库质量愿景.为此,它会定期分析项目的所有源代码行.

SonarLint和SonarQube都依赖于相同的静态源代码分析器 - 其中大多数是使用SonarSource技术编写的.

  • 您应该将SonarLint"连接"到SonarQube并将本地项目(在IDE中)绑定到远程项目(在SonarQube中),以确保您在两个世界中使用相同的质量配置文件(=规则集). (5认同)
  • 谢谢@Fabrice!但还有一个后续问题。我发现同一版本的代码库的 sonarqube 和 sonar lint 报告存在差异。这是导致我写这个问题的最初问题。可能是什么问题? (2认同)
  • 您可能会发现这很有趣;本文帮助我了解了 3 种不同 SonarQube 启动模式之间的区别:分析(谁在 SonarQube UI 中生成报告)、预览和增量(由 SonarLint 使用)。https://blog.sonarsource.com/analysis-vs-preview-vs-incremental-preview-in-sonarqube/ (2认同)
  • @Y-BCause,该文章有更新的链接吗?2017年的那个已经死了。谢谢 (2认同)

gui*_*lum 20

应该补充一点,SonarQube还使用第三方分析器(findBugs,checkstyle,PMD)执行扫描,而SonarLint 包括那些.我认为原因是性能优先,findBugs依赖java字节码.

因此,如果基础质量配置文件使用第三方扫描仪,您在SonarQube和SonarLint中的发现可能会有所不同.

  • @ Fabrice-SonarSourceTeam我理解你的推理,这对于默认的FindBugs和PMD也许如此,但在应用程序安全领域,即FindSecurityBugs(https://find-sec-bugs.github.io/),我认为是最好的漏洞扫描,SonarJava不足. (3认同)
  • 你是对的@guitarlum,主要原因不是你提到的那个,但事实上我们真的相信SonarJava(SonarSource开发的Java分析器)完全超越了PMD + Findbugs. (2认同)

yug*_*yug 7

SonarQube是一个服务器,您可以在其中托管您的项目并执行分析,而SonarLint是一个代理,允许我们与此 SonarQube 连接并远程执行分析。SonarLint 可以与 IDE 一起使用,也可以通过 CLI 命令执行。

SonarLint 包含它自己的一组默认规则,但是当连接到 SonarQube 时,用户可以从 SonarQube 导入规则,这些规则实际上不仅仅是一组标准规则。我们可以在 SonarQube 上集成 PDM、CodeStyle 和许多其他检查器并创建自定义规则。

我想提一下我从经验中学到的两个事实,SonarLint 不会从 SonarQube 继承这些自定义规则,其次 Sonar 不适用于测试类。