2016-05-11 58 views
8

我們在連接模式下使用SonarQube服務器版本5.3和SonarLint 2.0。 作爲一個IDE,我們使用Eclipse Mars 2.0,當我們比較SonarQube服務器找到的結果和SonarLint在IDE中找到的結果時,結果會有所不同(在SonarQube!中,IDE,826問題中的示例文件274錯誤)。SonarLint沒有顯示與參考SonarQube服務器相比的所有記錄

其中一個常見的區別是「變量可以被聲明爲最終的」。

另外我的一位正在使用SonarLint for IntelliJIdea的同事也有類似的問題(Idea版本2016.1.1,SonarLint 2.0.2,示例文件 - 與IDE 293錯誤中的比較相同)。

我想知道爲什麼在服務器和IDE之間存在這樣的區別。

有人可以幫我解決這個問題嗎?謝謝。

回答

10

我面臨着類似的問題,請說明這個例子: SonarLint 2.0.2:99問題。 SonarQube 5.4 UI:116個問題。 由屬於Checkstyle插件的2個規則引起的差異。

正如你在談論「變量可以被宣佈爲最終的」,我假設你丟失的問題背後的規則是pmd:LocalVariableCouldBeFinal,它屬於PMD插件。

法布里斯曾這樣評價這個主題SonarQube谷歌集團,他們「不會增加任何外部引擎支持」SonarQube Google Group(這是PMD,Checkstyle的,FindBugs的和其他人真的...)

那麼可悲的是,我們只能使用SonarLint rules list其中由SonarQube提供開箱即用(即它們的Java插件)的所說的那些規則。

+0

我明白了!關於外部引擎的解釋非常感謝,現在它更有意義。 – Uhla

+0

的確很好答案!也許,補救措施是讓人們在SonarQube中創建一個新的質量配置文件,利用規則映射,然後激活該配置文件,而不是FindBugs和PMD中可用的配置文件。我想這應該是SonarQube產品的一項新功能---將基於FindBugs的配置文件提升到SonarSource分析儀。 – Jaywalker

6

首先,SonarQube對您的項目進行全面分析,而SonarLint只分析您打開的文件。所以我不知道你的問題計數比較是否合理(除非你在Eclipse中逐個打開所有文件)。

第二,有一些已知的原因SonarLint將顯示更多或更少的問題比SonarQube:

  • 基於指標的一些規則計算僅在SonarQube。例如:
    • 不足(線或分支)覆蓋率
    • 不足評論密度
    • 重複的代碼
  • 你可能已經定義上SonarQube問題排除,未在SonarLint考慮到尚未
    • 但是,這將很快到來
  • 你可能已經定義上SonarQube源代碼排除,未在SonarLint
    • 考慮到尚未但是,這將很快到來
+0

首先,感謝您的回答。我很欣賞快速反應。 第二 - 我明白,對於某些問題,您需要分析多個文件(例如不可變性問題等) - 但我不相信您需要專門爲「變量可以聲明爲最終的」類錯誤 - 您應該需要那裏只有最近的背景,不是嗎? 我在SonarQube上沒有任何問題排除,並且源代碼排除不會影響測試區域。 我也理解關於指標的觀點 - 我會理解那些缺失的。 – Uhla

+0

但是,如果我專注於_Variable可以宣佈final_,我不明白爲什麼這些不顯示。 – Uhla

+0

好的,請閱讀@ jan-s關於外部引擎的評論,現在有意義。 – Uhla

-1

如果你只需要點擊項目,它不會工作,你需要進入該項目,並點擊java文件,一旦你開始點擊Java文件存在於Project.You會看到SonarLint得到激活並顯示你所有的錯誤present.It工作對我來說

相關問題