我想自动化收集.NET解决方案中的代码度量过程。是否有任何方法让msbuild运行包含在VS2008开发版中的代码度量功能?
我可能最终会使用SourceMonitor,但我想知道是否有一种方法可以从命令行使用VS代码度量引擎。
我想自动化收集.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=""$(FxCopCmd)" /p:"$(BuildDirectory)FxCopRuleSet.FxCop" /out:$(BuildResults)FxCop.xml /summary /verbose /f:$(Binaries)@(CodeAnalysis, /f:$(Binaries) )" />
<!-- Once to report with the build results. -->
<Exec Command=""$(FxCopCmd)" /p:"$(BuildDirectory)FxCopRuleSet.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="<bodys"
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);
}