fxcop - TeamCity FxCop 选择MinimumRecommendedRules.ruleset 无效

标签 fxcop teamcity-8.0 fxcopcmd

我在 TeamCity 8.0.6(内部版本 27767)中添加了一个构建步骤,以针对特定的 c# 项目程序集执行 FxCop。

当从 VS 2013 中运行 FxCop 并设置 MinimumRecommendedRules 时,我没有收到任何错误或警告(我已将它们全部修复)。

现在我想将其连接到 TeamCity 中。为了限制规则,我指定了一个命令行属性,如下所示:

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

(rulesetdirectory 参数指向我的源代码树中的一个位置,其中包含标准规则集文件夹的完整内容)

但是这没有达到预期的行为,完整的规则集运行后出现如下错误:

FxCop warning: Keyword=CA0063 Kind=Engine Type=Microsoft.FxCop.Sdk.FxCopException * Failed to load rule set file 'MinimumRecommendedRules.ruleset' or one of its dependent rule set files.

这是 TeamCity 生成的命令行:

[17:32:29]Starting: "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis 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-output-1891867450083417003\fxcop-result.xml

谁能发现问题所在吗?

最佳答案

我想通了,希望这对其他人有帮助。

/ruleSet: 参数需要具有规则集文件的完整(相对或绝对)路径,如下所示:

/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 安装根目录”设置为“c:\Program Files (x86)\Microsoft Visual Studio 12.0\Team Tools\Static” Analysis Tools\FxCop”明确确保使用最新版本的 FxCop 并且不会因 .Net 4.5 代码而阻塞。 (注意:由于 C++ 项目构建要求,我在构建服务器上安装了 VS 2013,我对此并不满意,但事实证明它对我处理 FxCop 设置很方便。还有其他方法可以将构建服务器上的 FxCop 内容无需安装 VS 2013)

关于fxcop - TeamCity FxCop 选择MinimumRecommendedRules.ruleset 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24786283/

相关文章:

FxCop 和 IComparable/IComparable<T>

c# - 不要声明只读可变引用类型——为什么不呢?

ssh - Teamcity SSH 私钥登录失败 : invalid privatekey

c# - VS2010 中的 FxCop 行为、代码分析和 SuppressMessage

c# - FxCop:异步方法的抑制消息

c# - Microsoft分析器为什么找不到Microsoft.CodeAnalysis?

Teamcity 恢复已删除的构建配置

git - 特定构建配置的 Team City 未决更改不是默认分支

c# - 如何编写自定义 FXCop 规则来检查条件编译符号?