.NET ソリューションでコード メトリックを収集するプロセスを自動化したいと考えています。VS2008 Development Edition に含まれる Code Metrics 機能を msbuild で実行する方法はありますか?
SourceMonitorを使用することになるかもしれませんが、コマンド ラインから VS コード メトリック エンジンを使用する方法があるかどうかを知りたいです。
.NET ソリューションでコード メトリックを収集するプロセスを自動化したいと考えています。VS2008 Development Edition に含まれる Code Metrics 機能を msbuild で実行する方法はありますか?
SourceMonitorを使用することになるかもしれませんが、コマンド ラインから VS コード メトリック エンジンを使用する方法があるかどうかを知りたいです。
最後に、Microsoft は、新しい「パワー ツール」を使用して Visual Studio コード メトリック機能を自動化する方法を提供してくれました。
これは、私の会社が MSBuild を使用して FxCop を自動化した方法です。
<!-- The directory where FxCop is installed. -->
<FxCopDirectory>C:\Program Files\Microsoft FxCop 1.36</FxCopDirectory>
<!-- The FxCop console executable.. -->
<FxCopCmd>$(FxCopDirectory)\FxCopCmd</FxCopCmd>
<Target Name="CodeAnalysis>
<!-- Once to get XML for metrics. -->
<Exec Command=""$(FxCopCmd)" /p:"$(BuildDirectory)\FxCop\RuleSet.FxCop" /out:$(BuildResults)\FxCop.xml /summary /verbose /f:$(Binaries)\@(CodeAnalysis, ' /f:$(Binaries)\')" />
<!-- Once to report with the build results. -->
<Exec Command=""$(FxCopCmd)" /p:"$(BuildDirectory)\FxCop\RuleSet.FxCop" /out:$(BuildResults)\FxCop.html /summary /verbose /applyoutXsl:$(MSBuildTasks)\CodeAnalysisReport.xsl /f:$(Binaries)\@(CodeAnalysis, ' /f:$(Binaries)\')" />
<!-- Update the FxCop report so that it is fully expanded by default. -->
<FileUpdate Regex="<body\s"
ReplacementText="<body onLoad="ExpandAll();" "
Files="$(BuildResults)\FxCop.html" />
</Target>
次に、C# コードを記述して、出力ファイルを使用できます。
/// <summary>
/// Gather metrics for code analysis.
/// </summary>
private static void GatherCodeAnalysisMetrics()
{
string file = @"$(BuildResults)\FxCop.xml";
if (!File.Exists(file)) return;
System.Xml.XmlDocument document = new System.Xml.XmlDocument();
document.Load(file);
System.Xml.XmlNodeList list = document.SelectNodes("//Message");
codeAnalysisWarnings = list.Count;
Console.WriteLine("Code analysis warnings: " + codeAnalysisWarnings);
}
jgwood - 彼は FxCop ではなく、コード メトリクス (循環的複雑度など) について言及していると思います。複雑さの FxCop ルールにはハードコーディングされたしきい値があるため、これに対する解決策も探していました。VS2008 にはメトリック用のコマンドラインや API がまだないようです (コード分析チーム ブログのこの投稿による) - うまくいけば、PowerTool がリリースされるでしょう。
これについてNDependを見ましたか?