2013-10-25 127 views
0

我正在嘗試在我的持續集成系統中配置靜態代碼分析(FxCop)。但我的開發人員正在使用規則集文件進行Visual Studio靜態分析。如何將規則集文件轉換爲FXCop規則dll?

有沒有辦法讓我可以重複使用相同的規則集文件,並將其轉換爲FxCop規則集的dll,並執行靜態代碼分析,同時構建?

由於提前, 拉維

+0

你是如何在構建服務器上觸發FxCop的? –

回答

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. 
+0

這似乎是一個很好的解決方案,如果我想運行代碼分析作爲Build.But的一部分,在我的情況下,運行代碼分析作爲後期構建腳本。是否有任何方式來設置擴展設計指南,同時運行FxCopCmd由Visual Studio代碼分析提供的工具? – Ravi

+0

是的,你可以更新答案 – jessehouwing

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的相同解決方案。我們整天構建,然後只在晚上運行代碼分析。