Sdílet prostřednictvím


Generování dat metrik kódu

Data metrik kódu můžete generovat třemi způsoby:

Pravidla metrik kódu analyzátorů kvality kódu .NET

Analyzátory kvality kódu .NET zahrnují několik pravidel analyzátoru metrik kódu:

Tato pravidla jsou ve výchozím nastavení zakázaná, ale můžete je povolit v Průzkumníku řešení nebo v souboru EditorConfig . Pokud chcete například povolit pravidlo CA1502 jako upozornění, soubor EditorConfig bude obsahovat následující položku:

dotnet_diagnostic.CA1502.severity = warning

Konfigurace

Můžete nakonfigurovat prahové hodnoty, na kterých se pravidla metrik kódu aktivují.

  1. Vytvořte textový soubor. Můžete ji například pojmenovat CodeMetricsConfig.txt.

  2. Do textového souboru přidejte požadované prahové hodnoty v následujícím formátu:

    CA1502: 10
    

    V tomto příkladu je pravidlo CA1502 nakonfigurováno tak, aby se aktivovalo, když je složitost cyklomatické metody větší než 10.

  3. V okně Vlastnosti sady Visual Studio nebo v souboru projektu označte akci sestavení konfiguračního souboru jako AdditionalFiles. Například:

    <ItemGroup>
      <AdditionalFiles Include="CodeMetricsConfig.txt" />
    </ItemGroup>
    

Příkaz nabídky Calculate Code Metrics (Výpočet metrik kódu)

Vygenerujte metriky kódu pro jeden nebo všechny otevřené projekty v integrovaném vývojovém prostředí pomocí nabídky Analyzovat>výpočet metrik kódu .

Generování výsledků metrik kódu pro celé řešení

Výsledky metrik kódu pro celé řešení můžete vygenerovat některým z následujících způsobů:

  • Na řádku nabídek vyberte Analyzovat>Vypočítat metriky kódu>pro řešení.

  • V Průzkumníku řešení klikněte pravým tlačítkem na řešení a pak vyberte Vypočítat metriky kódu.

  • V okně Výsledky metrik kódu vyberte tlačítko Vypočítat metriky kódu pro řešení .

Výsledky se vygenerují a zobrazí se okno Výsledky metrik kódu . Pokud chcete zobrazit podrobnosti o výsledcích, rozbalte strom ve sloupci Hierarchie .

Generování výsledků metrik kódu pro jeden nebo více projektů

  1. V Průzkumníku řešení vyberte jeden nebo více projektů.

  2. Na řádku nabídek vyberte Analyzovat>, Vyhodnotit metriky kódu> pro vybrané projekty.

Výsledky se vygenerují a zobrazí se okno Výsledky metrik kódu . Pokud chcete zobrazit podrobnosti o výsledcích, rozbalte strom v hierarchii.

Metriky kódu příkazového řádku

Data metrik kódu můžete generovat z příkazového řádku pro projekty C# a Visual Basic pro aplikace .NET Framework, .NET Core a .NET Standard. Pokud chcete spustit metriky kódu z příkazového řádku, nainstalujte balíček NuGet Microsoft.CodeAnalysis.Metrics nebo sestavte spustitelný souborMetrics.exe sami.

Balíček NuGet Microsoft.CodeAnalysis.Metrics

Nejjednodušší způsob, jak generovat data metrik kódu z příkazového řádku, je instalace balíčku NuGet Microsoft.CodeAnalysis.Metrics . Po instalaci balíčku spusťte msbuild /t:Metrics z adresáře, který obsahuje váš soubor projektu. Například:

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)

Název výstupního souboru můžete přepsat zadáním /p:MetricsOutputFile=<filename>. Můžete také získat data metrik kódu staršího stylu zadáním /p:LEGACY_CODE_METRICS_MODE=true. Například:

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)

Výstup metrik kódu

Vygenerovaný výstup XML má následující formát:

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

Pokud nechcete balíček NuGet nainstalovat, můžete vygenerovat a použít Metrics.exe spustitelný soubor přímo. Aby bylo možné vygenerovat spustitelný souborMetrics.exe :

  1. Naklonujte úložiště dotnet/roslyn-analyzers .

  2. Otevřete vývojářský příkazový řádek pro Visual Studio jako správce.

  3. V kořenovém adresáři úložiště roslyn-analyzers spusťte následující příkaz: Restore.cmd

  4. Změňte adresář na src\Tools\Metrics.

  5. Spuštěním následujícího příkazu sestavte projekt Metrics.csproj :

    msbuild /m /v:m /p:Configuration=Release Metrics.csproj
    

    Spustitelný soubor s názvem Metrics.exe se vygeneruje v adresáři artifacts\bin v kořenovém adresáři úložiště.

Metrics.exe využití

Pokud chcete spustit Metrics.exe, zadejte projekt nebo řešení a výstupní soubor XML jako argumenty. Například:

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.

Starší režim

Můžete se rozhodnout vytvořit Metrics.exe v režimu starší verze. Verze starší verze režimu nástroje generuje hodnoty metrik, které jsou blíže k tomu, jaké starší verze nástroje se vygenerovaly. Kromě toho v režimu starší verze Metrics.exe generuje metriky kódu pro stejnou sadu typů metod, pro které předchozí verze nástroje generovaly metriky kódu. Například negeneruje data metrik kódu pro inicializátory polí a vlastností. Starší režim je užitečný pro zpětnou kompatibilitu nebo pokud máte kontrolní brány kódu založené na číslech metrik kódu. Příkaz pro sestavení Metrics.exe v režimu starší verze je:

msbuild /m /v:m /t:rebuild /p:LEGACY_CODE_METRICS_MODE=true Metrics.csproj

Další informace najdete v tématu Povolení generování metrik kódu v režimu starší verze.

Předchozí verze

Visual Studio 2015 obsahovalo nástroj pro metriky kódu příkazového řádku, který se také nazývá Metrics.exe. Tato předchozí verze nástroje provedla binární analýzu, tj. analýzu založenou na sestavení. Novější verze nástroje Metrics.exe analyzuje zdrojový kód. Vzhledem k tomu, že novější nástrojMetrics.exe je založený na zdrojovém kódu, můžou se výsledky metrik kódu příkazového řádku lišit od výsledků vygenerovaných integrovaným vývojovém prostředím sady Visual Studio a předchozími verzemi Metrics.exe. Počínaje sadou Visual Studio 2019 analyzuje integrované vývojové prostředí sady Visual Studio zdrojový kód, jako je nástroj příkazového řádku, a výsledky by měly být stejné.

Nový nástroj pro metriky kódu příkazového řádku vypočítá metriky i v případě chyb zdrojového kódu, pokud je možné načíst řešení a projekt.

Rozdíly mezi hodnotami metrik

Počínaje Visual Studio 2019 verze 16.4 a Microsoft.CodeAnalysis.Metrics (2.9.5) SourceLines a ExecutableLines nahrazují předchozí metriku LinesOfCode. Popis nových metrik najdete v tématu Kódové hodnoty metrik. Metrika LinesOfCode je k dispozici v režimu starší verze.

Jiné metriky, jako CyclomaticComplexity jsou a MaintainabilityIndex používají stejné vzorce jako předchozí verze Metrics.exe, ale nový nástroj spočítá počet (instrukce logického IOperations zdroje) místo zprostředkujícího jazyka (IL). Čísla se mírně liší od čísel vygenerovaných integrovaným vývojovém prostředím sady Visual Studio a předchozími verzemi Metrics.exe.