Praktische Tipps | Verwenden Sie CLion, um die 7 größten Schwachstellen von C++ zu lösen

In der jährlichen C++-Entwicklerumfrage 2023 der C++ Foundation identifizierte die Community einige der größten Probleme bei der Verwendung von C++ (siehe Seite 11 der Umfragezusammenfassung ).

Schmerzstellen

Wie in diesem Artikel erwähnt, kann CLion C++-Entwicklern in vielerlei Hinsicht helfen. Lassen Sie uns diese einzeln durchgehen :

  • Verwalten Sie Bibliotheken von Drittanbietern

  • Reduzieren Sie die Bauzeit

  • Erstellen Sie eine CI-Pipeline

  • Verwalten Sie CMake-Projekte

  • Überprüfen Sie Ihren Code in Echtzeit auf Threading-, Speicher- und Typsicherheitsprobleme

  • Erstellen Sie eine Entwicklungsumgebung von Grund auf

  • Modernisieren Sie Ihren Code


Verwalten Sie Bibliotheken von Drittanbietern

Die größte Herausforderung bei der Verwendung von C++ ist die Verwaltung der Bibliotheken von Drittanbietern, auf die C++-Anwendungen angewiesen sind : 47 % der Benutzer nannten dies als Hauptproblem. Im Gegensatz zu vielen anderen Programmiersprachen verfügt C++ nicht über einen Standard-Paketmanager und es kommen verschiedene Lösungen zum Einsatz. CLion verfügt über integrierte Unterstützung für vcpkg , einen der beliebtesten C++-Paketmanager. Sie können auch Conan, einen anderen beliebten C++-Paketmanager, mit CLion verwenden. Das Conan-Plug-in für CLion ist derzeit nicht mit der neuesten Version von CLion kompatibel. Ein Fix ist in Arbeit, aber in der Zwischenzeit können Sie Conan weiterhin mit CLion verwenden, da Conan CLion-kompatible CMake-Dateien ausgibt.

find_packageCLion bietet jetzt Code-Vervollständigung für Pakete von Drittanbietern, die CMake bekannt sind .

Verbessern Sie die Vervollständigung in CMake

Reduzieren Sie die Bauzeit

Dem Feedback der Benutzer zufolge ist die Bauzeit die zweitgrößte Herausforderung , wobei 43 % der Befragten dies als größten Problempunkt bezeichnen. Obwohl CLion keinen Compiler enthält, sondern nur den in der Toolkette konfigurierten Compiler (z. B. GCC oder Clang) aufruft und die Buildzeit nicht direkt beeinflussen kann, können CMake-Ausführungsschritte auch mithilfe der CMake-Analysefunktion von CLion optimiert werden . Die CMake-Profilerstellung trägt dazu bei, die Gesamterstellungszeit Ihres Projekts zu verkürzen, indem sie die zeitaufwändigsten Vorgänge während der CMake-Konfiguration identifiziert und CMake-Skripte bei Bedarf optimiert.

CMake-Analyse

Erstellen Sie eine CI-Pipeline

Laut der Umfrage besteht der dritte große Schwachpunkt darin, kontinuierliche Integrationspipelines (automatisierte Builds, Tests usw.) von Grund auf neu zu erstellen . CLion bietet hierfür viele Tools und verfügt über integrierte Unterstützung für alle gängigen C++-Testframeworks (Google Test, Boost.Test, Catch2, Doctest, CTest). Enthält dedizierte Ausführungs- und Debug-Konfigurationen für Tests, Heftbereichssymbole zum Ausführen oder Debuggen von Tests/Suites/festen Routinen und zum Überprüfen ihres Status, dedizierte Testläufer und Code-Vervollständigung für Test- und feste Routineklassen.

Darüber hinaus gibt es CLion-Plug-ins für TeamCity , JetBrains‘ eigene automatisierte Build-Management- und CI-Tools sowie Plug-ins für andere Continuous-Integration-Lösungen.

Gerätetest

Verwalten Sie CMake-Projekte

31 % der Benutzer gaben an, dass ihr Hauptproblem die Verwaltung von CMake-Projekten ist . CMake ist das beliebteste plattformübergreifende Buildsystem für C und C++. CLion bündelt CMake und verfügt über eine umfassende CMake-Integration , wodurch das CMake-Projektmanagement reibungsloser verläuft. CLion ist mit einem leistungsstarken Editor ausgestattet, der über vollständige Syntaxhervorhebung, automatische Vervollständigung und schnelle Dokumentation von CMake-Skripten verfügt; einem integrierten CMake-Debugger; zum Hinzufügen von Konfigurationen und Build-Typen, zum Erstellen von CMake-Zielen und zum Hinzufügen zu diesen Zielen. Integrierte GUI Unterstützung für oder Entfernen von Dateien und Neuladen von CMake-Projekten; Unterstützung für CMake-Voreinstellungen und CMake-Profile; und andere Funktionen.

CMake-Debugger

CMake ist jedoch nicht das einzige von CLion unterstützte Projektmodell. Auch die Verwaltung von Makefiles ist ein Problem, über das Benutzer häufig berichten. Die gute Nachricht ist, dass CLion auch Makefile-Projekte und die Makefile-Sprache unterstützt , was die Verwendung von Makefiles erheblich vereinfacht.


Threads im Code in Echtzeit prüfen,

Probleme mit der Speicher- und Typsicherheit

Mehrere andere von Benutzern gemeldete Hauptprobleme hängen mit der Sicherheit zusammen , darunter Thread-Sicherheit (Rennen, Deadlocks usw.), Speichersicherheit (Grenzsicherheit, Use-After-Free, Speicherlecks usw.) und Typsicherheit . Um diese häufigen Probleme zu identifizieren und zu beheben, stellt CLion Entwicklern eine Vielzahl statischer und dynamischer Code-Analyseoptionen zur Verfügung. Für die statische Analyse bietet CLion viele nützliche Codeinspektionen, Clang-Tidy-Integration und integrierte Datenflussanalyse .

Die Datenflussanalyse (DFA) von CLion kann statisch viele Quellen für undefiniertes Verhalten und potenzielle Schwachstellen identifizieren, wie z. B. Endlosschleifen, Endlosrekursion, fehlende Rückgabeanweisungen, baumelnde Zeiger, potenziell ungültige Iteratoren und Speicherzugriffe außerhalb der Grenzen. DFA kann lokal innerhalb einer einzelnen Funktion oder global über eine gesamte Übersetzungseinheit hinweg eingesetzt werden. Im folgenden Beispiel identifiziert der lokale DFA einen Iterator, der durch einen Aufruf von vector::push_back: ungültig gemacht werden kann.

baumelnder Iterator

Im folgenden Beispiel gibt ein globaler DFA über einen Zeiger, der in einer anderen Funktion gelöscht wurde, eine Write-After-Free-Warnung aus:

baumelnder Zeiger

Für die dynamische Analyse ist CLion vollständig in Valgrind und zahlreiche Sanitizer integriert, wie z. B. AdressSanitizer, LeakSanitizer, ThreadSanitizer, UndefinedBehaviourSanitizer und MemorySanitizer. Außerdem haben wir kürzlich eine bessere Multithread-Debugging-Unterstützung für die Verfolgung von Parallelitätsproblemen hinzugefügt, z. B. parallele Stapelansichten und die Möglichkeit , einzelne Threads während des Debuggens einzufrieren und wieder freizugeben .


Entwicklungsumgebung

Ein weiterer von Benutzern gemeldeter Problempunkt ist die Schwierigkeit, eine Entwicklungsumgebung (Compiler, Build-System usw.) von Grund auf einzurichten. Auch dabei kann CLion helfen: Wie bereits erwähnt, enthält CLion CMake bereits im Paket, verfügt aber auch über einen gebündelten Debugger, gebündeltes MinGW unter Windows, Docker-Unterstützung über ein dediziertes Docker-Plugin und eine Docker-Toolchain sowie weitere Funktionen. Für die Remote-Entwicklung unterstützt CLion JetBrains Gateway , das die Ausführung von CLion auf einem Remote-Host und die Verbindung über einen Thin Client sowie verschiedene andere Möglichkeiten zum Aufbau einer Remote-Entwicklungsumgebung ermöglicht.

Tor

Modernisieren Sie Ihren Code

Schließlich ist die Migration von vorhandenem Code auf die neuesten Sprachstandards für 8 % der Benutzer ein großes Problem und für 27 % ein kleineres Problem. Um vorhandenen Code einfach auf modernere C++-Standards zu migrieren, unterstützt CLion Clang-Tidy- Modernisierungsprüfungen direkt in der IDE .

Modernisieren Sie C++-Code


Ursprüngliche englische Autorin dieses Blogs: Anastasia Kazakova


Live-Reservierung | JetBrains GameDev Day 2023


Am 13. Oktober 2023 (Freitag) veranstaltet JetBrains die Veranstaltung GameDev Day 2023 und lädt 11 Experten aus verschiedenen Bereichen ein, Vorträge zu halten, Diskussionen zu veranstalten und professionelle Tipps für die Entwicklung der besten Spiele auszutauschen. Die Veranstaltung befasst sich mit Aspekten des Spieletests, CI/CD, DOTS for Unity und der Apple Vision Pro-Entwicklung.

Wir übertragen diese Veranstaltung zeitgleich auf dem Videokonto und auf Sender B und sorgen für die Simultanübersetzung mit zweisprachigen Untertiteln. Willkommen zum pünktlichen Anschauen!




CLion-bezogene Lektüre

Über CLion

CLion ist eine intelligente IDE für die C- oder C++-Entwicklung unter Windows, Linux und macOS. CLion versteht moderne C++-Standards und bietet Präprozessorunterstützung. Es integriert auch GDB/LDB und ein Unit-Testing-Framework. 

Erfahren Sie mehr über CLion

⏬ Klicken Sie auf „Originaltext lesen“, um mehr zu erfahren

Dieser Artikel wurde über das öffentliche WeChat-Konto JetBrains (JetBrainsChina) geteilt.
Bei Verstößen wenden Sie sich bitte zur Löschung an [email protected].
Dieser Artikel ist Teil des „ OSC Source Creation Plan “. Wer liest, ist herzlich eingeladen, mitzumachen und gemeinsam zu teilen.

Alibaba Cloud erlitt einen schwerwiegenden Fehler, der alle Produkte betraf (wurde wiederhergestellt). Das russische Betriebssystem Aurora OS 5.0, eine neue Benutzeroberfläche, wurde auf Tumblr vorgestellt. Viele Internetunternehmen stellten dringend Hongmeng-Programmierer ein . .NET 8 ist offiziell GA, die neueste Version LTS-Version UNIX-Zeit Xiaomi steht kurz vor dem Eintritt in die 1,7-Milliarden-Ära (bereits eingetreten) und gab offiziell bekannt, dass Xiaomi Vela vollständig Open Source ist und der zugrunde liegende Kernel .NET 8 auf NuttX Linux ist. Die unabhängige Größe wurde um 50 % reduziert. FFmpeg 6.1 " Heaviside“ wird veröffentlicht. Microsoft startet eine neue „Windows App“
{{o.name}}
{{m.name}}

Ich denke du magst

Origin my.oschina.net/u/5494143/blog/10117381
Empfohlen
Rangfolge