Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
U kunt op drie manieren metrische codegegevens genereren:
Door .NET codekwaliteitsanalyses in te schakelen en de vier regels voor metrische codegegevens (onderhoudbaarheid) in te schakelen die deze bevat.
Kies de menuopdracht Analyseren>Code Metrics Berekenen in Visual Studio.
Vanaf de opdrachtregel voor C#- en Visual Basic-projecten.
Regels voor metrische code voor .NET-codekwaliteitsanalyses
De .NET-codekwaliteitsanalyses bevatten verschillende regels voor metrische codeanalyse :
Deze regels zijn standaard uitgeschakeld, maar u kunt deze inschakelen vanuit Solution Explorer of in een EditorConfig-bestand . Als u bijvoorbeeld regel CA1502 als waarschuwing wilt inschakelen, bevat uw EditorConfig-bestand de volgende vermelding:
dotnet_diagnostic.CA1502.severity = warning
Configuratie
U kunt de drempelwaarden configureren waarop de regels voor metrische code worden geactiveerd.
Maak een tekstbestand. U kunt bijvoorbeeld deze naamCodeMetricsConfig.txt geven.
Voeg de gewenste drempelwaarden toe aan het tekstbestand in de volgende indeling:
CA1502: 10In dit voorbeeld is regel CA1502 geconfigureerd om te worden geactiveerd wanneer de cyclomatische complexiteit van een methode groter is dan 10.
Markeer in het venster Eigenschappen van Visual Studio of in het projectbestand de buildactie van het configuratiebestand als AdditionalFiles. Voorbeeld:
<ItemGroup> <AdditionalFiles Include="CodeMetricsConfig.txt" /> </ItemGroup>
Menuopdracht Code Metrieken berekenen
Genereer metrische codegegevens voor een of al uw geopende projecten in de IDE met behulp van het> menuMetrische gegevens analyseren.
Resultaten van metrische codegegevens genereren voor een volledige oplossing
U kunt op een van de volgende manieren resultaten voor metrische codegegevens genereren voor een volledige oplossing:
Selecteer in de menubalk Analyseren>Code Metrics Berekenen>Voor de Oplossing.
Klik in Solution Explorer met de rechtermuisknop op de oplossing en selecteer vervolgens Metrische code berekenen.
Selecteer in het venster Metrische coderesultaten de knop Metrische code berekenen voor oplossing .
De resultaten worden gegenereerd en het venster Metrische resultaten van code wordt weergegeven. Als u de details van de resultaten wilt weergeven, vouwt u de structuur in de kolom Hiërarchie uit.
Resultaten voor metrische code genereren voor een of meer projecten
Selecteer een of meer projecten in Solution Explorer.
Selecteer in de menubalk de optie Analyseren>Code-metrieken berekenen>Voor geselecteerde projecten.
De resultaten worden gegenereerd en het venster Metrische resultaten van code wordt weergegeven. Als u de details van de resultaten wilt weergeven, vouwt u de structuur in de hiërarchie uit.
Metrische gegevens van de commandoregelcode
U kunt metrische codegegevens genereren vanaf de opdrachtregel voor C#- en Visual Basic-projecten voor .NET Framework-, .NET Core- en .NET Standard-apps. Als u metrische codegegevens vanaf de opdrachtregel wilt uitvoeren, installeert u het NuGet-pakket Microsoft.CodeAnalysis.Metrics of bouwt u het Metrics.exe uitvoerbaar bestand zelf.
Microsoft.CodeAnalysis.Metrics NuGet-pakket
De eenvoudigste manier om metrische codegegevens te genereren vanaf de opdrachtregel is door het NuGet-pakket Microsoft.CodeAnalysis.Metrics te installeren. Nadat u het pakket hebt geïnstalleerd, voert u msbuild /t:Metrics uit vanuit de map die uw projectbestand bevat. Voorbeeld:
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)
U kunt de naam van het uitvoerbestand overschrijven door /p:MetricsOutputFile=<filename> op te geven. U kunt ook metrische gegevens van verouderde code ophalen door te /p:LEGACY_CODE_METRICS_MODE=truespecificeren. Voorbeeld:
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)
Uitvoer van codemetrieken
De gegenereerde XML-uitvoer heeft de volgende indeling:
<?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
Als u het NuGet-pakket niet wilt installeren, kunt u het Metrics.exe uitvoerbaar bestand rechtstreeks genereren en gebruiken. Het aanmaken van het uitvoerbare bestand Metrics.exe:
Kloon de dotnet-/roslyn-analyzers-opslagplaats .
Open de Ontwikkelaars-opdrachtprompt voor Visual Studio als beheerder.
Voer vanuit de hoofdmap van de roslyn-analyzers-opslagplaats de volgende opdracht uit:
Restore.cmdWijzig de map in src\Tools\Metrics.
Voer de volgende opdracht uit om het project Metrics.csproj te bouwen:
msbuild /m /v:m /p:Configuration=Release Metrics.csprojEen uitvoerbaar bestand met de naamMetrics.exe wordt gegenereerd in de map artifacts\bin onder de hoofdmap van de opslagplaats.
Gebruik van Metrics.exe
Als uMetrics.exewilt uitvoeren, geeft u een project of oplossing en een XML-uitvoerbestand op als argumenten. Voorbeeld:
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.
Verouderde modus
U kunt ervoor kiezen om Metrics.exe te bouwen in de verouderde modus. Met de modus voor oudere versies van het hulpprogramma worden metingen gegenereerd die dichter liggen bij wat oudere versies van het hulpprogramma genereerden. Bovendien genereert Metrics.exe in de verouderde modus metrische codegegevens voor dezelfde set methodetypen waarvoor eerdere versies van het hulpprogramma metrische codegegevens zijn gegenereerd. Er worden bijvoorbeeld geen metrische codegegevens gegenereerd voor initialisatie van velden en eigenschappen. Verouderde modus is handig voor achterwaartse compatibiliteit of als u codecontrolepoorten hebt op basis van metrische codenummers. De opdracht om Metrics.exete bouwen in de verouderde modus is:
msbuild /m /v:m /t:rebuild /p:LEGACY_CODE_METRICS_MODE=true Metrics.csproj
Zie Het genereren van metrische codegegevens in de verouderde modus inschakelen voor meer informatie.
Vorige versies
Visual Studio 2015 bevatte een opdrachtregelcode-metriekehulpprogramma dat ook Metrics.exe werd genoemd. Deze vorige versie van het hulpprogramma heeft een binaire analyse uitgevoerd, dat wil gezegd, een op assembly gebaseerde analyse. De nieuwere versie van het hulpprogrammaMetrics.exe analyseert in plaats daarvan broncode. Omdat het nieuwere Metrics.exe hulpprogramma op broncode is gebaseerd, kunnen de resultaten van metrische opdrachtregelcodegegevens afwijken van de resultaten die zijn gegenereerd door de Visual Studio IDE en door eerdere versies van Metrics.exe. Vanaf Visual Studio 2019 analyseert Visual Studio IDE broncode zoals het opdrachtregelprogramma en moeten de resultaten hetzelfde zijn.
Met het nieuwe hulpprogramma voor metrische opdrachtregelcode worden metrische gegevens berekend, zelfs in aanwezigheid van broncodefouten, zolang de oplossing en het project kunnen worden geladen.
Verschillen in metrische waarde
Vanaf Visual Studio 2019 versie 16.4 en Microsoft.CodeAnalysis.Metrics (2.9.5) vervangen SourceLines en ExecutableLines de vorige LinesOfCode metriek. Zie Metrische codewaarden voor meer informatie over de nieuwe metrische gegevens. De LinesOfCode metric is beschikbaar in legacy-modus.
Andere metrische gegevens, zoals CyclomaticComplexity en MaintainabilityIndex gebruiken dezelfde formules als eerdere versies van Metrics.exe, maar het nieuwe hulpprogramma telt het aantal IOperations (logische broninstructies) in plaats van tussenliggende taalinstructies (IL). De getallen zijn iets anders dan de getallen die worden gegenereerd door de Visual Studio IDE en door eerdere versies van Metrics.exe.