visual tag studio code autocompletar visual-studio-2008 msbuild code-metrics

visual studio 2008 - tag - Cómo automatizar la función Métricas de código de Visual Studio



visual studio code go to definition php (3)

Quiero automatizar el proceso de recopilación de métricas de código en una solución .NET. ¿Hay alguna manera de hacer que msbuild ejecute la característica Métricas de código incluida en VS2008 Development Edition?

Puede que termine usando SourceMonitor , pero me gustaría saber si hay una forma de usar el motor de métricas del código VS desde la línea de comandos.


jgwood: creo que se está refiriendo a Code Metrics (complejidad ciclomática, etc.) y no a FxCop. He estado buscando una solución para esto también, ya que la regla FxCop para la complejidad tiene umbrales codificados. Parece que todavía no hay una línea de comandos o una API para las métricas en VS2008 (según esta publicación en el Blog del Equipo de análisis de código). Con suerte, lanzarán una herramienta poderosa.

¿Has mirado NDepend para esto?


Así es como mi empresa ha automatizado FxCop utilizando MSBuild:

<!-- 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>

Luego, puede escribir un código C # para consumir el archivo de salida:

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