Подтвердить что ты не робот

Как автоматизировать функцию Visual Studio Code Metrics

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

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

4b9b3361

Ответ 2

Вот как моя компания автоматизировала FxCop с помощью 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>

код >

Затем вы можете написать код С# для использования выходного файла:

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

Ответ 3

jgwood - я считаю, что он ссылается на метрики кода (циклическая сложность и т.д.), а не на FxCop. Я искал решение для этого, так как правило FxCop для сложности имеет hardcoded threshholds. Кажется, что нет никакой командной строки или API для метрик в VS2008 (за этот пост в блоге Team Code) - надеюсь, они Выпустит электроинструмент.

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