Red*_*ed1 4 fxcop fxcopcmd teamcity-8.0
我在TeamCity 8.0.6(build 27767)中添加了一个Build Step,以针对特定的c#项目程序集执行FxCop.
当使用MinimumRecommendedRules设置从VS 2013中运行FxCop时,我没有得到任何错误或警告(我将它们全部修复).
现在我想在TeamCity中进行连接.要限制规则,我将指定命令行属性,如下所示:
/ruleSet:=MinimumRecommendedRules.ruleset /rulesetdirectory:'FxCop\Rule Sets'
Run Code Online (Sandbox Code Playgroud)
(rulesetdirectory参数指向源树中包含标准规则集文件夹的完整内容的位置)
但是,这没有所需的行为,运行FULL规则集,我得到如下错误:
FxCop警告:关键字= CA0063种类=引擎类型= Microsoft.FxCop.Sdk.FxCopException*无法加载规则集文件"MinimumRecommendedRules.ruleset"或其依赖规则集文件之一.
这是TeamCity生成的命令行:
[17:32:29]开始:"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"
Run Code Online (Sandbox Code Playgroud)
(注意:双引号用于处理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,我还将"特定安装根"设置为"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)
| 归档时间: |
|
| 查看次数: |
1608 次 |
| 最近记录: |