2008-12-08 6 views
11

Je souhaite automatiser le processus de collecte de mesures de code sur une solution .NET. Existe-t-il un moyen d'obtenir msbuild pour exécuter la fonctionnalité Code Metrics incluse dans VS2008 Development Edition?Comment automatiser la fonctionnalité de code de Visual Studio

Je pourrais finir par utiliser SourceMonitor, mais j'aimerais savoir s'il existe un moyen d'utiliser le moteur de mesures du code VS à partir de la ligne de commande.

Répondre

9

Enfin, Microsoft nous a fourni a way to automate the Visual Studio code metrics feature en utilisant un nouveau "power tool".

+0

Je voulais exécuter mon fichier de solution C++ (vs 2010) à partir de la commande pour l'analyse de métriques de code. Cela fonctionne-t-il pour le projet C++? –

+0

L'outil électrique est manquant –

5

Voici comment mon entreprise a automatisé FxCop en utilisant 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> 

Ensuite, vous pouvez écrire du code C# pour consommer le fichier de sortie:

/// <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 - Je crois qu'il est se référer à Code Metrics (complexité cyclomatique, etc.) et non à FxCop. Je cherchais aussi une solution pour cela, car la règle FxCop pour la complexité a des seuils codés en dur. Il semble qu'il n'y ait pas encore de ligne de commande ou d'API pour les métriques dans VS2008 (par this post sur le blog de l'équipe d'analyse de code) - j'espère qu'ils vont sortir un outil de calcul. Avez-vous regardé NDepend pour cela?

Questions connexes