2016-03-29 131 views
2

使用一個規則集FO所有項目我們目前正在評估使用SonarQube/SonarLint爲我們的.NET應用程序的過程。我們對迄今爲止所看到的內容感到非常滿意(並且,順便提一下SonarQube的這些遠見卓識 - 幾年前我已經使用它來開發我的博士項目,並且自那時起它已經有了很大的改進!)。當我將SonarLint實例連接到我們的SonarQube服務器(工作正常)並開始同步綁定的項目時,SonarLint開始下載nuget包(這是期望的),並且然後爲我們解決方案的每個項目創建一個甚至兩個.ruleset文件(除了文件SonarQube/<solution name>CSharp.ruleset,我認爲它是解決方案範圍的規則集)。SonarQube/SonarLint/Visual Studio中:在溶液中

我所期待的,寧願只是單一的規則集有效的完整解決方案(並可能重寫規則集項目中這是有道理的(例如,測試項目)的選項)。

這種行爲可能在所有的,即,我錯過了什麼?文檔是我在SonarLint缺乏的領域中唯一確定的領域。

+0

我有點驚訝的是我還沒有收到任何回答我的問題(該SonarLint隊顯然,監視所以SonarLint標籤),因爲它似乎是一個相當基本的要求,我希望很多團隊都有相同的用例。我的問題有什麼愚蠢的嗎?如果是這種情況,請提供一個鏈接或類似的東西...我是混合SonarLint和VS的責任,還是我的用例不可能?再次請分享您的知識......提前致謝。 – csoltenborn

+1

如果該級別的規則集未更改,則在解決方案級別更改規則集將應用於項目級別。如果你用XML編輯器打開文件,你會看到不同之處。 –

回答

1

還有就是創建這些額外的規則集文件的一個原因。那麼實際上有多個:

  • 那就是允許您設置,這是所有項目都必須堅持一個底線,但能與特定類型的代碼項目的補充規則。您可能會啓用一些特定於Sharepoint項目的MSOCAF規則,這些規則對您的Unittest或Windows服務項目沒有意義

  • 說,當您在項目中確定技術債務時,可以設置基線整個解決方案,並逐步收緊個別項目的規則集,以便您可以將清理工作集中在特定項目上。無需同時在解決方案中的所有項目中清除特定規則或一組規則。

每次與SonarQube同步時,其中一個項目規則集文件將被覆蓋。另一個將保持你離開它。允許您保存自定義設置,並仍然允許您安全地將更改同步到SonarQube基線。

如果我正確地記住這一點,解決方案規則集包含在項目規則集作爲在其中存儲您的自定義規則集。目前我手邊沒有SonarQube服務器來驗證哪個規則集文件服務器的目的,但這是它背後的推理。

+0

謝謝你的回答!但是,有些東西對我來說還不清楚。我當然看到需要針對不同的項目強制執行不同的規則集,但我認爲爲每個項目分配規則集都是一個維護噩夢(我承認我還沒有理解您的觀點,「解決方案規則集包含在項目規則集「 - 畢竟,我們有1個解決方案和許多項目規則集,那麼前者如何包含在後者中呢?)。 Tbc ... – csoltenborn

+1

我們想到的是一個解決方案規則集作爲所有項目的基礎,以及需要定製某些項目需求的項目規則集(僅限於)。添加或禁用從解決方案規則集「繼承」的規則。在所有女巫SonarQube中都可能有這樣的事情嗎?你可以指出這個用例的相關文檔嗎?再次感謝您的洞察... – csoltenborn

+1

不,在Sonar中的設置將成爲基線,對所有項目有效。在同一個sonarqube項目中擁有不同質量配置文件的能力已被刪除4.something。所以Sonar的產品將成爲所有項目的基準。從持續改進的角度來看,我不喜歡它。 – jessehouwing

2

我給在下面的博客文章有幾個規則集的利益多一點細節:SonarLint for VisualStudio 2.1 released, brings consistency with MSBuild, navigation to SonarQube and notifications

你必須每個項目一個規則集是在情況下,定製要加強對質量的定義你的解決方案,以及一個對應於SonarQube質量配置文件(在SonarQube治理達標)

+0

這看起來像是朝着正確方向邁出的一大步 - 感謝通過這個SO問題讓我知道! – csoltenborn