CLion News: 2020.1 Release, Fünfjahres-IDE und Online-Fragen und Antworten

Hallo Habr!

Soviel möchte ich heute sagen, dass es sogar schwierig ist zu entscheiden, wo ich anfangen soll. Also werde ich zuerst kurz auf das Wichtigste eingehen:

  1. CLion ist gestern 5 Jahre alt! Zu Ehren des Feiertags haben wir eine kleine Videogeschichte, eine besondere Erinnerung und eine Geschichte darüber veröffentlicht, wie interessant sich in diesen 5 Jahren alles für uns entwickelt hat. Warnen Sie die Geschichte sofort auf Englisch:


  2. Gestern fand die erste große Veröffentlichung des Produkts in diesem Jahr statt - CLion 2020.1 . Darin unterstützten wir den CUDA-Dialekt, schrieben die Datenflussanalyse in Clang um, brachten der IDE die Arbeit mit den Clang-cl- und IAR-Compilern bei und nahmen viele andere Verbesserungen und Korrekturen vor.
  3. In den letzten Monaten ist unser Team ohne Konferenzen und damit verbundene Ausstellungen sehr traurig geworden. Wir freuen uns immer, an den Ständen des Unternehmens zu sein und viel mit unseren Benutzern und der Community insgesamt zu kommunizieren. Aus diesem Grund haben wir beschlossen, eine Online-Q & A-Sitzung mit dem Team zu organisieren - CLion Ask Me Anything (AMA) -Sitzung . Die Sitzung findet am 7. Mai in Echtzeit statt, ein vorläufiger Termin ist erforderlich. Machen Sie mit und stellen Sie Fragen zum Produkt!

Lassen Sie uns nun mehr über all diese Ereignisse sprechen.

CLion - fünf!


Das Aufwachsen von Kindern ist für Eltern immer überraschend und oft unerwartet. Die Geschichte ist die gleiche mit dem Produkt - es scheint, dass wir erst gestern die frühe Version veröffentlicht haben und bis zur Veröffentlichung von 1.0 heruntergezählt haben, aber heute feiern wir bereits ein rundes Datum. CLion hat jetzt mehr als 200.000 monatliche Nutzer, darunter Teams von Unternehmen wie BMW, NASA, Tencent, Tesla und vielen anderen, und natürlich die Zusammenarbeit mit Google und Android Studio.

Wir freuen uns, viele Studenten auf der ganzen Welt zu unterstützen, die mit CLion ihre ersten Schritte in der Softwareentwicklung unternehmen. Und sehr froh zu wissen, dass ein Drittel der ICPC-Teams im Finale 2019 auch CLion verwendet hat!

ICPC-Tools Final

Die Aufregung mit jeder neuen Version, die Verantwortung gegenüber einer großen Anzahl unserer Benutzer, die Einheit des Teams, das großartige Arbeit leistet - all dies überwältigt uns und wir freuen uns, unser erstes kleines Jubiläum mit der gesamten Habr-Community zu teilen! Wir hoffen, dir hat der Film gefallen;)

CLion 2020.1


Es ist vielleicht nicht das größte in der Größenordnung der letzten fünf Jahre, aber wir haben gestern definitiv eine wichtige Veröffentlichung veröffentlicht. Lassen Sie uns der Reihe nach über die wichtigsten Änderungen sprechen:

  • CUDA-Dialektunterstützung.
  • Für Embedded-Entwickler IAR-Compiler-Unterstützung und Plug-In für die Integration in PlatformIO.
  • Aktualisierte Integration mit Clang-Tools - DFA-Migration nach Clangd, verbesserte automatische Vervollständigung, engere Zusammenarbeit mit Clang-Tidy und ClangFormat.
  • Für Entwickler unter Windows - Unterstützung für den Clang-cl-Compiler und den Standard-Debugger.
  • Standardparameterwerte beim Refactoring der Signatur ändern.
  • Bequemere Start- und Debugging-Konfigurationen, einschließlich Eingabeumleitung und Unterstützung von IDE-Makros.
  • Formatierungsaktualisierungen, Editorverbesserungen und mehr.

Cuda


CLion unterstützt jetzt den CUDA C / C ++ - Dialekt. Der Support umfasst:

  • korrekter Code-Parser (um den "roten" Code und die fehlerhafte Bedienung des Code-Analysators auszuschließen);
  • Hervorheben und eine Vielzahl intelligenter Aktionen, wie z. B. Navigation und Anzeigen von Dokumentation;
    CUDA Quick Doc
  • aktualisierter Assistent zum Erstellen neuer Projekte - jetzt enthält er eine Vorlage für CUDA-Projekte;

    CUDA neues Projekt
  • Unterstützung für CUDA-Dateierweiterungen (.cu / .cuh);
  • spezielle CMake-Ziele für CUDA - Der Dialog zum Hinzufügen einer neuen Datei bietet nun die Möglichkeit, diese nicht nur geeigneten Zielen hinzuzufügen, die mit den üblichen CMake-Befehlen erstellt wurden, sondern auch spezifisch für CUDA ( cuda_add_executable/ cuda_add_library).

    CUDA zu Zielen hinzufügen
  • und sogar automatische Vervollständigung für spitze Klammern für Kernelaufrufe:

    CUDA-Abschluss

Hinweis: Für Tests und Screenshots wurde dieses CUDA-Projekt mit GitHub: ClaraGenomicsAnalysis verwendet .

Wir wurden gefragt, warum wir uns so sehr auf CUDA und nicht auf andere spezifische Bereiche wie Qt konzentriert haben. Kurz gesagt, wir möchten natürlich alle Arten von C / C ++ - Projekten in unserer IDE unterstützen. Bei begrenzten Ressourcen müssen Sie jedoch eine Auswahl treffen und sich eher darauf konzentrieren, die universellsten Funktionen zu unterstützen. Dialekte wie CUDA werden, wenn sie nicht "out of the box" unterstützt werden, zu Red Code, Code Analyzer-Fehlern und anderen Problemen mit den Grundfunktionen der IDE führen. Im Gegensatz zu Qt, wo der allgemeine Parser mit dem Code fertig wird und nur einige spezifische Funktionen fehlen.

Für eingebettete Entwickler


Wir unterstützen weiterhin Entwickler eingebetteter Systeme. Durch die Zusammenarbeit mit IAR Systems AB konnten wir Partnerschaftslizenzen erhalten und CLION um IAR-Compiler-Unterstützung erweitern. Bisher konnten wir Informationen aus dem Compiler nicht korrekt lesen und solche Projekte wurden in CLion nicht korrekt geladen. Jetzt funktioniert alles!

Iar-Compiler

Es ist erwähnenswert, dass Sie zur Verwendung des Compilers die MinGW-Toolchain verwenden müssen. Und hier finden Sie einige Tipps , wie CMake mit der IAR Embedded Workbench zu verwenden.

Wir werden weiterhin mit IAR Systems AB zusammenarbeiten und hoffentlich wird CLion eines Tages auch Unterstützung für ihren Debugger haben.

Von der ersten CLion-Veröffentlichung an haben wir mit den Entwicklern von PlatformIO gesprochen, ein einzigartiges Ökosystem für den schnellen Start von Projekten für eingebettete Systeme. Zum Beispiel half sie vielen, das erste Projekt auf Arduino zu starten. Für die Version 2020.1 haben wir ein recht einfaches, aber nützliches PlatformIO for CLion- Plugin zusammengestellt . Seine wichtigste Möglichkeit besteht darin, ein Projekt für PlatformIO basierend auf CMake zu erstellen. Wählen Sie einfach diesen Projekttyp im Assistenten zum Erstellen neuer Projekte aus:

PlatformIO-Plugin

Das Plugin erstellt automatisch Start- und Debugkonfigurationen, die für PlatformIO spezifisch sind, und ermöglicht Ihnen auch das Debuggen mit dem PIO Unified Debugger direkt von CLion Weitere Informationen finden Sie in der offiziellen Dokumentation . Versuchen Sie, Ihre Wünsche für die weitere Entwicklung zu schreiben - wir fragen uns jetzt nur, wo und wie Sie dieses Plugin weiterentwickeln können.

Aktualisierte Clang Tool Integration


Wie Sie bereits wissen, portieren wir immer mehr Funktionen aktiv auf die Clangd-basierte Sprach-Engine. Erstens, um schnell Unterstützung für neue Sprachfunktionen zu erhalten und IDE-Aktionen für diese anzupassen, und zweitens, um in einigen Fällen die Editorleistung zu verbessern (Clangd ist leider nicht überall ein so universelles Tool).

In der Version 2020.1 haben wir viel Zeit für die Clangd-basierten Korrekturen für die automatische Vervollständigung aufgewendet (sie wurden in Version 2019.3 veröffentlicht). Nachdem sie entschieden haben, dass die Ergebnisse dieses Ansatzes ziemlich gut sind, haben sie den Standardmodus aktiviert, in dem die Optionen für die automatische Vervollständigung vollständig von Clangd übernommen werden. Sie können den gemischten Betriebsmodus wieder in den Einstellungen aktivieren:

Clangd Abschluss

Wir empfehlen dies jedoch nicht ohne guten Grund, da die Kombination der Ergebnisse von zwei verschiedenen Anbietern Probleme mit den Prioritäten verursachen kann. Nach unseren Messungen ist die neue automatische Vervollständigung auf Basis von Clangd nicht langsamer, aber häufig schneller als die eingebaute.

Clangd hat in dieser Version auch die Datenflussanalyse (DFA) verschoben. Dieser Analysator verdient einen separaten Artikel, da er das kann und tut, was Compiler normalerweise nicht tun (hauptsächlich, weil sie ihn nicht benötigen, obwohl es theoretisch möglich ist, auf ihrer Seite zu reproduzieren) - analysiert, wie sich die Daten entlang des Kontrollflussdiagramms bewegen, und Findet basierend auf diesem Wissen mögliche Fehler. Zum Beispiel Bedingungen, die immer wahr oder falsch sind, unendliche Rekursionen und Schleifen, fehlende Rückgabeausdrücke, nicht verwendete Werte, Parameter und lokale Variablen:

DFA immer wahr

Jetzt funktioniert alles auf Clangd. Wir hoffen, dass dies die Leistung von Code-Analysen in Ihren Projekten verbessert. Leider mussten wir den Benutzern zuvor häufig raten, die DFA-Analyse speziell zu deaktivieren, um die Leistung des Editors zu verbessern. In diesem Fall empfehlen wir Ihnen, den Analysator wieder einzuschalten. Wir warten auf Ihr Feedback in unserem technischen Support und Tracker .

Um das Ganze abzurunden, sollten Clang-Tools Verbesserungen bei der Unterstützung von Clang-Tidy und ClangFormat beachten:

  • Wenn im Projekt eine .clang-tidy- Konfigurationsdatei gefunden wird, deaktiviert CLion automatisch die Clang-Tidy-Einstellungen in der IDE und wechselt zur Verwendung dieser Konfigurationsdatei. Das Verhalten wird durch die Anpassung bestimmt.
  • .clang-format CLion ClangFormat . ClangFormat, , CLion , .

Windows


Wenn unter Linux und MacOS die CLion-Toolchain recht einfach auszuwählen ist (wir nehmen entweder GCC oder Clang), gibt es unter Windows viele Optionen, die nicht einfach herauszufinden sind: Cygwin, MinGW / Mingw-w64, WSL, Visual Studio. Gleichzeitig werden in jeder Toolchain häufig unterschiedliche Compiler verwendet. Wir wurden lange nach der Möglichkeit gefragt, Clang unter Windows zu verwenden. In CLion 2020.1 wurde es möglich, Clang-cl (entweder von der offiziellen LLVM-Website oder zusammen mit Visual Studio-Tools) in der Visual Studio-Toolchain zu verwenden:

Clang-cl

Haben Sie übrigens den in diesem Dialog standardmäßig ausgewählten Debugger bemerkt? Der gleiche LLDB-basierte Debugger für die Microsoft Visual C ++ - Toolchain, den unser Team entwickelt und den wir letztes Jahr eingeführt haben, ist standardmäßig in der neuen Version enthalten! Wenn Sie jedoch auch die Unterstützung von Native Visualizers verwenden möchten, müssen Sie diese in den Einstellungen explizit aktivieren: Einstellungen | Erstellen, Ausführen, Bereitstellen | Debugger-Datenansichten | Aktivieren Sie NatVis-Renderer für LLDB.

Refactoring Change Signature


Unter den vielen Refactorings in CLion sticht Change Signature hervor (Strg + F6 unter Windows und Linux, ⌘F6 unter macOS). Hier können Sie den Funktionsnamen, den Rückgabetyp und die Liste der Parameter ändern. Gleichzeitig aktualisiert die IDE alle Verwendungen der Funktion, um die Richtigkeit des Codes zu gewährleisten. Was aber, wenn Sie einen neuen Parameter hinzufügen? Zuvor setzte CLION einen Standardwert des Typs in allen Anwendungen (falls vorhanden) - 0für Zahlen, nullptrfür Zeiger. Ab Version 2020.1 ist es nun möglich, den Wert anzugeben, den CLion für die Verwendung der Funktion direkt im Refactoring-Dialogfeld ersetzt:

Signatur ändern
Wenn Sie nichts angeben, ist das Verhalten wie zuvor.

Start- und Debug-Konfigurationen


Die vielen kleinen Verbesserungen an den Start- und Debugging-Konfigurationen in CLion machten sie viel benutzerfreundlicher.

Erstens funktionieren die Konfigurationen Remote GDB Server und Embedded GDB Server jetzt mit benutzerdefinierten Zielen, nicht nur mit CMake-Zielen. So ist es jetzt möglich, auf einem Remotecomputer oder einem Mikrocontroller nicht nur bei einem CMake-basierten Projekt zu debuggen, sondern auch bei jedem anderen Projekttyp, für den Sie benutzerdefinierte Ziele konfiguriert haben (indem Sie die Build- und Bereinigungsbefehle des Projekts angeben).

Zweitens können Sie für Konfigurationen wie CMake, Custom Build und Gradle Native Applications jetzt Makros und Pfadvariablen verwenden. Mit ihrer Hilfe können Sie auf viele nützliche Werte zugreifen:

IDE-Makros

Und schließlich wurde in diesen Konfigurationen die Option zum Umleiten von Programmeingaben angezeigt. In Kombination mit Prompt / FilePrompt-Makros können Sie nicht nur Eingaben aus einer Datei in das Programm umleiten, sondern auch einen Dialog zur Auswahl einer Datei anzeigen, die zu Beginn der Konfiguration eingegeben werden soll:

Eingabeumleitung

Formatierungsaktualisierungen, Editorverbesserungen und mehr


Es sind einige weitere kleine Punktverbesserungen in verschiedenen Subsystemen zu erwähnen:

  • Separate Namenseinstellungen für Strukturfelder und Klassenfelder.
  • Möglichkeit, mit #pragma region/ hervorgehobene Codeblöcke zu reduzieren #pragma endregion.
  • Das Dokumentationsanzeigefenster kann jetzt nicht nur über eine Verknüpfung aufgerufen werden, sondern kann auch einfach durch Bewegen des Mauszeigers über das interessierende Symbol angezeigt werden.
  • Die Standardschriftart in der IDE ist jetzt JetBrains Mono , eine neue Monospaced-Schriftart von JetBrains, die speziell für Entwickler entwickelt wurde, um die Lesbarkeit des Codes zu optimieren.
  • Das Standard-Lichtthema ist jetzt auf allen drei Plattformen gleich - IntelliJ Light.
  • Terminalsitzungen können horizontal oder vertikal in mehrere unterteilt werden. Somit können mehrere Sitzungen gleichzeitig auf einer Registerkarte angezeigt werden.
  • Von der IntelliJ-Plattform wurden auch Verbesserungen in die Versionskontrollsysteme integriert .

CLion Frag mich was


Eine Online-Q & A-Sitzung mit Entwicklern des CLion-Teams ist für den 7. Mai geplant. An der Sitzung nehmen Teammitglieder teil, die für die folgenden Subsysteme verantwortlich sind:

  • C C++, Clangd, C++ CLion.
  • .
  • .
  • ( , ClangFormat).
  • .
  • .
  • .

Die Sitzung ist kostenlos, eine Voranmeldung ist jedoch erforderlich . Wir bitten Sie auch, im Voraus zu überlegen und, wenn möglich, Fragen an das Team im Anmeldeformular zu hinterlassen. Es besteht die Möglichkeit, während der Sitzung über ein spezielles Formular Fragen zu stellen (und ich werde dies moderieren und Fragen an Kollegen richten), aber Fragen, die im Voraus gestellt werden, erhalten mit größerer Wahrscheinlichkeit zu Beginn der Sitzung detaillierte Antworten.

Das ist alles für heute. Bis zum Ende lesen? Vielen Dank für Ihre Aufmerksamkeit! Schreiben Sie Fragen, Vorschläge, Ausrufezeichen in die Kommentare - wir lesen und beantworten diese gerne!

CLion
Der Antrieb, ein Team zu entwickeln

All Articles