Codeanalyse

Analyse in Echtzeit

CLion überprüft Ihren Code ständig auf potentielle Fehler. Wird ein solcher gefunden, wird der entsprechende Codeabschnitt im Editor markiert. In der Randleiste auf der rechten Seite des Editors sehen Sie gelbe und rote Fehlermarkierungen. Durch Anklicken gelangen Sie direkt zur entsprechenden Meldung. Zudem können Sie von einem markierten Fehler zum nächsten springen, indem Sie F2/Shift+F2 drücken. Eine Zusammenfassung oberhalb der Randleiste zeigt den Status der Datei an.

CLion findet nicht nur Kompilierungsfehler, sondern erkennt auch ineffizienten Code und ist zudem in der Lage, eine Datenflussanalyse Ihres Codes durchführen. Dadurch lassen sich unerreichbare/ungenutzte Codeabschnitte sowie andere Probleme und „Code Smells“ lokalisieren.

Quick-Fixes

Die Code-Inspektionen in Echtzeit von CLion sind in der Lage, etwa 40 potentielle Problemfälle in C/C++ Code und zahlreichen anderen Programmiersprachen zu erkennen.

Zeigen Sie mit dem Mauszeiger auf ein markiertes Problem und drücken Sie Alt+Enter. Ihnen werden verschiedene Quick-Fix-Lösungen angezeigt. (Alternativ können Sie die Glühbirne neben der Zeile anklicken, um in das Kontextmenü zu gelangen.)

Ähnliche Probleme lassen sich zudem im gesamten Projekt gleichzeitig beheben. Wenn Sie die Inspektion nicht als hilfreich erachten, können sie diese für den gewünschten Bereich deaktivieren.

Code inspizieren

CLion stellt für alle verfügbaren Inspektionen ausführliche Beschreibungen zur Verfügung. Sie können nicht nur deren Gewichtung (wählen Sie zwischen Schreibfehler, Warnung, Fehler, etc.) bestimmen, sondern in einigen Fällen auch die Parameter der Inspektion anpassen, um Ihre Anforderungen besser einzubinden.

Im Batch-Modus können Sie mit Code | Inspect Code mehrere Inspektionen (oder auch alle) gleichzeitig ausführen.

Indem Sie den Befehl „Run inspection by name“ (Strg+Alt+Shift+I) ausführen und einen beliebigen Bereich wählen, können Sie ein bestimmtes Problem ausfindig machen und aus Ihrer gesamten Codebasis entfernen. Die Ergebnisse der Inspektion werden in einem separaten Fenster angezeigt. Dort können sie die Problemkategorien neu ordnen und, soweit möglich, Quick-Fixes auf alle Probleme anwenden.

Clang-Tidy

Clang-Tidy

CLion wird mit Clang-Tidy-Integration ausgeliefert. Clang-Tidy-Überprüfungen werden in gleicher Weise dargestellt wie die in CLion integrierten Inspektionen. Quick-Fixes stehen mittels Alt+Enter ebenfalls zur Verfügung.

Öffnen Sie Settings/Preferences | Editor | Inspections | C/C++ | General | Clang-Tidy, um die Liste der aktivierten/deaktivierten Überprüfungen in CLion anzupassen. Im Textfeld findet das Kommandozeilenformat von Clang-Tidy Anwendung. Die Standardkonfiguration finden Sie hier. Anstelle der über die IDE bereitgestellten Einstellungen können auch .clang-tidy-Konfigurationsdateien verwendet werden.

Aktivieren Sie die Prüfungen für C++ Core Guidelines oder Clang Static Analyzer, probieren Sie die Modernize-Prüfungen aus oder implementieren Sie sogar Ihre eigenen Prüfungen, die Sie sofort in CLion nutzen können (für eigene Prüfungen geben Sie unter Settings/Preferences | Languages & Frameworks | C/C++ den Pfad zu Ihrer eigenen Clang-Tidy-Programmdatei an).

Clangd-Überprüfungen

Auf Clangd basierende Überprüfungen

Die spezielle Clangd-basierte Engine in CLion ermöglicht verschiedene Inspektionen:

  • Memberfunktion kann statisch sein
  • Argument selection defects (Fehler bei der Argumentauswahl)
  • Empty declaration or statement (Leere Deklaration oder Anweisung)
  • Virtual call from constructor or destructor (Virtueller Aufruf in Konstruktor oder Destruktor)
  • Unused includes (Nicht verwendete Includes)

Die Überprüfung „Unused Includes“ bietet drei Erkennungsstrategien: konservativ, aggressiv und die Standardeinstellung Detect not directly used, die dem Prinzip „Genutzte Elemente inkludieren“ am nächsten kommt.

Weitere Informationen

DFA

Datenflussanalyse

Die Datenflussanalyse (DFA) verfolgt die Datenflüsse in Ihrem Code und erkennt anhand dieser Analyse potenzielle Probleme. Neben der lokalen DFA (die eine einzelne Funktion betrachtet) bietet CLion auch eine globale DFA, die eine gesamte Übersetzungseinheit innerhalb eines Programms analysiert. Die globale DFA erweitert nicht nur die bereits vorhandenen Prüfungen, sondern ermöglicht auch einige neuartige Inspektionen.

MISRA

MISRA

CLion enthält Prüfungen aus MISRA C 2012 und MISRA C++ 2008. Die vollständige Liste der unterstützten Prüfungen pflegen wir auf unserer Confluence-Seite, damit Sie die Fortschritte jederzeit verfolgen können.