0

我正在尝试在我的持续集成系统中配置静态代码分析(FxCop)。但是我的开发人员正在使用规则集文件与 Visual Studio 进行静态分析。

有没有办法让我可以重复使用相同的规则集文件并将其转换为 FxCop 规则集 dll 并在构建时执行静态代码分析?

在此先感谢,拉维

4

2 回答 2

1

如果您在 CI 服务器上安装了 Visual Studio,那么只需/p:RunCodeAnalysis=[True|False|Always|Default|Never]在 MsBuild 命令行上指定即可运行代码分析,因为它是在开发人员的配置中配置的。规则文件自动包含在 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.
于 2013-10-25T11:20:09.743 回答
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 的解决方案相同。我们整天构建,然后只在晚上运行代码分析。

于 2013-10-29T13:39:27.600 回答