2014-07-16 43 views
4

我在TeamCity 8.0.6(build 27767)中添加了一個構建步驟,以針對特定的c#項目組件執行FxCop。TeamCity FxCop選擇MinimumRecommendedRules.ruleset沒有效果

當使用MinimumRecommendedRules集合從VS 2013中運行FxCop時,我不會收到任何錯誤或警告(我將它們全部修復)。

現在我想在TeamCity中連接它。爲了限制的規則,我指定命令行屬性如下:

/ruleSet:=MinimumRecommendedRules.ruleset /rulesetdirectory:'FxCop\Rule Sets' 

(該rulesetdirectory參數指向我的源代碼樹包含標準規則的全部內容的位置設置文件夾)

然而這並不一定期望的行爲,完全規則集運行,我得到一個錯誤如下:

的FxCop警告:關鍵字= CA0063類=發動機型號= Microsoft.FxCop.Sdk.FxCopException *無法加載規則集文件'MinimumRecommendedRules.ruleset'或其依賴項之一凹痕規則集文件。

這是TeamCity的生成命令行:

[17時32分29秒]首發:「C:\ Program Files文件(x86)的\微軟的Visual Studio 10.0 \團隊工具\靜態分析Tools \ FxCop \ FxCopCmd.exe「/ forceoutput/ignoregeneratedcode /ruleSet:=MinimumRecommendedRules.ruleset」/ rulesetdirectory:'FxCop \ Rule Sets'「/f:dal\bin\release\MyDAL.dll/out:C:\ TeamCity \ buildAgent \ TEMP \ buildTmp \ FxCop的輸出-1891867450083417003 \ FxCop的,爲result.xml

任何人都可以發現有什麼不好?

回答

6

我想通了,所以希望這對別人有幫助。

的/規則集:

/ruleSet:"=%teamcity.build.workingDir%\FxCop\RuleSets\MinimumRecommendedRules.ruleset" 

(注:以下有充分的(相對或絕對)路徑規則集文件所需參數的雙引號處理可能性teamcity.build .workingDir可能包含空格)

其次,第二個命令行參數/ rulesetdirectory:不再是必需的。我懷疑這第二個參數實際上不工作。

請注意,我的工作命令行參數指向我的源代碼中的MinimumRecommendedRules.ruleset文件。它可以很容易地被複制到「c:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Team Tools \ Static Analysis Tools \ Rule Sets」下的標準規則集文件夾中。我的項目都是VS 2013,TeamCity只識別v10,我還將「Specifiy installation root」設置爲「c:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Team Tools \靜態分析工具\ FxCop「,以確保正在使用最新版本的FxCop,並且不會窒息.Net 4.5代碼。 (注意:由於C++項目構建需求,我在構建服務器上安裝了VS 2013,我對此並不滿意,但它對我來說很方便處理FxCop的設置。 FxCop東西在您的生成服務器上,而不安裝VS 2013)