Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A kódmetrikák adatait három módon hozhatja létre:
A .NET-kódminőség-elemzők engedélyezésével és a benne található négy kódmetrika (karbantarthatóság) engedélyezésével.
A Kódmetrikák> parancs kiválasztásával a Visual Studióban.
A C# és Visual Basic projektek parancssorából .
.NET-kódminőség-elemzők kódmetrikáinak szabályai
A .NET kódminőség-elemzői számos kódmetrikaelemző szabályt tartalmaznak:
Ezek a szabályok alapértelmezés szerint le vannak tiltva, de a Megoldáskezelőben vagy egy Szerkesztőkonfigurációs fájlban engedélyezheti őket. Ha például figyelmeztetésként szeretné engedélyezni a CA1502 szabályt, a EditorConfig fájl a következő bejegyzést tartalmazza:
dotnet_diagnostic.CA1502.severity = warning
Konfiguráció
Konfigurálhatja azokat a küszöbértékeket, amelyeknél a kódmetrikák szabálya aktiválódik.
Szövegfájl létrehozása. Példaként elnevezheti CodeMetricsConfig.txt.
Adja hozzá a kívánt küszöbértékeket a szövegfájlhoz a következő formátumban:
CA1502: 10Ebben a példában a CA1502 szabály úgy van konfigurálva, hogy aktiválódjon, ha egy metódus ciklonmatikus összetettsége nagyobb, mint 10.
A Visual Studio Tulajdonságok ablakában vagy a projektfájlban jelölje meg a konfigurációs fájl buildelési műveletét AdditionalFilesként. Például:
<ItemGroup> <AdditionalFiles Include="CodeMetricsConfig.txt" /> </ItemGroup>
A Kódmetrikák kiszámítása menü parancsa
Kódmetrikákat hozhat létre egy vagy az összes nyitott projekthez az IDE-ben aKódmetrikák elemzése> menü használatával.
Kódmetrikák eredményeinek létrehozása egy teljes megoldáshoz
A kódmetrikák eredményeit az alábbi módokon hozhatja létre egy teljes megoldáshoz:
A menüsávon válassza aMegoldás kódmetrikáinak>elemzése> lehetőséget.
A Megoldáskezelőben kattintson a jobb gombbal a megoldásra, majd válassza a Kódmetrikák kiszámítása lehetőséget.
A Kódmetrikák eredményei ablakban válassza a Megoldás kódmetrikáinak kiszámítása gombot.
A rendszer létrehozza az eredményeket, és megjelenik a Code Metrics Results ablak. Az eredmények részleteinek megtekintéséhez bontsa ki a fát a Hierarchia oszlopban.
Kódmetrikák eredményeinek létrehozása egy vagy több projekthez
A Megoldáskezelőben jelöljön ki egy vagy több projektet.
A menüsávon válassza aKiválasztott projekt(ek)>> lehetőséget.
A rendszer létrehozza az eredményeket, és megjelenik a Code Metrics Results ablak. Az eredmények részleteinek megtekintéséhez bontsa ki a fát a hierarchiában.
Parancssori kódmetrikák
A kódmetrikák adatait a .NET-keretrendszerhez, .NET Core-hoz és .NET Standard-alkalmazásokhoz készült C# és Visual Basic-projektek parancssorából hozhatja létre. A kódmetrikák parancssorból való futtatásához telepítse a Microsoft.CodeAnalysis.Metrics NuGet-csomagot , vagy hozza létre a Metrics.exe végrehajtható fájlt.
Microsoft.CodeAnalysis.Metrics NuGet-csomag
A kódmetrikaadatok parancssorból történő létrehozásának legegyszerűbb módja a Microsoft.CodeAnalysis.Metrics NuGet-csomag telepítése. A csomag telepítése után futtassa msbuild /t:Metrics a projektfájlt tartalmazó könyvtárból. Például:
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)
A kimeneti fájl nevét felülbírálhatja a megadott beállítással /p:MetricsOutputFile=<filename>. A régi stílusú kódmetrikák adatait is lekérheti a /p:LEGACY_CODE_METRICS_MODE=truemegadott beállítással. Például:
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)
Kódmetrikák kimenete
A létrehozott XML-kimenet formátuma a következő:
<?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
Ha nem szeretné telepíteni a NuGet-csomagot, közvetlenül létrehozhatja és használhatja a Metrics.exe végrehajtható fájlt. A Metrics.exevégrehajtható létrehozása:
Klónozza a dotnet/roslyn-analyzers adattárat.
Nyissa meg a Visual Studio fejlesztői parancssorát rendszergazdaként.
A roslyn-analyzers adattár gyökeréből hajtsa végre a következő parancsot:
Restore.cmdMódosítsa a könyvtárat src\Tools\Metrics értékre.
Hajtsa végre a következő parancsot a Metrics.csproj projekt létrehozásához:
msbuild /m /v:m /p:Configuration=Release Metrics.csprojA rendszer létrehoz egy Metrics.exe nevű végrehajtható fájlt az adattárgyökér alatti artifacts\bin könyvtárban.
Metrics.exe használat
AMetrics.exefuttatásához adjon meg egy projektet vagy megoldást, valamint egy kimeneti XML-fájlt argumentumként. Például:
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.
Régi mód
Dönthet úgy, hogy a Metrics.exe elemet hagyományos módban építi fel. Az eszköz örökölt módú verziója olyan metrikaértékeket hoz létre, amelyek közelebb állnak az eszköz régebbi verzióihoz. Emellett örökölt módban Metrics.exe kódmetrikákat hoz létre ugyanazon metódustípusokhoz, amelyekhez az eszköz korábbi verziói kódmetrikákat generáltak. Például nem hoz létre kódmetrikaadatokat a mező- és tulajdonság-inicializálókhoz. A régi mód hasznos a visszamenőleges kompatibilitáshoz, vagy ha kódmetrikai számokon alapuló kódbeadási kapukkal rendelkezik. A parancs az örökölt módban történő Metrics.exe létrehozásához:
msbuild /m /v:m /t:rebuild /p:LEGACY_CODE_METRICS_MODE=true Metrics.csproj
További információ: Kódmetrikák létrehozásának engedélyezése örökölt módban.
Korábbi verziók
A Visual Studio 2015 tartalmazott egy parancssori kódmetrika eszközt, amelyet Metrics.exenéven is ismertek. Az eszköz előző verziója bináris elemzést, azaz szerelvényalapú elemzést hajtottak létre. A Metrics.exe eszköz újabb verziója inkább a forráskódot elemzi. Mivel az újabb Metrics.exe eszköz forráskódalapú, a parancssori kódmetrika eredményei eltérhetnek a Visual Studio IDE és a Metrics.exekorábbi verziói által létrehozott eredményekétől. A Visual Studio IDE a Visual Studio 2019-től kezdve ugyanúgy elemzi a forráskódot, mint a parancssori eszközt, és az eredményeknek azonosnak kell lenniük.
Az új parancssori kódmetrika eszköz még forráskódhibák esetén is kiszámítja a metrikákat, amíg a megoldás és a projekt betölthető.
Metrikaérték-különbségek
A Visual Studio 2019 16.4-es verziójától és a Microsoft.CodeAnalysis.Metrics (2.9.5) verziójától kezdve a SourceLines és ExecutableLines helyettesíti az előző LinesOfCode metrikát. Az új metrikák leírását a Kódmetrikák értékei című témakörben talál. A LinesOfCode metrika örökölt módban érhető el.
Más metrikák, például CyclomaticComplexityMaintainabilityIndex a Metrics.exekorábbi verzióival megegyező képleteket használnak, de az új eszköz a köztes nyelv (IL) utasítások helyett a (logikai forrásutasítások) számát IOperations számolja. A számok kissé eltérnek a Visual Studio IDE és a Metrics.exekorábbi verziói által generált számoktól.