2017-07-18 23 views
2

我有一個廣泛的源代碼樹,我只想分析樹中的一些目錄。在SonarQube文檔中,我找到了 sonar.sources選項的說明,在這種情況下應該有所幫助。SonarQube.Scanner.MSBuild.exe:如何指定sonar.sources?

首先,我嘗試將它作爲命令行參數/d:sonar.source=發送...... SonarQube.Scanner.MSBuild.exe begin調用接受參數,但它沒有任何區別。 SonarQube.Scanner.MSBuild.exe end調用不接受參數。

我也嘗試在配置文件SonarQube.Analysis.xml中指定它,它也沒有任何區別(雖然sonar.exclusions通過配置文件很好地工作)。

SonarQube的Administration > Analysis Scope網頁沒有sonar.sources

有什麼辦法可以使sonar.sourcesSonarQube.Scanner.MSBuild.exe一起工作?我使用sonar-scanner-msbuild-3.0.0.629SonarQube 6.4

回答

1

用於MSBuild的SonarQube掃描儀將根據您的解決方案文件自動檢測幷包含源代碼。不要試圖通過sonar.sources將分析範圍縮小到子集,而是允許用於MSBuild的SonarQube掃描儀執行其常規發現任務,並使用narrow analysis scope替代使用排除。具體來說,設置sonar.exclusions(項目管理>分析範圍>文件)忽略要跳過的文件/目錄。或者,您可以使用sonar.inclusions(在界面中大致相同的位置找到)將分析範圍縮小到僅分析要分析的文件。如果「包含」比「排除」更小,那可能會更容易。但是,您應該只使用這兩個設置中的一個或另一個。

+0

謝謝你的回答!有一個非常廣泛的源代碼樹,我只對幾個子目錄感興趣。因此,我的' – olegg

+0

謝謝你的答案!我有一個非常廣泛的源代碼樹,我只對幾個子目錄感興趣。因此,我的'sonar.exclusions'列表將會很長。是否可以將'sonar.exclusions'和'sonar.inclusions'結合起來?我已經將我感興趣的目錄加入到了「sonar.inclusions」中,並排除了自動生成的文件'sonar.exclusions'。它不能很好地工作 - 儘管我在'索引的NN文件'(在我已排除的目錄中)中有非零條目,我最終得到了空分析。包含規則是否使用基本目錄或工作目錄? – olegg

+0

看我的擴張@olegg。 –

0

目前,sonar.exclusions只能在一個項目中工作,這意味着任何匹配只能在項目結構中的文件/文件夾上工作。這反過來意味着我們不能限制整個項目,據我所知。相反,我們需要提出一些其他的選擇。

一是根據未使用由我們其實要分析文件的一些模式來命名每個測試文件,例如*Tests.cs

這意味着我們可以使用sonar.exclusions=**/*Tests.cs

另一種方法是將測試項目中的所有源文件放在與某些模式匹配的子目錄中,這也是我們要分析的項目/文件不使用的模式。例如my-project/tests/stuff.cs

使用sonar.exclusions=tests/**/*

所有功能於一切,我覺得這種行爲很討厭 - 能夠排除整個文件夾/項目是有用得多。不得不依靠公約會遲早會破裂,需要更多的維護和知識。

Sonar 6.7.1 (build 35068)測試,MSBuild Scanner 4.0.2SonarC# 6.7 (build 4267)