我试图在我的持续集成系统中配置静态代码分析(FxCop)。但我的开发人员正在使用规则集文件与Visual Studio进行静态分析。
有没有办法可以重新使用相同的规则集文件并将其转换为FxCop规则集dll并在构建时执行静态代码分析?
提前致谢, 拉维
答案 0 :(得分:1)
如果在CI服务器上安装了Visual Studio,则只需在MsBuild命令行上指定/p:RunCodeAnalysis=[True|False|Always|Default|Never]
即可运行代码分析,因为它是在开发人员配置中配置的。规则文件自动包含在Visual Studio项目文件中,因此它们应该自行解决。
要在构建后运行FxCop,您可以将规则集指定为命令行参数:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Team Tools\Static Analysis Tools\FxCop>fxcopcmd /?
Microsoft (R) FxCop Command-Line Tool, Version 12.0 (12.0.21005.1) X86
Copyright (C) Microsoft Corporation, All Rights Reserved.
/ruleset:<<+|-|=>file> [Short form: /rs:<<+|-|=>file>]
Rule set to be used for the analysis. It can be a file path to the rule set
file or the file name of a built-in rule set. '+' enables all rules in the
rule set; '-' disables all rules in the rule set; '=' sets rules to match the
rule set and disables all rules that are not enabled in the rule set.
/rulesetdirectory:<directory> [Short form: /rsd:<directory>]
Directory to search for rule set files that are specified by the /ruleset
switch or are included by one of the specified rule sets.
从命令行运行FxCop的困难之处在于,您需要传递所有引用,并且它只能处理针对相同.NET系统库的文件(它只能在内存中保存其中一个)。您可以使用以下参数指定这些引用:
/platform:<directory> [Short form: /plat:<directory>]
Location of platform assemblies.
/directory:<directory> [Short form: /d:<directory>]
Location to search for assembly dependencies.
/reference:<file> [Short form: /ref:<file>]
Reference assemblies required for analysis.
答案 1 :(得分:0)
如果您只想运行代码分析而无需直接调用fxcop并指定所有额外信息,请执行以下操作:
<MSBuild Projects="@(CodeAnalysisProjects)" Properties="RunCodeAnalysis=True;Configuration=Release;BuildProjectReferences=False;WarningsAsErrors=False;RunCodeAnalysisDependsOn=;" Targets="RunCodeAnalysis" StopOnFirstFailure="false" />
您发送项目组CodeAnalysisProjects.
中的项目列表您运行目标RunCodeAnalysis
并设置属性RunCodeAnalysis=True.
您还设置属性RunCodeAnalysisDependsOn=;
以便不执行任何操作除了代码分析之外还运行。
这与我们用于CI的解决方案相同。我们整天建立,然后只在晚上运行代码分析。