Schnellstart: Codeanalyse für C/C++

Sie können die Qualität Ihrer Anwendung verbessern, indem Codeanalysen für C oder C++-Code regelmäßig ausgeführt werden. Die Codeanalyse kann Ihnen dabei helfen, häufige Probleme und Verstöße gegen die bewährte Programmierpraxis zu finden. Zudem findet sie Fehler, die durch Tests schwer zu erkennen sind. Die Warnungen unterscheiden sich von Compilerfehlern und Warnungen: Sie sucht nach bestimmten Codemustern, die bekanntermaßen Probleme verursachen. Das heißt, Code, der gültig ist, aber dennoch Probleme für Sie oder für andere Personen verursachen kann, die Ihren Code verwenden.

Konfigurieren von Regelsätzen für ein Projekt

  1. Öffnen Sie im Projektmappen-Explorer das Kontextmenü für den Projektnamen und wählen Sie Eigenschaften aus.

  2. Wählen Sie in den Listen Konfiguration und Plattform optional die Buildkonfiguration und Zielplattform aus.

  3. Um die Codeanalyse immer auszuführen, wenn das Projekt mit der ausgewählten Konfiguration erstellt wird, aktivieren Sie das Kontrollkästchen für Codeanalyse für Build aktivieren. Sie können die Codeanalyse auch manuell ausführen, indem Sie das Menü Analysieren öffnen und Codeanalyse ausführen an Projektname oder Codeanalyse ausführen an Datei wählen.

  4. Wählen Sie den Regelsatz aus, den Sie verwenden möchten, oder erstellen Sie einen benutzerdefinierten Regelsatz. Wenn Sie LLVM/clang-cl verwenden, lesen Sie Verwenden von Clang-Tidy in Visual Studio zum Konfigurieren von Clang-Tidy-Analyseoptionen.

Standard-C/C++-Regelsätze

Visual Studio enthält diese Standardregelsätze für systemeigenen Code:

Regelsatz Beschreibung
Arithmetische Regeln für C++ Core Check Diese Regeln erzwingen Prüfungen im Zusammenhang mit arithmetischen Operationen aus C++ Core Guidelines.
Begrenzungsregeln für C++ Core Check Diese Regeln erzwingen das Begrenzungsprofil der C++ Core Guidelines.
Klassenregeln für C++ Core Check Diese Regeln erzwingen Prüfungen im Zusammenhang mit Klassen der C++ Core Guidelines.
Parallelitätsregeln für C++ Core Check Diese Regeln erzwingen Prüfungen im Zusammenhang mit Parallelität der C++ Core Guidelines.
Const-Regeln für C++ Core Check Diese Regeln erzwingen Prüfungen im Zusammenhang mit Const für C++ Core Guidelines.
Deklarationsregeln für C++ Core Check Diese Regeln erzwingen Prüfungen im Zusammenhang mit Deklarationen der C++ Core Guidelines.
C++ Core Check – Enumerationsregeln Diese Regeln erzwingen Prüfungen im Zusammenhang mit Enumeration für C++ Core Guidelines.
C++ Core Check – experimentelle Regeln Diese Regeln sammeln einige experimentelle Prüfungen. Schließlich erwarten wir, dass diese Prüfungen in andere Regelsätze verschoben oder vollständig entfernt werden.
Funktionsregeln für C++ Core Check Diese Regeln erzwingen Prüfungen im Zusammenhang mit Funktionen der C++ Core Guidelines.
GSL-Regeln für C++ Core Check Diese Regeln erzwingen Prüfungen im Zusammenhang mit Guidelines-Unterstützungsbibliothek der C++ Core Guidelines.
Lebensdauerregeln für C++ Core Check Diese Regeln erzwingen das Lebensdauerprofil der C++ Core Guidelines.
Besitzerzeigerregeln für C++ Core Check Diese Regeln erzwingen Ressourcenverwaltungsprüfungen im Zusammenhang mit owner<T> der C++ Core Guidelines.
Rohzeigerregeln für C++ Core Check Diese Regeln erzwingen Ressourcenverwaltungsprüfungen im Zusammenhang mit Rohzeigern für C++ Core Guidelines.
Regeln für C++ Core Check Diese Regeln erzwingen eine Teilmenge der Prüfungen für C++ Core Guidelines. Verwenden Sie diesen Regelsatz, um alle C++ Core Check-Regeln außer den Regelsätzen Enum und Experimental einzuschließen.
Shared-Zeiger-Regeln für C++ Core Check Diese Regeln erzwingen Ressourcenverwaltungsprüfungen im Zusammenhang mit Typen mit Shared-Zeiger-Semantik für C++ Core Guidelines.
STL-Regeln für C++ Core Check Diese Regeln erzwingen Prüfungen im Zusammenhang mit C++-Standardbibliothek der C++ Core Guidelines.
Stilregeln für C++ Core Check Diese Regeln erzwingen Prüfungen im Zusammenhang mit der Verwendung von Ausdrücken und Anweisungen der C++ Core Guidelines.
Typregeln für C++ Core Check Diese Regeln erzwingen das Typenprofil der C++ Core Guidelines.
Regeln für eindeutigen Zeiger für C++ Core Check Diese Regeln erzwingen Ressourcenverwaltungsprüfungen im Zusammenhang mit Typen mit Eindeutiger-Zeiger-Semantik für C++ Core Guidelines.
Regeln zur Parallelitätsprüfung Diese Regeln erzwingen einen Satz Win32-Parallelitätsprüfungen in C++.
Parallelitätsregeln Fügt Parallelitätsregeln aus C++ Core Guidelines zu Regeln zur Parallelitätsprüfung hinzu.
Native Mindestregeln von Microsoft Diese Regeln zielen auf die kritischsten Probleme in Ihrem nativen Code ab, einschließlich potenzieller Sicherheitslücken und Anwendungsabstürzen. Wir empfehlen das Einbeziehen des Regelsatzes in alle benutzerdefinierte Regelsätze, die Sie für Ihre eigenen Projekte erstellen.
Von Microsoft empfohlene Regeln für eigene Projekte Diese Regeln konzentrieren sich auf die wichtigsten und häufigsten Probleme in Ihrem systemeigenen Code. Zu diesen Problemen gehören potenzielle Sicherheitslücken und Anwendungsabstürze. Wir empfehlen das Einbeziehen des Regelsatzes in alle benutzerdefinierte Regelsätze, die Sie für Ihre eigenen Projekte erstellen. Dieser Regelsatz ist für die Verwendung mit Visual Studio Professional Edition und höher vorgesehen. Sie enthält alle Regeln in den Mindestregeln von Microsoft für eigene Projekte.

Visual Studio enthält diese Standardregelsätze für verwalteten Code:

Regelsatz Beschreibung
Grundlegende Regeln für Richtigkeit von Microsoft Diese Regeln zielen auf logische Fehler und häufige Irrtümer bei der Verwendung von Framework-APIs ab. Binden Sie diesen Regelsatz zur Erweiterung der Liste von Warnungen mit ein, die von den empfohlenen Mindestregeln gemeldet werden.
Grundlegende Regeln für Entwurfsrichtlinien von Microsoft Diese Regeln zielen auf die Erzwingung von Best Practices ab, sodass Ihr Code leicht verständlich und einfach zu verwenden ist. Binden Sie diesen Regelsatz mit ein, wenn Ihr Projekt Bibliothekscode umfasst oder wenn Sie Best Practices erzwingen möchten, um einen leicht verwaltbaren Code zu gewährleisten.
Erweiterte Regeln für Richtigkeit von Microsoft Diese Regeln erweitern die grundlegenden Regeln für Richtigkeit und maximieren die gemeldeten Fehler bezüglich Logik und Frameworkverwendung. Besonderes Augenmerk wird auf spezifische Szenarien gelegt, z. B. COM-Interop und mobile Anwendungen. Binden Sie diesen Regelsatz mit ein, wenn eines dieser Szenarien auf Ihr Projekt zutrifft, oder um weitere Probleme in Ihrem Projekt zu ermitteln.
Erweiterte Regeln für Entwurfsrichtlinien von Microsoft Diese Regeln erweitern die grundlegenden Regeln für Entwurfsrichtlinien und maximieren die gemeldeten Fehler bezüglich Verwendbarkeit und Wartbarkeit. Besonderes Augenmerk wird auf Benennungsrichtlinien gelegt. Binden Sie diesen Regelsatz mit ein, wenn Ihr Projekt Bibliothekscode umfasst, oder wenn Sie höchste Standards für das Schreiben von verwaltbarem Code erzwingen möchten.
Globalisierungsregeln von Microsoft Diese Regeln zielen auf Probleme ab, durch die verhindert wird, dass Daten in Ihrer Anwendung bei Verwendung in unterschiedlichen Sprachen, Gebietsschemas und Kulturen ordnungsgemäß angezeigt werden. Binden Sie diesen Regelsatz mit ein, wenn Ihre Anwendung lokalisiert und/oder globalisiert wird.
Verwaltete Mindestregeln von Microsoft Diese Regeln zielen auf die kritischsten Probleme in Ihrem Code ab, für die die Codeanalyse die genaueste Lösung darstellt. Es gibt nur wenige dieser Regeln und sie sind nur für die Verwendung in begrenzten Visual Studio-Editionen vorgesehen. Verwenden Sie MinimumRecommendedRules.ruleset in Verbindung mit anderen Visual Studio-Editionen.
Verwaltete empfohlene Regeln vom Microsoft Diese Regeln konzentrieren sich auf die wichtigsten Probleme in Ihrem Code. Zu diesen Problemen gehören potenzielle Sicherheitslücken, Anwendungsabstürze und andere entscheidende Logik- und Entwurfsfehler. Wir empfehlen das Einbeziehen des Regelsatzes in alle benutzerdefinierte Regelsätze, die Sie für Ihre Projekte erstellen.
Mindestregeln für Microsoft Mixed (C++/CLR) Diese Regeln zielen auf die kritischsten Probleme in C++-Projekten mit Common Language Runtime-Unterstützung ab. Zu diesen Problemen gehören potenzielle Sicherheitslücken, Anwendungsabstürze und andere entscheidende Logik- und Entwurfsfehler. Wir empfehlen, dass Sie diesen Regelsatz in alle benutzerdefinierten Regelsätze einbeziehen, die Sie für Ihre C++-Projekte mit Common Language Runtime-Unterstützung erstellen.
Empfohlene Regeln für Microsoft Mixed (C++/CLR) Diese Regeln zielen auf die häufigsten und kritischsten Probleme in C++-Projekten mit Common Language Runtime-Unterstützung ab. Zu diesen Problemen gehören potenzielle Sicherheitslücken, Anwendungsabstürze und andere entscheidende Logik- und Entwurfsfehler. Dieser Regelsatz ist für die Verwendung in der Visual Studio Professional Edition und höher vorgesehen.
Regeln für Microsoft Security Dieser Regelsatz enthält alle Microsoft-Sicherheitsregeln. Binden Sie diesen Regelsatz mit ein, um die Anzahl gemeldeter potenzieller Sicherheitsprobleme zu maximieren.

So beziehen Sie jede Regel ein:

Regelsatz Beschreibung
Alle Microsoft-Regeln Dieser Regelsatz enthält alle Regeln. Das Ausführen dieses Regelsatzes führt möglicherweise zu einer hohen Anzahl gemeldeter Warnungen. Verwenden Sie diesen Regelsatz, um einen Überblick über alle Probleme in Ihrem Code zu erhalten. Dies kann Ihnen bei der Entscheidung behilflich sein, welche der spezifischeren Regelsätze für Ihre Projekte am besten geeignet sind.

Codeanalyse ausführen

Auf der Codeanalyse-Seite des Dialogfelds „Projekteigenschaften“ können Sie die Codeanalyse so konfigurieren, dass sie bei jedem Erstellen des Projekts ausgeführt wird. Sie können die Codeanalyse auch manuell ausführen.

Zum Ausführen der Codeanalyse in einer Projektmappe:

  • Wählen Sie im Menü Build die Option Codeanalyse für Lösung ausführen aus.

Zum Ausführen der Codeanalyse in einem Projekt:

  1. Wählen Sie im Projektmappen-Explorer den Namen des Projekts aus.

  2. Im Build-Menü wählen Sie Ausführen der Codeanalyse für Projektname.

Zum Ausführen der Codeanalyse an einer Datei:

  1. Wählen Sie den Namen der Datei im Projektmappen-Explorer aus.

  2. Wählen Sie im Menü Build Codeanalyse ausführen an Datei aus, oder drücken Sie STRG+UMSCHALT+ALT+F7.

    Das Projekt oder die Projektmappe wird kompiliert und Codeanalyse wird ausgeführt. Ergebnisse werden im Fenster „Fehlerliste“ angezeigt.

Analysieren und Auflösen von Codeanalysewarnungen

Im Fenster „Fehlerliste“ sind die gefundenen Codeanalysewarnungen aufgeführt. Die Ergebnisse werden in einer Tabelle angezeigt. Wenn weitere Informationen zu einer bestimmten Warnung verfügbar sind, enthält die erste Spalte ein Erweiterungssteuerelement. Wählen Sie sie aus, um die Anzeige für zusätzliche Informationen zum Problem zu erweitern. Wenn möglich, zeigt die Codeanalyse die Zeilennummern und Analyselogik, die zu der Warnung geführt hat.

Für ausführliche Informationen zur Warnung, einschließlich möglicher Lösungen für das Problem, wählen Sie die Warnungs-ID in der Code-Spalte aus, um den entsprechenden Artikel in der Onlinehilfe anzuzeigen.

Doppelklicken Sie auf eine Warnung, um im Code-Editor von Visual Studio den Cursor in die Codezeile zu verschieben, die die Warnung verursacht hat. Oder drücken Sie bei der ausgewählten Warnung die EINGABETASTE.

Nachdem Sie das Problem verstanden haben, können Sie es in Ihrem Code beheben. Führen Sie dann die Codeanalyse erneut aus, um sicherzustellen, dass die Warnung nicht mehr in der Fehlerliste angezeigt wird.

Arbeitsaufgaben für Codeanalysewarnungen erstellen

Funktionen für die Arbeitselementeverfolgung können Sie in Visual Studio protokollieren. Um diese Funktion verwenden zu können, müssen Sie sich mit einer Instanz von Azure DevOps Server (ehemals Team Foundation Server) verbinden.

Erstellen eines Arbeitselements für eine oder mehrere Warnungen für C/C++-Code

  1. Erweitern Sie die Warnungen in der Fehlerliste, und wählen Sie sie aus.

  2. Wählen Sie im Kontextmenü für die Warnungen Arbeitselement erstellen und wählen Sie dann den Arbeitselementtyp.

  3. Visual Studio erstellt ein einzelnes Arbeitselement für die ausgewählten Warnungen und zeigt das Arbeitselement in einem Dokumentfenster der IDE.

  4. Geben Sie zusätzliche Informationen ein und wählen Sie dann Arbeitselement speichern.

Ergebnisse der Codeanalyse suchen und filtern

Sie können lange Listen mit Warnmeldungen durchsuchen und Warnungen in Projektmappen mit mehreren Projekten filtern.

  • So filtern Sie Warnungen nach Titel oder Warnungs-ID: Geben Sie das Schlüsselwort in das Feld „Fehlerliste durchsuchen“ ein.

  • So filtern Sie Warnungen nach Schweregrad: Standardmäßig wird Codeanalysen ein Schweregrad der Warnung zugewiesen. Sie können den Schweregrad einer oder mehrerer Meldungen als Fehler in einem benutzerdefinierten Regelsatz zuweisen. Wählen Sie in der Spalte Schweregrad der Fehlerliste den Dropdownpfeil und dann das Filtersymbol aus. Wählen Sie Warnung oder Fehler, um die Meldungen anzuzeigen, die dem jeweiligen Schweregrad zugewiesen sind. Wählen Sie Alle auswählen, um alle Meldungen anzuzeigen.

Weitere Informationen