2014-07-16 42 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)