Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Данные метрик кода можно создавать тремя способами:
Включение анализаторов качества кода .NET и включение четырех правил метрики кода (возможности обслуживания), содержащихся в нем.
Выбрав команду меню Анализ>Рассчитать метрики кода в Visual Studio.
С командной строки для проектов на C# и Visual Basic.
Правила метрик кода для анализаторов качества кода .NET
Анализаторы качества кода .NET включают несколько правил анализатора метрик кода:
Эти правила отключены по умолчанию, но их можно включить в обозревателе решений или в файле EditorConfig . Например, чтобы включить правило CA1502 в качестве предупреждения, файл EditorConfig будет содержать следующую запись:
dotnet_diagnostic.CA1502.severity = warning
Конфигурация
Можно настроить пороговые значения, с которыми срабатывает правила метрик кода.
Создайте текстовый файл. Например, можно назвать его CodeMetricsConfig.txt.
Добавьте требуемые пороговые значения в текстовый файл в следующем формате:
CA1502: 10В этом примере правило CA1502 настроено для срабатывания, если цикломатическая сложность метода превышает 10.
В окне свойств Visual Studio или в файле проекта помечайте действие сборки файла конфигурации как AdditionalFiles. Рассмотрим пример.
<ItemGroup> <AdditionalFiles Include="CodeMetricsConfig.txt" /> </ItemGroup>
Команда меню "Вычислять метрики кода"
Создайте метрики кода для одного или всех ваших открытых проектов в IDE, используя меню Анализ>Вычислить метрики кода.
Создание результатов метрик кода для всего решения
Результаты метрик кода можно создавать для всего решения любым из следующих способов:
В строке меню выберите Анализ>Вычислить метрики кода>для решения.
В обозревателе решений щелкните решение правой кнопкой мыши и выберите "Вычислить метрики кода".
В окне результатов метрик кода нажмите кнопку "Вычислить метрики кода" для решения .
Результаты создаются и отображается окно результатов метрик кода . Чтобы просмотреть сведения о результатах, разверните дерево в столбце Иерархии .
Создание результатов метрик кода для одного или нескольких проектов
В обозревателе решений выберите один или несколько проектов.
В строке меню выберите Анализировать>Расчёт метрик кода>для выбранного/выбранных проекта(ов).
Результаты создаются и отображается окно результатов метрик кода . Чтобы просмотреть сведения о результатах, разверните дерево в иерархии.
Метрики кода командной строки
Вы можете создавать данные метрик кода из командной строки для проектов C# и Visual Basic для приложений .NET Framework, .NET Core и .NET Standard. Чтобы запустить метрики кода из командной строки, установите пакет NuGet Microsoft.CodeAnalysis.Metrics или создайте исполняемый файл Metrics.exe самостоятельно.
Пакет NuGet Microsoft.CodeAnalysis.Metrics
Самый простой способ создать данные метрик кода из командной строки — установить пакет NuGet Microsoft.CodeAnalysis.Metrics . После установки пакета запустите msbuild /t:Metrics из каталога, содержащего файл проекта. Рассмотрим пример.
C:\source\repos\ClassLibrary3\ClassLibrary3>msbuild /t:Metrics
Microsoft (R) Build Engine version 16.0.360-preview+g9781d96883 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
Build started 1/22/2019 4:29:57 PM.
Project "C:\source\repos\ClassLibrary3\ClassLibrary3\ClassLibrary3.csproj" on node 1 (Metrics target(s))
.
Metrics:
C:\source\repos\ClassLibrary3\packages\Microsoft.CodeMetrics.2.6.4-ci\build\\..\Metrics\Metrics.exe /project:C:\source\repos\ClassLibrary3\ClassLibrary3\ClassLibrary3.csproj /out:ClassLibrary3.Metrics.xml
Loading ClassLibrary3.csproj...
Computing code metrics for ClassLibrary3.csproj...
Writing output to 'ClassLibrary3.Metrics.xml'...
Completed Successfully.
Done Building Project "C:\source\repos\ClassLibrary3\ClassLibrary3\ClassLibrary3.csproj" (Metrics target(s)).
Build succeeded.
0 Warning(s)
0 Error(s)
Можно переопределить имя выходного файла, указав /p:MetricsOutputFile=<filename>. Кроме того, можно получить данные метрик в стиле прежних версий , указав /p:LEGACY_CODE_METRICS_MODE=true. Рассмотрим пример.
C:\source\repos\ClassLibrary3\ClassLibrary3>msbuild /t:Metrics /p:LEGACY_CODE_METRICS_MODE=true /p:MetricsOutputFile="Legacy.xml"
Microsoft (R) Build Engine version 16.0.360-preview+g9781d96883 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
Build started 1/22/2019 4:31:00 PM.
The "MetricsOutputFile" property is a global property, and cannot be modified.
Project "C:\source\repos\ClassLibrary3\ClassLibrary3\ClassLibrary3.csproj" on node 1 (Metrics target(s))
.
Metrics:
C:\source\repos\ClassLibrary3\packages\Microsoft.CodeMetrics.2.6.4-ci\build\\..\Metrics.Legacy\Metrics.Legacy.exe /project:C:\source\repos\ClassLibrary3\ClassLibrary3\ClassLibrary3.csproj /out:Legacy.xml
Loading ClassLibrary3.csproj...
Computing code metrics for ClassLibrary3.csproj...
Writing output to 'Legacy.xml'...
Completed Successfully.
Done Building Project "C:\source\repos\ClassLibrary3\ClassLibrary3\ClassLibrary3.csproj" (Metrics target(s)).
Build succeeded.
0 Warning(s)
0 Error(s)
Выходные данные метрик кода
Созданный выходный код XML принимает следующий формат:
<?xml version="1.0" encoding="utf-8"?>
<CodeMetricsReport Version="1.0">
<Targets>
<Target Name="ConsoleApp20.csproj">
<Assembly Name="ConsoleApp20, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<Metrics>
<Metric Name="MaintainabilityIndex" Value="100" />
<Metric Name="CyclomaticComplexity" Value="1" />
<Metric Name="ClassCoupling" Value="1" />
<Metric Name="DepthOfInheritance" Value="1" />
<Metric Name="SourceLines" Value="11" />
<Metric Name="ExecutableLines" Value="1" />
</Metrics>
<Namespaces>
<Namespace Name="ConsoleApp20">
<Metrics>
<Metric Name="MaintainabilityIndex" Value="100" />
<Metric Name="CyclomaticComplexity" Value="1" />
<Metric Name="ClassCoupling" Value="1" />
<Metric Name="DepthOfInheritance" Value="1" />
<Metric Name="SourceLines" Value="11" />
<Metric Name="ExecutableLines" Value="1" />
</Metrics>
<Types>
<NamedType Name="Program">
<Metrics>
<Metric Name="MaintainabilityIndex" Value="100" />
<Metric Name="CyclomaticComplexity" Value="1" />
<Metric Name="ClassCoupling" Value="1" />
<Metric Name="DepthOfInheritance" Value="1" />
<Metric Name="SourceLines" Value="7" />
<Metric Name="ExecutableLines" Value="1" />
</Metrics>
<Members>
<Method Name="void Program.Main(string[] args)" File="C:\source\repos\ConsoleApp20\ConsoleApp20\Program.cs" Line="7">
<Metrics>
<Metric Name="MaintainabilityIndex" Value="100" />
<Metric Name="CyclomaticComplexity" Value="1" />
<Metric Name="ClassCoupling" Value="1" />
<Metric Name="SourceLines" Value="4" />
<Metric Name="ExecutableLines" Value="1" />
</Metrics>
</Method>
</Members>
</NamedType>
</Types>
</Namespace>
</Namespaces>
</Assembly>
</Target>
</Targets>
</CodeMetricsReport>
Metrics.exe
Если вы не хотите установить пакет NuGet, можно создать и использовать исполняемый файл Metrics.exe напрямую. Чтобы создать исполняемый файл Metrics.exe , выполните следующие действия.
Клонируйте репозиторий dotnet/roslyn-analyzers .
Откройте командную строку разработчика для Visual Studio в качестве администратора.
В корневом каталоге репозитория roslyn-analyzers выполните следующую команду:
Restore.cmdИзмените каталог на src\Tools\Metrics.
Выполните следующую команду, чтобы создать проект Metrics.csproj :
msbuild /m /v:m /p:Configuration=Release Metrics.csprojИсполняемый файл с именемMetrics.exe создается в каталоге артефактов\bin в корневом каталоге репозитория.
использование Metrics.exe
Чтобы запустить Metrics.exe, укажите проект или решение и выходной XML-файл в качестве аргументов. Рассмотрим пример.
C:\>Metrics.exe /project:ConsoleApp20.csproj /out:report.xml
Loading ConsoleApp20.csproj...
Computing code metrics for ConsoleApp20.csproj...
Writing output to 'report.xml'...
Completed Successfully.
Устаревший режим
Вы можете создать Metrics.exe в устаревшем режиме. Версия устаревшего режима средства создает значения метрик, которые ближе к старым версиям созданного средства. Кроме того, в устаревшем режиме Metrics.exe создает метрики кода для того же набора типов методов, для которых предыдущие версии средства генерировали метрики кода. Например, он не создает данные метрик кода для инициализаторов полей и свойств. Устаревший режим полезен для обратной совместимости или если у вас есть шлюзы проверки кода на основе номеров метрик кода. Команда для сборки Metrics.exe в устаревшем режиме:
msbuild /m /v:m /t:rebuild /p:LEGACY_CODE_METRICS_MODE=true Metrics.csproj
Для получения дополнительных сведений см. раздел "Включение генерации метрик кода в устаревшем режиме".
Предыдущие версии
Visual Studio 2015 включал средство метрик кода командной строки, которое также называлось Metrics.exe. Ранняя версия этого инструмента выполняла двоичный анализ, то есть анализ на уровне сборки. Более новая версия средства Metrics.exe анализирует исходный код. Так как более новое средство Metrics.exe основано на исходном коде, метрики кода командной строки могут отличаться от результатов, созданных интегрированной среды разработки Visual Studio и предыдущими версиями Metrics.exe. Начиная с Visual Studio 2019 интегрированная среда разработки Visual Studio анализирует исходный код, например средство командной строки, и результаты должны совпадать.
Новое средство метрики кода командной строки вычисляет метрики даже в присутствии ошибок исходного кода, если решение и проект можно загрузить.
Различия значений метрик
Начиная с Visual Studio 2019 версии 16.4 и Microsoft.CodeAnalysis.Metrics (2.9.5) SourceLines и ExecutableLines замените предыдущую LinesOfCode метрику. Описание новых метрик см. в разделе "Значения метрик кода". Метрика LinesOfCode предоставляется в устаревшем режиме.
Другие метрики, такие как CyclomaticComplexity и MaintainabilityIndex, используют те же формулы, что и предыдущие версии Metrics.exe, но новый инструмент подсчитывает количество IOperations (логических исходных инструкций) вместо инструкций промежуточного языка (IL). Номера будут немного отличаться от тех, которые создаются интегрированной среды разработки Visual Studio и предыдущими версиями Metrics.exe.