如何使用命令行运行选择 FxCop 规则?
Posted
技术标签:
【中文标题】如何使用命令行运行选择 FxCop 规则?【英文标题】:How can I run select FxCop rules using the command line? 【发布时间】:2014-09-09 21:53:06 【问题描述】:我知道您可以创建一个项目并使用相对路径,但我不想将项目文件保留在版本控制中。为简洁起见,假设我只想运行来自 Microsoft.Design 的一条规则 CA1001。如何使用命令行参数指定它并使其在 TeamCity FxCop 构建运行器中工作?
【问题讨论】:
【参考方案1】:有一个/ruleid
命令行选项可用于此目的。它没有出现在 fxcopcmd.exe
命令行选项的 MSDN 帮助主题中,但您可以通过运行 fxcopcmd.exe /?
查看描述。
【讨论】:
根据我提供的示例规则,您将如何按照文档对其进行格式化?/ruleid:<[+|-]Namespace.CheckId|Category#CheckId>
fxcopcmd.exe /rule:"-<path to FxCop rules folder>\DesignRules.dll" /ruleid:"+Microsoft.Design#CA1001" /file:"<path to the assembly you want to analyze>"
这真的支持吗?我用您描述的语法对其进行了测试,但它仍然运行 Microsoft.Design 中的所有规则。
我想可能是因为 DesignRules.dll 已经指定,它会运行其中的所有内容,我们必须先删除所有其他规则,然后再添加我们想要的规则。写出来似乎很痛苦。
看来我是对的。但是,我无法使用通配符删除所有规则 ID。目前还不确定最好的方法是什么。【参考方案2】:
该工具位于 \FxCopCmd.exe 中。 可以在此处找到选项列表。 所有选项都必须附加一个冒号和参数(如果有),但不能有空格。基本命令如下所示。
FxCopCmd.exe /file:E:\My\Project\Precompiled\bin
/rule:"C:\Program Files (x86)\Microsoft FxCop 1.35\Rules" /out:fxcopreport.xml
您还可以根据需要应用多个规则:
"C:\Program Files\Microsoft FxCop 1.35\FxCopCmd.exe"
/rule:"C:\Program Files\Microsoft FxCop 1.35\Rules\DesignRules.dll"
/rule:"C:\Program Files\Microsoft FxCop 1.35\Rules\GlobalizationRules.dll"
/rule:"C:\Program Files\Microsoft FxCop 1.35\Rules\InteroperabilityRules.dll"
/rule:"C:\Program Files\Microsoft FxCop 1.35\Rules\MobilityRules.dll"
/rule:"C:\Program Files\Microsoft FxCop 1.35\Rules\NamingRules.dll"
/rule:"C:\Program Files\Microsoft FxCop 1.35\Rules\PerformanceRules.dll"
/rule:"C:\Program Files\Microsoft FxCop 1.35\Rules\PortabilityRules.dll"
/rule:"C:\Program Files\Microsoft FxCop 1.35\Rules\SecurityRules.dll"
/rule:"C:\Program Files\Microsoft FxCop 1.35\Rules\UsageRules.dll"
/out:fxcopreport.xml
/summary
/file:"E:\MyProject\Model\bin\Debug\MyProject.dll"
/directory:"C:\Program Files\Reference Assemblies\Microsoft\Framework
\v3.5\System.Core.dll"
在上面的命令中,标志是:
/rule 您希望包含的规则 dll 的路径。
/out 分析应该保存到哪个文件。
/summary 使 FxCop 在报告中包含摘要。
/file 你要分析的文件。
/directory 出于某种原因,项目文件无法记住 System.Core.dll 位于。为避免错误,您可以像这样指定 dll。
【讨论】:
以上是关于如何使用命令行运行选择 FxCop 规则?的主要内容,如果未能解决你的问题,请参考以下文章