11

.NET ソリューションでコード メトリックを収集するプロセスを自動化したいと考えています。VS2008 Development Edition に含まれる Code Metrics 機能を msbuild で実行する方法はありますか?

SourceMonitorを使用することになるかもしれませんが、コマンド ラインから VS コード メトリック エンジンを使用する方法があるかどうかを知りたいです。

4

3 に答える 3

9

最後に、Microsoft は、新しい「パワー ツール」を使用して Visual Studio コード メトリック機能を自動化する方法を提供してくれました。

于 2011-02-10T17:26:36.123 に答える
5

これは、私の会社が 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="&quot;$(FxCopCmd)&quot; /p:&quot;$(BuildDirectory)\FxCop\RuleSet.FxCop&quot; /out:$(BuildResults)\FxCop.xml /summary /verbose /f:$(Binaries)\@(CodeAnalysis, ' /f:$(Binaries)\')" />

<!-- Once to report with the build results. -->
<Exec Command="&quot;$(FxCopCmd)&quot; /p:&quot;$(BuildDirectory)\FxCop\RuleSet.FxCop&quot; /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="&lt;body\s"
            ReplacementText="&lt;body onLoad=&quot;ExpandAll();&quot; "
            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);
}
于 2009-01-07T21:28:54.330 に答える
2

jgwood - 彼は FxCop ではなく、コード メトリクス (循環的複雑度など) について言及していると思います。複雑さの FxCop ルールにはハードコーディングされたしきい値があるため、これに対する解決策も探していました。VS2008 にはメトリック用のコマンドラインや API がまだないようです (コード分析チーム ブログのこの投稿による) - うまくいけば、PowerTool がリリースされるでしょう。

これについてNDependを見ましたか?

于 2009-01-20T14:57:22.973 に答える