2016-06-09 47 views
7

我想從Sonars靜態代碼和單元測試覆蓋率分析中排除一些自動生成的代碼(服務引用)。該項目是C#.Net和Sonar通過Windows服務器上的Jenkins運行。如何使用Sonar路徑中的空格排除文件?

在我的sonar-project.properties文件中,我可以使用sonar.exclusions屬性排除各種其他文件和目錄,但這不適用於路徑中有空格的文件。

sonar.exclusions=**/Global.asax.cs, **/MyProject/Service References/* 

鑑於上面的例子中的Global.asax.cs文件被排除在解決方案中的所有項目,但服務引用都沒有。

我試着在單引號和雙引號中加上路徑。 我已經嘗試使用反斜線來逃避空間。 我試圖把路徑作爲**/MyProject/Service */*來利用通配符(可能有風險),但是這也不起作用。

有沒有人有解決方案?

+0

也許圍繞着雙引號的價值將工作?像「/ MyProject /服務引用」這樣的東西'' – DavidG

回答

5

我剛碰到同樣的問題。我需要排除腳本文件夾中的項目「我的項目」中的JavaScript文件。我第一次嘗試這樣的:

**/Scripts/**/*.js 

這工作得很好,但我意識到這將排除在其他項目「腳本」文件夾了。所以我把它改爲:

**/My Project/Scripts/**/*.js 

它停止工作。我的第一個直覺是項目名稱中的空間是責任。所以我嘗試了你所做的相同的事情:

"**/My Project/Scripts/**/*.js" 
'**/My Project/Scripts/**/*.js' 
**/My\ Project/Scripts/**/*.js 

但它沒有工作。

然後,我偶然發現了這個論壇:sonarqube-archive.15.x6.nabble.com/Project-exclusions-for-Code-Coverage-not-working-C-td5023058.html

特別是該行給出了答案:模塊(.NET項目)不是完全合格的名稱的一部分。您必須在模塊(.Net項目)級別定義排除項。

這意味着我的錯誤是在項目名稱中沒有空格,但包括項目名稱!我改變了這個過濾器:

Scripts/**/*.js 

和瞧,文件被正確排除。不需要引號或轉義。

當然,這仍然會導致另一個項目中的「腳本」文件夾也被排除在外的問題。這裏提供的信息:docs.sonarqube.org/display/SCAN/Excluding+Artifacts+from+the+Analysis可能證明對此有用。

我使用web界面,而不是直接配置文件,但是這也會表明如果你有多個過濾器,逗號分隔的列表不應該包含空格(除了路徑中的空格),因爲他們的解釋是非常字面的。

+0

這不適合我。我嘗試了sonar.exclusions = Service References/* .cs,以及sonar.skippedModules = Service References/*。正如您在答覆中提到的那樣,但在分析中既沒有排除服務引用。你能否澄清你的答案? –

+0

太糟糕了。您希望在服務參考文件夾中排除什麼類型的文件?我的解決方案只會排除Service References文件夾中的.cs文件。如果你想排除你會使用的所有文件sonar.exclusions =服務引用/ ** – PeterH

+0

如果這對你有用,我會更新我的答案 – PeterH