Hallo Habr!
Das CLion-Team hat viele großartige Neuigkeiten - der Teil des Teams in St. Petersburg ist zusammen mit anderen Kollegen erfolgreich in ein neues Büro umgezogen, neue coole Entwickler sind zu uns gekommen, und vor allem haben wir erst
neulich das erste große Update in diesem Jahr veröffentlicht,
CLion 2019.1 !
Die Arbeit in der neuen Version verlief an mehreren Fronten gleichzeitig:
- Verbesserungen der C ++ - Sprachunterstützung : Hervorheben von Code durch Clangd, Verbesserungen beim Refactoring von Extrahieren und Umbenennen, eine neue Überprüfung, ob eine Mitgliedsfunktion einer Klasse als statisch deklariert werden kann.
- Weitere Optionen beim Schreiben von Code : Integration in ClangFormat, Unterstützung für Variablennamenstile in C / C ++, Unterstützung für verschiedene Stile für Header Guards.
- Neue Funktionen und Verbesserungen des Debuggers : Anzeigen des Speicherstatus - Speicheransicht - für Zeiger, Anzeigen von disassembliertem Code bei LLDB, Beschleunigen der schrittweisen Debugging-Arbeit.
- CLion für Mikrocontroller , die ersten Schritte.
- Möglichkeit zum Erstellen von Build-Zielen und -Konfigurationen zum Starten / Debuggen in CLion, die in keiner Weise mit dem Projektmodell zusammenhängen.
- Arbeiten Sie mit anderen Programmiersprachen in String-Literalen in C / C ++.
- Neue visuelle Themen und andere Plattformfunktionen.

Lesen Sie unten mehr über diese und andere Innovationen. Laden Sie die kostenlose 30-Tage-Version von CLion
von unserer Website herunter, um neue Funktionen und Verbesserungen auszuprobieren.
C ++ Sprachunterstützung
Clangd
Wie Sie bereits wissen, gibt es in CLion zwei Tools zur Unterstützung der C ++ - Sprache - eines ist vollständig eigenständig und das zweite basiert auf Clangd. Sie arbeiten zusammen, ergänzen sich und teilen die notwendigen Informationen. Gleichzeitig versuchen wir, wenn die Leistung und das Kriterium der Funktionsvollständigkeit dies zulassen, intelligente Tools für die Arbeit mit C ++ - Code in CLion auf ein auf Clangd basierendes Tool zu übertragen. Wir sprechen noch nicht über Code-Refactoring, aber die Hervorhebung des Codes in 2019.1 erfolgt bereits auf der Basis von Clangd. Dies verbesserte die Reaktionsfähigkeit des Editors erheblich.
Vor einigen Releases haben wir CLion auf ein Clangd-basiertes Tool umgestellt, wenn Fehler im Editor angezeigt wurden. Nun wird der Fehlertext detaillierter angezeigt. Dies ist beispielsweise beim Debuggen von Fehlern im Zusammenhang mit Funktionsüberladung hilfreich:

Hinzu kommt die Möglichkeit, die Position eines möglichen Fixes (Quick-Fix) auch über Clangd zu berechnen. Das Update selbst wird direkt von CLions eigenem Tool bereitgestellt.
Ein weiterer interessanter Bereich unserer Arbeit ist das Schreiben neuer Prüfungen für das Clangd-Code-Parsing-Tool. Ab CLion 2019.1 zeigt eine neue Prüfung auf C ++ - Code an, wann eine Mitgliedsfunktion einer Klasse als statisch deklariert werden kann:

Die Verwaltung der Einstellungen dieses alternativen Tools in Clangd finden Sie übrigens unter Einstellungen / Einstellungen | Sprachen & Frameworks | C / C ++ | Clangd.
Benutzerdefiniertes Tool zum Parsen von Code
Die Produktivität der Redakteure ist eine unserer obersten Prioritäten. Neben vielen kleinen Verbesserungen ist in dieser Version eine signifikante Verbesserung der anfänglichen Indizierungszeit des Projekts zu erwähnen. Dies ist nicht immer der Fall, aber in Fällen, in denen Sie dieselben Bibliotheken für Ihre Projekte verwenden: CLion kann dies automatisch bemerken und die Symbole für diese Bibliotheken für ein neues offenes Projekt wiederverwenden, das sie verwendet. Wenn es um STL oder Boost geht, sind die Verbesserungen sehr spürbar!
Wir planen für dieses Jahr, die Genauigkeit und Genauigkeit unseres Refactorings für C ++ zu erhöhen. Wir haben mit den beiden grundlegendsten begonnen - Umbenennen und Extrahieren. Für Extract haben wir viele Fälle behoben, in denen sich das Refactoring-Ergebnis aufgrund falsch berücksichtigter Namespace-Qualifizierer (z. B.
std::
, Spezialisierung von Vorlagen und überschriebener Typnamen (Typ-Aliase) als falsch herausstellte.
In Bezug auf Umbenennen haben wir auf den Fall geachtet, dass eine Klasse oder Struktur umbenannt wird, die mit dem Namen der Datei übereinstimmt, in der sie sich befinden. Früher haben wir die Datei auch immer umbenannt, jetzt fragt CLion Sie nach dem bevorzugten Ergebnis beim Refactoring. Sie können umbenennen oder den alten Dateinamen beibehalten. Das Gegenteil funktioniert auch - das Umbenennen der Datei führt nicht zu einem bedingungslosen Umbenennen der Klasse. (Irgendwo hier sollte es Schreie vom Publikum geben: "Endlich!")

Übrigens, etwas später werde ich über die Möglichkeit sprechen, Header-Schutzstile festzulegen. Wenn also der in der Datei verwendete Header-Schutz der angegebenen Stilvorlage folgt und gleichzeitig der Name der umbenannten Datei im Namen steht, aktualisiert CLion auch den Header-Schutz!
Codierungsstile
In Version 2019.1 haben wir die Möglichkeit hinzugefügt, zu ClangFormat zu wechseln, um Code in CLion zu formatieren. Dies umfasst nicht nur die Formatierungsaktion selbst (
Ctrl+Alt+L
unter Windows / Linux,
⌥⌘L
unter macOS) oder die automatische Formatierung beim Drucken von Code, sondern auch die Formatierung vor dem Festschreiben beim Generieren von Code mit CLion-Tools. beim Refactoring und Anwenden von Fixes (Quick-Fixes). Im Allgemeinen wird ClangFormat überall dort aufgerufen, wo die IDE den Code formatiert.
Sie können global zu ClangFormat wechseln - in den Einstellungen / Einstellungen | Editor | Codestil. Und Sie können nur für ein bestimmtes Projekt. Wenn im Projekt eine Konfigurationsdatei im
Clang-Format gefunden wird, bietet CLion außerdem an, mithilfe dieser Konfigurationsdatei zu ClangFormat zu wechseln:

Weitere Details finden Sie
in unserem Blog (auf Englisch).
Das Benennen von Variablen, Typen und anderen Zeichen im Code ist ein komplexes, manchmal sogar philosophisches Problem. In der Programmierwelt (zur Verbesserung der Lesbarkeit von Code) wurden Namensstile jedoch schon lange erfunden. Es gibt LLVM-Stil, es gibt Qt, es gibt Google. Daher in den Einstellungen CLion Einstellungen / Einstellungen | Editor | Codestil | C / C ++ verfügt jetzt über eine neue Registerkarte - Namenskonvention, in der Sie einen der vordefinierten Stile auswählen oder Ihren eigenen anpassen können, indem Sie den Namensstil für verschiedene Zeichentypen (Makros, globale Funktionen, Klassenmitglieder, Parameter, lokale Variablen usw.) festlegen. Die ausgewählte Konvention wird in allen IDE-Aktionen verwendet - Codegenerierung, Refactoring, automatische Korrekturen usw. Wenn Sie außerdem die Implementierung von Namensregeln genauer überwachen möchten, können Sie die neue Prüfung auf inkonsistente Namen aktivieren, bei der Namen angezeigt werden, die nicht den Regeln entsprechen, und schlägt eine Umbenennungsoption vor:

Auf derselben Registerkarte finden Sie die oben erwähnten Einstellungen für den Header-Schutzstil:

Übrigens, wenn Sie
#pragma
bevorzugen,
#pragma
einfach die Vorlage für neue Header-Dateien in Einstellungen / Einstellungen | an Editor | Datei- und Codevorlagen.
Debugger
Speicheransicht anzeigen
Wir haben endlich die Möglichkeit, den Speicher im Debugger anzuzeigen. In der aktuellen Version können Sie den Speicher anhand eines Zeigers anzeigen: Klicken Sie beim Debuggen einfach auf einen beliebigen Punkt im Variablenbedienfeld und fordern Sie eine Speicheransicht an (
Ctrl+Enter
unter Windows / Linux,
⌘Enter
unter macOS). Wenn die Registerkarte Speicheransicht während des schrittweisen Debuggens geöffnet ist, können Sie die hervorgehobenen Änderungen im Speicher darin sehen:

UI / UX-Änderungen sind bereits für die nächste Version geplant, aber zuerst möchte ich Feedback von Benutzern sammeln. Also schreib!
Demontage bei LLDB
Der Assembler-Code ist jetzt nach Funktionen unterteilt und wird vor allem nicht nur bei GDB, sondern auch bei LLDB angezeigt!

Es ist jedoch anzumerken, dass Assembler-Code nur in Fällen angezeigt wird, in denen keine Quellcodes für die Funktion vorhanden sind. Der sogenannte
Disassemble-on-Demand- Modus wird noch nicht unterstützt.
Schrittweise Debugging-Leistung
Manchmal verzögert sich das schrittweise Debuggen aufgrund der langen Berechnung der Variablen bei jedem Schritt. Aber manchmal werden diese Berechnungen von niemandem benötigt - ich möchte so schnell wie möglich einen Bereich des Codes durchgehen und gelegentlich die Werte eines Variablenpaars betrachten! Jetzt gibt es in CLion die Möglichkeit, das Nachzählen von Variablen während des schrittweisen Debuggens zu deaktivieren -
Stummschalten von Variablen im Debugger-Kontextmenü macht genau das. Wenn Sie die Werte berechnen und anzeigen müssen, können Sie in der Variablen auf
Laden klicken:

CLion für Mikrocontroller
Ilya Motor (
elmot ) hat
hier auf Habré bereits über sein Plug-In für die Integration von CLion in STM32CubeMX und die Unterstützung des OpenOCD-Debuggers geschrieben. Ende letzten Jahres trat Ilya unserem Team bei und hatte es bereits geschafft, das Plugin erheblich zu aktualisieren und in CLion zu verschieben.

Einen ziemlich großen und detaillierten Blog-Beitrag zum aktualisierten Plugin finden Sie in
unserem Blog . Hier werde ich das Wichtigste beschreiben, was jetzt getan werden kann:
- Im Dialogfeld Neues Projekt können Sie das STM32CubeMX-Projekt ( .ioc ) erstellen .
- Führen Sie STM32CubeMX direkt in CLion für das Projekt aus, um die Einstellungen des Mikrocontrollers zu aktualisieren und Code für das Projekt zu generieren.
- CLion generiert die richtige CMake-Datei für die Arbeit mit diesem Projekt.
- CLion schlägt vor, eine Konfigurationsdatei für die Hardware auszuwählen (Board-Konfiguration).
- Für das Debuggen mit OpenOCD müssen Sie eine Konfiguration des speziellen Typs "OpenOCD Download and Run" erstellen. Für das STM32CubeMX-Projekt erstellt CLion eines für sich. Nachdem Sie alle Einstellungen festgelegt haben, können Sie direkt von CLion aus auf dem Mikrocontroller debuggen!
Ilya hat viele ehrgeizige Pläne, daher ist Ihr Feedback für uns sehr wichtig. Wenn Sie also an der Entwicklung für eingebettete Systeme in CLion interessiert sind, warten wir in den Kommentaren auf Sie!
Entwerfen Sie unabhängige Ziele und Konfigurationen
Vor einiger Zeit wurde die Liste der unterstützten Entwurfsmodelle in CLion um Gradle C ++ und die Kompilierungsdatenbank erweitert. Bei letzterem gab es Probleme, da das Format keine Informationen über die Assembly des gesamten Projekts enthält, sodass weder die Assembly noch das Starten oder Debuggen des Projekts im Fall einer Kompilierungsdatenbank möglich waren. Ja, und nur im Fall des bekannten CLion-Projektmodells möchten Sie manchmal ein Ziel haben, das einfach von einem Team im Terminal zusammengestellt wird.
Für solche Fälle gibt es jetzt benutzerdefinierte Ziele (Einstellungen / Einstellungen | Erstellen, Ausführen, Bereitstellen | Benutzerdefinierte Build-Ziele) und benutzerdefinierte Ausführungs- / Debug-Konfigurationen (Ausführen | Konfigurationen bearbeiten ...). Im Fall eines Ziels müssen Sie die Parameter externer Werkzeuge (externe Werkzeuge) festlegen, die beim Zusammenstellen und Reinigen des Projekts verwendet werden:

Bei einer projektunabhängigen Konfiguration müssen Sie zum Starten und Debuggen das Ziel, die ausführbare Datei und die gewünschten Argumente angeben, die ausgeführt werden sollen:

Injizierte Sprache
Haben Sie Zeichenfolgenliterale in Ihrem Code, die eine SQL-Abfrage, einen HTML-Code oder einen regulären Ausdruck enthalten? Wenn ja, dann möchten Sie sicherlich zumindest den Code im Literal entsprechend seiner Herkunft hervorheben. Jetzt ist es möglich! Sie können vorübergehend eine andere Sprache in ein Zeichenfolgenliteral aufnehmen, indem Sie einfach
Alt+Enter
drücken und die Option „Sprache oder Referenz einfügen“ auswählen. Jetzt wählen wir die Sprache aus, die wir benötigen, und in jüngerer Zeit werden im üblichen Zeichenfolgenliteral die Hervorhebung der ausgewählten Sprache sowie alle Sonderaktionen angezeigt. Das auffälligste Beispiel sind reguläre Ausdrücke und die Möglichkeit, Zeichenfolgen direkt in der IDE auf Übereinstimmung mit ihnen zu überprüfen:

Und vieles mehr
Produkte bei JetBrains werden normalerweise nicht von einem kleinen Team erstellt, sondern vom Team der gesamten relevanten Plattform. Daher erhält CLion Funktionen von IntelliJ IDEA, WebStorm, AppCode, DataGrip, PyCharm usw. In dieser Version umfassen diese Verbesserungen Folgendes:
- Zeigen Sie alle Stellen im Projektcode an, an denen der Entwickler einige Änderungen vorgenommen hat, oder lesen Sie einfach den Code - Popup "Letzte Standorte" (
Shift+Ctrl+E
unter Win / Lin, ⇧⌘E
unter macOS). - Erstellung neuer Themen für die IDE zusätzlich zu den Standardthemen Hell, Dunkel (Darcula) und Kontrast (Kontrastreich). Beispiele für solche Plug-Ins und eine schrittweise Anleitung finden Sie in unserer Dokumentation .
- Apropos Plugins. Wenn Sie in Rust schreiben, wissen Sie wahrscheinlich, dass es ein IntelliJ Rust-Plugin gibt. In CLion enthält die Version Cargo-Unterstützung und einen Debugger. Mit der neuen Version verfügt das Plugin über Tools zum Profilieren von Code unter Linux und MacOS, die Möglichkeit, noch nicht importierte Zeichen automatisch zu vervollständigen, sowie weitere Verbesserungen.
Das ist alles für jetzt. Vielen Dank, wenn Sie bis zum Ende lesen!
Demo
Nun, und das traditionelle Video über die neuen Funktionen von CLion 2019.1 (auf Englisch):
Fragen, Wünsche, Fehlerberichte und nur Gedanken kommen in den Kommentaren zum Ausdruck! Wir werden gerne antworten.
Ihr JetBrains CLion-TeamDer Antrieb zur Entwicklung