我想自动化在 .NET 解决方案上收集代码指标的过程。有什么方法可以让 msbuild 运行 VS2008 开发版中包含的 Code Metrics 功能?
我最终可能会使用SourceMonitor,但我想知道是否有办法从命令行使用 VS 代码指标引擎。
我想自动化在 .NET 解决方案上收集代码指标的过程。有什么方法可以让 msbuild 运行 VS2008 开发版中包含的 Code Metrics 功能?
我最终可能会使用SourceMonitor,但我想知道是否有办法从命令行使用 VS 代码指标引擎。
最后,微软为我们提供了一种使用新的“电动工具”自动化 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);
}