Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können Codemetrikendaten auf drei Arten generieren:
Durch Aktivieren von .NET-Codequalitätsanalysatoren und Aktivieren der darin enthaltenen vier Codemetrikenregeln (Maintainability).
Durch Auswählen des Menüs "Codemetriken analysieren>" in Visual Studio.
Aus der Befehlszeile für C#- und Visual Basic-Projekte.
Codemetrikenregeln für .NET-Codequalitätsanalyse
Zu den .NET-Codequalitätsanalysatoren gehören mehrere Codemetrikenanalyseregeln :
Diese Regeln sind standardmäßig deaktiviert, aber Sie können sie im Projektmappen-Explorer oder in einer EditorConfig-Datei aktivieren. Um z. B. die Regel CA1502 als Warnung zu aktivieren, enthält die EditorConfig-Datei den folgenden Eintrag:
dotnet_diagnostic.CA1502.severity = warning
Konfiguration
Sie können die Schwellenwerte konfigurieren, an denen die Codemetrikenregeln ausgelöst werden.
Erstellen Sie eine Textdatei. Als Beispiel können Sie es CodeMetricsConfig.txtbenennen.
Fügen Sie der Textdatei im folgenden Format die gewünschten Schwellenwerte hinzu:
CA1502: 10
In diesem Beispiel wird die Regel CA1502 so konfiguriert, dass sie ausgelöst wird, wenn die zyklomatische Komplexität einer Methode größer als 10 ist.
Markieren Sie im Eigenschaftenfenster von Visual Studio oder in der Projektdatei die Buildaktion der Konfigurationsdatei als AdditionalFiles. Beispiel:
<ItemGroup> <AdditionalFiles Include="CodeMetricsConfig.txt" /> </ItemGroup>
Befehl 'Codemetriken berechnen'
Generieren Sie Codemetriken für ein oder alle geöffneten Projekte in der IDE mithilfe des Menüs "Codemetrikenanalysieren>".
Generieren von Codemetrikenergebnissen für eine gesamte Lösung
Sie können Codemetrikenergebnisse für eine gesamte Lösung auf eine der folgenden Arten generieren:
Wählen Sie in der Menüleiste "Berechnen von Codemetrikenfür Lösunganalysieren>>" aus.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Projektmappe, und wählen Sie dann " Codemetriken berechnen" aus.
Wählen Sie im Fenster "Ergebnisse der Codemetriken " die Schaltfläche " Codemetriken für Lösung berechnen " aus.
Die Ergebnisse werden generiert, und das Fenster " Ergebnisse der Codemetriken " wird angezeigt. Um die Ergebnisdetails anzuzeigen, erweitern Sie die Struktur in der Spalte "Hierarchie ".
Generieren von Codemetrikenergebnissen für ein oder mehrere Projekte
Wählen Sie im Projektmappen-Explorer ein oder mehrere Projekte aus.
Wählen Sie in der Menüleiste "Berechnen von Codemetriken>für ausgewählte Projekteanalysieren>" aus.
Die Ergebnisse werden generiert, und das Fenster " Ergebnisse der Codemetriken " wird angezeigt. Um die Ergebnisdetails anzuzeigen, erweitern Sie die Struktur in der Hierarchie.
Befehlszeilencodemetriken
Sie können Codemetrikendaten aus der Befehlszeile für C#- und Visual Basic-Projekte für .NET Framework-, .NET Core- und .NET Standard-Apps generieren. Um Codemetriken über die Befehlszeile auszuführen, installieren Sie das NuGet-Paket "Microsoft.CodeAnalysis.Metrics" , oder erstellen Sie die Metrics.exe ausführbare Datei selbst.
Microsoft.CodeAnalysis.Metrics NuGet-Paket
Die einfachste Möglichkeit zum Generieren von Codemetrikendaten aus der Befehlszeile besteht darin, das NuGet-Paket "Microsoft.CodeAnalysis.Metrics " zu installieren. Nachdem Sie das Paket installiert haben, führen msbuild /t:Metrics
Sie es aus dem Verzeichnis aus, das Ihre Projektdatei enthält. Beispiel:
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)
Sie können den Namen der Ausgabedatei überschreiben, indem Sie angeben /p:MetricsOutputFile=<filename>
. Sie können auch Codemetrikendaten im Legacy-Stil abrufen, indem Sie angeben /p:LEGACY_CODE_METRICS_MODE=true
. Beispiel:
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)
Ausgabe von Codemetriken
Die generierte XML-Ausgabe hat das folgende Format:
<?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
Wenn Sie das NuGet-Paket nicht installieren möchten, können Sie das Metrics.exe ausführbare Datei direkt generieren und verwenden. So generieren Sie die Metrics.exe ausführbare Datei:
Klonen Sie das Dotnet/roslyn-Analyzer-Repository .
Öffnen Sie die Eingabeaufforderung für Entwickler für Visual Studio als Administrator.
Führen Sie im Stammverzeichnis des Roslyn-Analyzer-Repositorys den folgenden Befehl aus:
Restore.cmd
Ändern Sie das Verzeichnis in "src\Tools\Metrics".
Führen Sie den folgenden Befehl aus, um das Metrics.csproj-Projekt zu erstellen:
msbuild /m /v:m /p:Configuration=Release Metrics.csproj
Eine ausführbare Datei mit dem Namen Metrics.exe wird im Artefakt\bin-Verzeichnis unter dem Repositorystamm generiert.
Metrics.exe Nutzung
Um Metrics.exeauszuführen, geben Sie ein Projekt oder eine Lösung und eine XML-Ausgabedatei als Argumente an. Beispiel:
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.
Legacymodus
Sie können Metrics.exe im Legacymodus erstellen. Die Legacymodusversion des Tools generiert Metrikwerte, die den älteren Versionen des Tools näher kommen. Darüber hinaus generiert Metrics.exe Codemetriken für den gleichen Satz von Methodentypen, für die frühere Versionen des Tools Codemetriken generiert haben. Sie generiert beispielsweise keine Codemetrikendaten für Feld- und Eigenschaftsinitialisierer. Der Legacymodus ist für die Abwärtskompatibilität nützlich oder wenn Sie Code-Check-In-Gates basierend auf Codemetrikennummern haben. Der Befehl zum Erstellen Metrics.exe im Legacymodus lautet:
msbuild /m /v:m /t:rebuild /p:LEGACY_CODE_METRICS_MODE=true Metrics.csproj
Weitere Informationen finden Sie unter Aktivieren des Generierens von Codemetriken im Legacymodus.
Vorherige Versionen
Visual Studio 2015 enthält ein Befehlszeilencodemetrikentool, das auch alsMetrics.exebezeichnet wurde. Diese frühere Version des Tools hat eine binäre Analyse ausgeführt, d. h. eine assemblybasierte Analyse. Stattdessen analysiert die neuere Version des toolsMetrics.exe Quellcode. Da das neuere Metrics.exe Tool quellcodebasiert ist, unterscheiden sich die Ergebnisse von Befehlszeilencodemetriken möglicherweise von denen, die von der Visual Studio-IDE und früheren Versionen von Metrics.exegeneriert werden. Ab Visual Studio 2019 analysiert die Visual Studio-IDE Quellcode wie das Befehlszeilentool, und die Ergebnisse sollten identisch sein.
Das neue Tool für Befehlszeilencodemetriken berechnet Metriken auch im Vorhandensein von Quellcodefehlern, solange die Lösung und das Projekt geladen werden können.
Unterschiede bei Metrikwerten
Ab Visual Studio 2019, Version 16.4 und Microsoft.CodeAnalysis.Metrics (2.9.5), SourceLines
und ExecutableLines
ersetzen Sie die vorherige LinesOfCode
Metrik. Beschreibungen der neuen Metriken finden Sie unter Codemetrikenwerte. Die LinesOfCode
Metrik ist im Legacymodus verfügbar.
Andere Metriken wie CyclomaticComplexity
z. B. und MaintainabilityIndex
verwenden dieselben Formeln wie frühere Versionen von Metrics.exe, aber das neue Tool zählt die Anzahl der IOperations
(logischen Quellanweisungen) anstelle von Il-Anweisungen (Zwischensprache). Die Zahlen unterscheiden sich geringfügig von denen, die von der Visual Studio-IDE und früheren Versionen von Metrics.exegeneriert wurden.