English 中文(简体)
如何自动化 Visual Studio 的代码度量功能
原标题:
  • 时间:2008-12-08 15:25:25
  •  标签:

我想自动化收集.NET解决方案中的代码度量过程。是否有任何方法让msbuild运行包含在VS2008开发版中的代码度量功能?

我可能最终会使用SourceMonitor,但我想知道是否有一种方法可以从命令行使用VS代码度量引擎。

最佳回答

最终,微软提供了使用新的“Power Tool”自动化Visual Studio代码度量功能的方法。

问题回答

这就是我们公司如何使用MSBuild自动化FxCop的方法:

代码 / 代码段

<!-- The directory where FxCop is installed. -->
<FxCopDirectory>C:Program FilesMicrosoft 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)FxCopRuleSet.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)FxCopRuleSet.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;bodys"
            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);
}

我相信他指的是代码度量(圆形复杂度等),而不是FxCop。我也一直在寻找解决方案,因为FxCop为复杂度规则硬编码了阈值。根据代码分析团队博客上的此文章,在VS2008中似乎还没有指标的命令行或API - 希望他们会发布一个强大的工具。

你看了这个NDepend了吗?





相关问题
热门标签