Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse 与引用的SonarQube服务器相比,SonarLint未显示所有记录_Eclipse_Intellij Idea_Sonarqube_Eclipse Mars_Sonarlint - Fatal编程技术网

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

Eclipse 与引用的SonarQube服务器相比,SonarLint未显示所有记录,eclipse,intellij-idea,sonarqube,eclipse-mars,sonarlint,Eclipse,Intellij Idea,Sonarqube,Eclipse Mars,Sonarlint,我们正在连接模式下使用SonarQube服务器版本5.3和SonarLint 2.0。 作为一个IDE,我们使用Eclipse Mars 2.0,当我们将SonarQube服务器找到的结果与SonarLint在IDE中找到的结果进行比较时,结果是不同的(示例文件IDE中的274个错误,SonarQube中的826个问题!) 通常的区别之一是“变量可以声明为最终变量” 另外,我的一位同事在IntelliJIdea中使用SonarLint时也遇到了类似的问题(Idea版本2016.1.1,Sonar

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

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

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

我想知道为什么与服务器甚至IDE之间存在这样的差异


有人能帮我一下吗?谢谢。

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

其次,Sonarint比SonarQube显示的问题更少或更多,原因如下:

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

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

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

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


因此,遗憾的是,我们只能使用SonarQube提供的开箱即用的规则(即他们的Java插件)。

如果你只是单击项目,它将不起作用,你需要进入项目并单击Java文件,一旦你开始点击项目中的Java文件,你会看到SonarLint被激活,并向你显示所有存在的错误。首先,它对我有效,谢谢你的回答。我很感激你的迅速反应。第二,我知道,对于某些问题,您需要分析多个文件(例如,不变性问题等)——但是我不认为您需要专门针对“变量可以声明为最终”类错误进行分析——您应该只需要最接近的上下文,对吗?我对SonarQube没有任何问题排除,源代码排除不会影响区域测试。我也理解关于度量的争论——我也理解那些缺失的。但是,如果我特别关注变量可以被声明为最终变量,我真的不理解为什么不显示这些。好的,阅读@jan-s中关于外部引擎的评论,现在就有意义了。我明白了!非常感谢您对外部引擎的解释,现在它更有意义了。这确实是一个非常好的答案!也许,补救办法是让人们在SonarQube中创建一个新的质量配置文件,利用规则映射,然后激活该配置文件,而不是FindBugs和PMD中的可用配置文件。我想这应该是SonarQube产品的一个新特性要求——将基于FindBugs的概要文件提升到SonarSourceAnalyzer。