SonarQube和SonarLint的区别


Answers:


131

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

SonarQube是处理全部分析的中央服务器(由各种SonarQube扫描仪触发)。它的目的是对代码库的质量进行360°透视。为此,它会定期分析项目的所有源代码行。

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


谢谢@Fabrice!但是有一个后续问题。我在相同版本的代码库的sonarqube和sonar lint报告中发现差异。这是导致我写这个问题的原始问题。可能是什么问题?
Jeevan Varughese

7
您应该将SonarLint“连接”到SonarQube,并将本地项目(在IDE中)绑定到远程项目(在SonarQube中),以确保在两个领域中都使用相同的质量配置文件(=规则集)。
Fabrice-SonarSource团队2016年

谢谢Fabrice。这也可能意味着不同版本的不同规则集会提供不同的报告吗?对于相同版本的代码库,v5.6和v6.0报告之间可能会有差异。
Jeevan Varughese

1
您可能会发现这很有趣;本文帮助我理解了3种不同的SonarQube启动模式之间的区别:分析(在SonarQube UI中生成报告),预览和增量(由SonarLint使用)。blog.sonarsource.com/...
YB因为

23

应该添加的是,SonarLube还使用第三方分析器(findBugs,checkstyle,PMD)执行扫描,而SonarLint包括那些。我认为原因是性能上的优先级,并且findBugs依赖Java字节码。

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


2
您是正确的@guitarlum,主要的原因不是您提到的那个原因,而是我们真正相信SonarJava(由SonarSource开发的Java分析器)完全超过PMD + Findbugs的事实。
Fabrice-SonarSource小组

3
@ Fabrice-SonarSourceTeam我理解您的理由,对于默认的FindBugs和PMD可能是正确的,但是在应用程序安全领域,即FindSecurityBugs(find-sec-bugs.github.io),我认为这是最好的漏洞扫描方法, SonarJava达不到要求。
Guitarlum

4

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

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

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


0

Sonarqube在服务器上运行规则验证,并将其集成到TFS构建中。SonarLint在IDE中运行,因此在提交代码之前,我知道哪些行违反了IDE中的哪些规则。


问题是扫描仪有何不同?您的回答是问题的前提。服务器和插件已在问题中提到。
Jeevan Varughese
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.