如何自动化Visual Studio的代码度量功能

11
我希望自动化.NET解决方案的代码指标收集过程。有没有办法让msbuild运行VS2008开发版中包含的Code Metrics功能呢?
我可能最终会使用SourceMonitor,但我想知道是否有办法从命令行使用VS代码指标引擎。
3个回答

9

最终,微软提供了一种使用新的“power tool”自动化Visual Studio代码度量功能的方法,详情请查看此处


我想要通过命令运行我的C++解决方案文件(VS 2010)进行代码度量分析。这对C++项目有效吗? - Vikram Ranabhatt
1
“power tool”缺失。 - Carlos Liu

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);
}

2
jgwood - 我相信他指的是代码度量(圆形复杂度等),而不是 FxCop。我也一直在寻找解决方案,因为 FxCop 对于复杂度的规则有硬编码阈值。根据 Code Analysis Team Blog 上的 这篇文章,看起来VS2008还没有命令行或API来进行度量,希望他们会发布强大的工具。

您考虑过使用NDepend吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接