Nouvelles CLion: version 2020.1, IDE quinquennal et questions et réponses en ligne

Bonjour, Habr!

Je veux tellement dire aujourd'hui qu’il est encore difficile de choisir par où commencer. Alors d'abord, je vais essayer brièvement sur tous les plus importants:

  1. CLion a 5 ans hier! En l'honneur des vacances, nous avons monté une petite histoire vidéo, une mémoire particulière et une histoire sur la façon dont tout intéressant s'est développé pour nous ces 5 dernières années. Avertissez immédiatement l'histoire en anglais:


  2. Hier, la première grande version du produit a eu lieu cette année - CLion 2020.1 . Dans ce document, nous avons pris en charge le dialecte CUDA, réécrit l'analyse de flux de données vers Clang, enseigné à l'EDI à travailler avec les compilateurs Clang-cl et IAR, et également apporté de nombreuses autres améliorations et corrections.
  3. Au cours des derniers mois, notre équipe est devenue très triste sans conférences et expositions connexes, où nous sommes toujours heureux d'être sur les stands de l'entreprise et de communiquer beaucoup avec nos utilisateurs et la communauté dans son ensemble. Par conséquent, nous avons décidé d'organiser une session de questions / réponses en ligne avec l'équipe - CLion Ask Me Anything (AMA) . La session se tiendra le 7 mai en temps réel, un rendez-vous préalable est requis. Rejoignez-nous et posez des questions sur le produit!

Parlons maintenant plus de tous ces événements.

CLion - cinq!


Grandir est toujours surprenant et souvent inattendu pour les parents. L'histoire est la même avec le produit - il semble que, hier, nous avons lancé la première version et que le compte à rebours soit prévu pour la version 1.0, et aujourd'hui nous célébrons déjà une date ronde. CLion compte désormais plus de 200 000 utilisateurs par mois, y compris des équipes d'entreprises telles que BMW, NASA, Tencent, Tesla et bien d'autres, et bien sûr, une coopération avec Google et Android Studio.

Nous sommes heureux de soutenir de nombreux étudiants du monde entier qui, avec CLion, font leurs premiers pas dans le développement de logiciels. Et très heureux de savoir qu'un tiers des équipes ICPC en finale 2019 ont également utilisé CLion!

Outils ICPC Final

L'enthousiasme avec chaque nouvelle version, la responsabilité envers un grand nombre de nos utilisateurs, l'unité de l'équipe qui fait un excellent travail - tout cela nous submerge, et nous sommes heureux de partager notre premier petit anniversaire avec toute la communauté Habr! Nous espérons que vous avez apprécié le film;)

CLion 2020.1


Ce n'est peut-être pas le plus important à l'échelle des cinq dernières années, mais nous avons définitivement publié un communiqué important hier. Parlons dans l'ordre des changements les plus importants:

  • Prise en charge du dialecte CUDA.
  • Pour les développeurs intégrés, prise en charge du compilateur IAR et plug-in pour l'intégration avec PlatformIO.
  • Intégration mise à jour avec les outils Clang - migration DFA vers Clangd, amélioration de la saisie automatique, travail plus étroit avec Clang-Tidy et ClangFormat.
  • Pour les développeurs sous Windows - prise en charge du compilateur Clang-cl et du débogueur par défaut.
  • Valeurs de paramètre par défaut dans le refactoring Modifier la signature.
  • Configurations de démarrage et de débogage plus pratiques, y compris la redirection d'entrée et la prise en charge des macros IDE.
  • Mises à jour du formateur, améliorations de l'éditeur, etc.

Cuda


CLion prend désormais en charge le dialecte CUDA C / C ++. Le support comprend:

  • analyseur de code correct (pour exclure le code "rouge" et le fonctionnement incorrect de l'analyseur de code);
  • la mise en évidence et diverses actions intelligentes, telles que la navigation et l'affichage de la documentation;
    Doc rapide CUDA
  • assistant mis à jour pour la création de nouveaux projets - il comprend maintenant un modèle pour les projets CUDA;

    Nouveau projet CUDA
  • prise en charge des extensions de fichier CUDA (.cu / .cuh);
  • cibles CMake spéciales pour CUDA - la boîte de dialogue pour ajouter un nouveau fichier propose désormais de l'ajouter non seulement aux cibles appropriées créées par les commandes CMake habituelles, mais également spécifiques à CUDA ( cuda_add_executable/ cuda_add_library);

    CUDA ajoute aux cibles
  • et même l'auto-complétion pour les crochets angulaires pour les appels du noyau:

    Achèvement du CUDA

Remarque: pour les tests et les captures d'écran, ce projet CUDA a été utilisé avec GitHub: ClaraGenomicsAnalysis .

On nous a demandé pourquoi nous nous concentrions autant sur CUDA, et non sur d'autres domaines spécifiques, tels que Qt. En bref, bien sûr, nous aimerions prendre en charge tous les types de projets C / C ++ dans notre IDE. Mais dans des conditions de ressources limitées, vous devez faire un choix et plutôt vous concentrer sur le support des capacités les plus universelles. Les dialectes tels que CUDA, s'ils ne sont pas pris en charge «prêts à l'emploi», entraînent alors du code rouge, des erreurs d'analyseur de code et d'autres problèmes avec les capacités de base de l'IDE. Contrairement à Qt, où l'analyseur général gère le code et n'a que quelques fonctionnalités spécifiques.

Pour les développeurs embarqués


Nous continuons à soutenir les développeurs de systèmes embarqués. Grâce à la collaboration avec IAR Systems AB, nous avons pu obtenir des licences de partenariat et ajouter la prise en charge du compilateur IAR à CLion. Auparavant, nous ne pouvions pas lire correctement les informations du compilateur et ces projets ne se chargeaient pas correctement dans CLion. Maintenant, tout fonctionne!

Compilateur Iar

Il convient de noter que pour utiliser le compilateur, vous devez utiliser la chaîne d'outils MinGW. Et ici vous pouvez trouver quelques conseils sur la façon d'utiliser CMake avec l'IAR Embedded Workbench.

Nous continuerons à travailler avec IAR Systems AB, et nous espérons qu'un jour, CLion aura également un support pour leur débogueur.

Dès la toute première version de CLion, nous avons discuté avec les créateurs de PlatformIO, un écosystème unique pour démarrer rapidement des projets de systèmes embarqués. Par exemple, elle a aidé beaucoup de personnes à démarrer le premier projet sur Arduino. Pour la version 2020.1, nous avons collecté un plugin PlatformIO pour CLion assez basique mais utile . Son opportunité la plus importante est de créer un projet pour PlatformIO basé sur CMake, il suffit de sélectionner ce type de projet dans l'Assistant Créer de nouveaux projets:

Plugin PlatformIO

le plugin crée automatiquement des configurations de lancement et de débogage spécifiques à PlatformIO, et vous permet également de déboguer à l'aide du débogueur unifié PIO directement à partir de CLion Plus d'informations peuvent être trouvées dans la documentation officielle . Essayez d'écrire vos souhaits pour un développement ultérieur - nous nous demandons maintenant où et comment développer ce plugin.

Intégration de l'outil Clang mise à jour


Comme vous le savez déjà, nous portons activement de plus en plus de fonctionnalités vers le moteur de langage basé sur Clangd. Premièrement, pour obtenir rapidement un support pour les nouvelles fonctionnalités du langage et adapter les actions IDE pour elles, et deuxièmement, dans certains cas pour améliorer les performances de l'éditeur (pas partout, malheureusement, Clangd est un tel outil universel).

Dans la version 2020.1, nous avons consacré beaucoup de temps aux correctifs de complétion automatique basés sur Clangd (il est apparu dans la version 2019.3). Et, ayant décidé que les résultats de cette approche sont assez bons, ils ont activé le mode par défaut dans lequel les options de complétion automatique sont entièrement empruntées à Clangd. Vous pouvez réactiver le mode de fonctionnement mixte dans les paramètres:

Achèvement de Clangd

Mais nous ne recommandons pas de le faire sans raison valable, car la combinaison des résultats de deux fournisseurs différents peut entraîner des problèmes de priorité. De plus, à en juger par nos mesures, la nouvelle auto-complétion basée sur Clangd n'est pas plus lente, mais souvent plus rapide que celle intégrée.

Clangd a également déplacé l'analyse de flux de données (DFA) dans cette version. Cet analyseur mérite un article séparé, car il peut et fait ce que les compilateurs ne font pas habituellement (principalement parce qu'ils n'en ont pas besoin, bien qu'il soit théoriquement possible de le reproduire de leur côté) - analyse la façon dont les données se déplacent le long du graphique de flux de contrôle et, Sur la base de ces connaissances, trouve des erreurs potentielles. Par exemple, des conditions toujours vraies ou fausses, des récursions et des boucles infinies, des expressions de retour manquantes, des valeurs inutilisées, des paramètres et des variables locales:

DFA toujours vrai

Maintenant, tout fonctionne sur Clangd. Et nous espérons que cela améliorera les performances des analyses de code sur vos projets. Malheureusement, auparavant, nous devions souvent conseiller aux utilisateurs de désactiver spécifiquement l'analyse DFA pour améliorer les performances de l'éditeur. Si tel est votre cas, nous vous suggérons de rallumer l'analyseur. Nous attendons vos commentaires dans notre support technique et notre tracker .

Pour couronner le tout, les outils Clang doivent noter des améliorations dans la prise en charge de Clang-Tidy et ClangFormat:

  • Lorsqu'un fichier de configuration .clang-tidy est trouvé dans le projet, CLion désactive automatiquement les paramètres Clang-Tidy dans l'EDI et passe à l'utilisation de ce fichier de configuration. Le comportement est déterminé par la personnalisation.
  • .clang-format CLion ClangFormat . ClangFormat, , CLion , .

Windows


Si sous Linux et macOS la chaîne d'outils CLion est assez simple à choisir (nous prenons GCC ou Clang), alors sous Windows il y a beaucoup d'options qui ne sont pas faciles à comprendre: Cygwin, MinGW / Mingw-w64, WSL, Visual Studio. Dans le même temps, différents compilateurs sont souvent utilisés dans chaque chaîne d'outils. On nous interroge depuis longtemps sur la possibilité d'utiliser Clang sous Windows. Et dans CLion 2020.1, il est devenu possible de prendre Clang-cl (à partir du site Web officiel de LLVM, ou avec des outils Visual Studio) et de l'utiliser dans la chaîne d'outils Visual Studio:

Clang-cl

Au fait, avez-vous remarqué le débogueur sélectionné par défaut dans cette boîte de dialogue? Le même débogueur basé sur LLDB pour la chaîne d'outils Microsoft Visual C ++ que notre équipe développe et que nous avons introduit l'année dernière est inclus dans la nouvelle version par défaut! Cependant, si vous souhaitez également utiliser le support des visualiseurs natifs, vous devez toujours l'activer explicitement dans les paramètres: Paramètres | Construction, exécution, déploiement | Vues des données du débogueur | Activez les rendus NatVis pour LLDB.

Refactoring Modifier la signature


Parmi les nombreux refactorings de CLion, Change Signature se démarque (Ctrl + F6 sous Windows et Linux, ⌘F6 sous macOS). Il vous permet de changer le nom de la fonction, le type de retour, la liste des paramètres. Dans le même temps, l'EDI met à jour toutes les utilisations de la fonction afin de préserver l'exactitude du code. Mais que faire si vous ajoutez un nouveau paramètre? Auparavant, CLion mettait une valeur par défaut de type dans toutes les utilisations (le cas échéant) - 0pour les nombres, nullptrpour les pointeurs. Désormais, à partir de la version 2020.1, il est devenu possible de spécifier la valeur que CLion remplacera pour utiliser la fonction directement dans la boîte de dialogue de refactoring:

Modifier la signature
Si vous ne spécifiez rien, le comportement sera le même qu'avant.

Configurations de démarrage et de débogage


Les nombreuses petites améliorations apportées aux configurations de démarrage et de débogage dans CLion les ont rendues beaucoup plus utilisables.

Tout d'abord, les configurations du serveur GDB distant et du serveur GDB intégré fonctionnent désormais avec des cibles personnalisées, et pas seulement avec des cibles CMake. Il est donc maintenant possible de déboguer sur une machine distante ou sur un microcontrôleur non seulement dans le cas d'un projet basé sur CMake, mais aussi pour tout autre type de projet pour lequel vous avez configuré des cibles personnalisées (en spécifiant les commandes de génération et de nettoyage du projet).

Deuxièmement, pour les configurations telles que CMake, Custom Build et Gradle Native Applications, vous pouvez désormais utiliser des macros et des variables de chemin. Avec leur aide, vous pouvez accéder à de nombreuses valeurs utiles:

Macros IDE

Et enfin, l'option de rediriger l'entrée du programme est apparue dans ces types de configurations. En combinaison avec les macros Prompt / FilePrompt, il permet non seulement de rediriger les entrées vers le programme à partir d'un fichier, mais également d'afficher une boîte de dialogue pour sélectionner un fichier à saisir au début de la configuration:

Redirection d'entrée

Mises à jour du formateur, améliorations de l'éditeur, etc.


Il convient de mentionner quelques autres petites améliorations ponctuelles dans différents sous-systèmes:

  • Paramètres de dénomination distincts pour les champs de structure et les champs de classe.
  • Possibilité de réduire les blocs de code mis en évidence avec #pragma region/ #pragma endregion.
  • La fenêtre de visualisation de la documentation peut désormais être non seulement appelée par raccourci, mais également visible simplement en survolant le symbole d'intérêt.
  • La police par défaut dans l'EDI est maintenant JetBrains Mono , une nouvelle police à espacement fixe de JetBrains conçue spécifiquement pour les développeurs pour aider à optimiser la lisibilité du code.
  • Le thème d'éclairage par défaut est désormais le même sur les trois plates-formes - IntelliJ Light.
  • Les sessions de terminal peuvent être divisées en plusieurs horizontalement ou verticalement. Ainsi, plusieurs sessions peuvent être vues simultanément dans un seul onglet.
  • Depuis la plateforme IntelliJ, des améliorations ont également été apportées à l'intégration avec les systèmes de contrôle de version .

CLion me demande n'importe quoi


Une session de questions / réponses en ligne avec les développeurs de l'équipe CLion est prévue le 7 mai. La session réunira des membres de l'équipe responsables des sous-systèmes suivants:

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

La session est gratuite, mais une préinscription est requise . Nous vous demandons également de réfléchir à l'avance et, si possible, de laisser des questions à l'équipe dans le formulaire d'inscription. Il sera possible de poser des questions pendant la session, via un formulaire spécial (et je vais modérer cela et poser des questions à mes collègues), mais les questions posées à l'avance sont plus susceptibles de recevoir des réponses détaillées au début de la session.

C'est tout pour aujourd'hui. Lire jusqu'au bout? Merci beaucoup pour votre attention! Écrivez des questions, des suggestions, des exclamations dans les commentaires - nous sommes toujours heureux de les lire et d'y répondre!

CLion
L'équipe Drive to Develop

All Articles