Как автоматизировать функцию метрик кода в Visual Studio - PullRequest
11 голосов
/ 08 декабря 2008

Я хочу автоматизировать процесс сбора метрик кода в .NET-решении. Есть ли способ заставить msbuild запустить функцию Code Metrics, включенную в VS2008 Development Edition?

Я могу в итоге использовать SourceMonitor , но я хотел бы знать, есть ли способ использовать механизм метрик кода VS из командной строки.

Ответы [ 3 ]

9 голосов
/ 10 февраля 2011

Наконец, Microsoft предоставила нам способ автоматизации функции метрик кода Visual Studio с использованием нового инструмента power .

5 голосов
/ 08 января 2009

Вот как моя компания автоматизировала FxCop с помощью MSBuild:

</p> <pre><code><!-- 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>

Затем вы можете написать код 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);
}
2 голосов
/ 20 января 2009

jgwood - я полагаю, он имеет в виду метрики кода (цикломатическая сложность и т. Д.), А не FxCop. Я также искал решение для этого, так как правило сложности FxCop имеет жестко заданные пороги. Похоже, что пока нет никакой командной строки или API для метрик в VS2008 (за этот пост в блоге команды анализа кода) - надеюсь, они выпустят powertool.

Вы смотрели на NDepend для этого?

...