Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Data metrik kódu můžete generovat třemi způsoby:
Povolením analyzátorů kvality kódu platformy .NET a povolením čtyř pravidel metrik kódu (udržovatelnosti), která obsahuje.
Výběrem příkazu nabídky Analyzovat>výpočet metrik kódu v sadě Visual Studio.
Z příkazového řádku pro projekty jazyka C# a Visual Basic.
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í.
Vytvořte textový soubor. Můžete ji například pojmenovat CodeMetricsConfig.txt.
Do textového souboru přidejte požadované prahové hodnoty v následujícím formátu:
CA1502: 10V tomto příkladu je pravidlo CA1502 nakonfigurováno tak, aby se aktivovalo, když je složitost cyklomatické metody větší než 10.
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ů
V Průzkumníku řešení vyberte jeden nebo více projektů.
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 :
Naklonujte úložiště dotnet/roslyn-analyzers .
Otevřete vývojářský příkazový řádek pro Visual Studio jako správce.
V kořenovém adresáři úložiště roslyn-analyzers spusťte následující příkaz:
Restore.cmdZměňte adresář na src\Tools\Metrics.
Spuštěním následujícího příkazu sestavte projekt Metrics.csproj :
msbuild /m /v:m /p:Configuration=Release Metrics.csprojSpustitelný 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.