我正在嘗試在我的持續集成系統中配置靜態代碼分析(FxCop)。但我的開發人員正在使用規則集文件進行Visual Studio靜態分析。如何將規則集文件轉換爲FXCop規則dll?
有沒有辦法讓我可以重複使用相同的規則集文件,並將其轉換爲FxCop規則集的dll,並執行靜態代碼分析,同時構建?
由於提前, 拉維
我正在嘗試在我的持續集成系統中配置靜態代碼分析(FxCop)。但我的開發人員正在使用規則集文件進行Visual Studio靜態分析。如何將規則集文件轉換爲FXCop規則dll?
有沒有辦法讓我可以重複使用相同的規則集文件,並將其轉換爲FxCop規則集的dll,並執行靜態代碼分析,同時構建?
由於提前, 拉維
如果您安裝了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.
這似乎是一個很好的解決方案,如果我想運行代碼分析作爲Build.But的一部分,在我的情況下,運行代碼分析作爲後期構建腳本。是否有任何方式來設置擴展設計指南,同時運行FxCopCmd由Visual Studio代碼分析提供的工具? – Ravi
是的,你可以更新答案 – jessehouwing
如果你想運行代碼分析只,而無需直接調用的FxCop並指定所有這些額外的信息,請執行以下操作:
<MSBuild Projects="@(CodeAnalysisProjects)" Properties="RunCodeAnalysis=True;Configuration=Release;BuildProjectReferences=False;WarningsAsErrors=False;RunCodeAnalysisDependsOn=;" Targets="RunCodeAnalysis" StopOnFirstFailure="false" />
你發送項目組中的項目列表CodeAnalysisProjects.
您運行目標RunCodeAnalysis
,並設置屬性RunCodeAnalysis=True.
您還可以設置屬性RunCodeAnalysisDependsOn=;
,以便除代碼分析外別無其他。
這是我們用於CI的相同解決方案。我們整天構建,然後只在晚上運行代碼分析。
你是如何在構建服務器上觸發FxCop的? –