Publication de CLion 2018.2 : projets clangd, Gradle et de bases de données de compilation, Sanitizers Google et prise en charge des bases de données
Depuis son lancement en avril 2015, CLion 1.0 n’a cessé de s’améliorer. Nous continuons à travailler à son amélioration constante, non seulement pour la satisfaction de nos clients qui l’utilisent actuellement, mais aussi pour ceux qui attendent l’ajout de nouvelles fonctionnalités clés pour l’adopter. Cette nouvelle version constitue une nouvelle avancée afin de répondre à ces attentes.
Elle apporte en effet de nouvelles fonctionnalités particulièrement importantes pour les deux groupes. Tout d’abord, cette nouvelle version de CLion inclut un moteur de langage expérimental basé sur clangd, ainsi que de nombreuses améliorations de la performance. Elle propose également la prise en charge de plusieurs nouveaux modèles de projet, ce qui pourrait déboucher sur une API de modèle de projet dans le futur.
Nous vous invitons à poursuivre votre lecture pour plus de détails et à profiter de la version d’essai gratuite de 30 jours pour évaluer les nouvelles fonctionnalités et améliorations :
- Prise en charge du langage C++ :
- Améliorations des performances de l’IDE
- Modèles de projets :
- Nouveaux outils :
- Correctifs du débogueur pour GDB et LLDB.
- Possibilité de recompilation d’un fichier unique pour accélérer les cycles de développement.
- Les derniers goodies de la plateforme IntelliJ et de nombreuses autres améliorations.
Pour une vue d’ensemble rapide des nouvelles fonctionnalités et améliorations, regardez cette vidéo de Phil Nash :
Prise en charge du langage C++
Clangd en tant que moteur de langage C++ expérimental complémentaire
CLion utilise désormais un moteur de langage basé sur clangd en complément de son propre moteur de langage. Ce nouveau moteur expérimental est activé par défaut sur les plateformes Linux et macOS dans la version 2018.2, sous Windows pour la version 2018.2.1. Remarque : il est utilisé uniquement pour afficher des erreurs et des avertissements dans l’éditeur, tandis que les autres fonctionnalités d’analyse du code (par exemple correctifs rapides, refactorisations, saisie automatique, navigation, etc.) ne sont pas affectées. Consultez notre artcile de blog récent pour plus de détails.
Si vous souhaitez désactiver ce moteur de lanage ou personnaliser les avertissements et les erreurs qu’il détecte, sélectionnez Paramètres/Préférences | Languages & Frameworks | C/C++ | Clangd :
A quoi ressemblera la version finale ? Bonne question ! Dans un premier temps, nous allons maintenir ce moteur de langage complémentaire pour voir si cette combinaison fonctionne bien, afin d’offrir une analyse plus fine et rapide du code dans CLion. Nous envisageons de déplacer d’autres fonctionnalités d’analyse de code vers le moteur basé sur clangd dans la mesure du possible. C’est pour cette raison que nous qualifions cette fonctionnalité d’expérimentale pour le moment. Nous allons continuer de travailler sur notre propre moteur de langage en parallèle. Restez à l’écoute !
Correctifs de prise en charge de C++ et nouvelle inspection
Une nouvelle inspection est désormais capable d’identifier les erreurs d’ordonnancement lors du passage d’arguments du même type. Cela requiert des noms de paramètres significatifs et l’algorithme dépend de plusieurs techniques heuristiques. L’idée est de vous permettre d’identifier les erreurs avant même d’avoir compilé le code
Remarque : cette inspection implique l’activation du moteur de langage expérimental basé sur clangd.
Nous avons fait évoluer le moteur de langage de CLion, qui constitue la base de toutes les actions d’un IDE intelligent, telles que la navigation, les refactorisations, la génération de code, et bien plus encore. Un ensemble d’améliorations pour différents cas a été mis en œuvre.
Améliorations des performances de l’IDE
Nous poursuivons le remaniement des composants essentiels, étape par étape, pour optimiser encore les performances de l’IDE. Notre objectif principal est d’éliminer tout blocage de l’interface. La version 2018.2 résout de nombreux problèmes dans ce domaine. Les plus remarquables concernent le blocage de l’interface après une mise à jour de VCS, la navigation jusqu’au symbole correspondant (et par conséquent entre le basculement entre les fichiers .h et .cpp) et le blocage des projets UE4.
La principale amélioration selon nous porte sur le processeur d’indentation ciblant l’analyseur lexical. L’exécution du programme de mise en forme sur un analyseur lexical est à l’évidence plus rapide que l’analyse et la résolution globales du code C++. Nous pensons que cette modification améliorera significativement les performances de l’éditeur pour la plupart de nos utilisateurs. Toutefois, des imprécisions sont possibles pour certains cas complexes. Par conséquent, si vous rencontrez des problèmes, regardez ici pour déterminer comment revenir à la solution précédente.
Pour rappel, en cas de blocage de l’IDE ou d’une sollicitation trop intensive du processeur/de la mémoire, il est important de fournir les journaux de l’IDE, des thread dumps et des instantanés du processeur/de la mémoire pour nous aider à comprendre le problème (voici comment les réunir). Il serait également recommandé de les collecter sur la dernière version disponible de CLion.
Modèles de projets
Gradle et base de données de compilation
Cette version met CLion à la disposition de tous ceux qui ne travaillent pas sur un projet CMake mais souhaitent utiliser cet IDE pour le développement C/C++ et profiter de ses fonctionnalités très complètes d’analyse de code.
Auparavant, le fait d’ouvrir un projet autre que CMake dans CLion ne donnait accès qu’à des fonctionnalités limitées dans l’IDE. (Pour être tout à fait exact, nous devons préciser qu’un plug-in tiers pour Bazel est disponible depuis quelque temps.)
Désormais, vous disposez de deux options supplémentaires – les nouveaux projets Gradle C++ et la base de données de compilation. Ensemble, elles offrent une vue d’ensemble complète depuis CLion, avec comme seul bémol le fait que la base de données de compilation ne permet pas encore de créer la build du projet ou de l’exécuter (car le modèle ne dispose tout simplement pas des informations nécessaires).
Pour ouvrir le projet :
- Pour Gradle : ouvrez le fichier build.gradle depuis les sources du projet (notez que CLion prend uniquement en charge actuellement les nouveaux plug-ins Gradle C++ ; l’ancienne version ne fonctionne plus).
- Pour la base de données de compilation : utilisez le fichier compile_commands.json (voir cette liste de possibilités pour créer une base de données de compilation pour votre projet).
CLion affiche le statut de chargement du projet dans une fenêtre d’outils de build :
Et voilà ! L’analyse de code de CLion, comprenant la saisie automatique, la navigation du code, la refactorisation et l’analyse de code, est désormais totalement disponible pour votre projet Gradle ou de base de données de compilation. Cela signifie par exemple que les projets Makefiles et Ninja peuvent désormais être ouverts dans CLion – Il suffit de générer la base de données de compilation correspondante et de l’exécuter !
Prise en charge de CMake
CMake demeurant le modèle de projet le mieux intégré avec CLion, nous y avons apporté quelques améliorations pratiques. La modification la plus importante est que vous n’avez plus besoin de faire la liste des fichiers d’en-tête directement dans CMake pour obtenir une vue d’ensemble du code de ces fichiers dans CLion. Si vous incluez le fichier d’en-tête ou le fichier source dans un fichier de projet, l’IDE le traite automatiquement comme un fichier de projet, vous bénéficierez donc d’une analyse complète du code ici !
Remarque : cela ne fonctionne que si les fichiers d’en-tête et les fichiers source que vous incluez sont situés sous la racine du projet (afin de ne pas modifier vos bibliothèques et fichiers lors de la refactorisation, etc.).
D’autre part, lorsque vous configurez vos outils externes dans CLion, vous pouvez utiliser des macros propres à CMake pour obtenir des valeurs propres à CMake, telles que le nom de l’exécutable, le dossier de génération, etc.
Nouveaux outils
La prise en charge de Valgrind Memcheck a commencé dès la version 2017.3, qui a marqué la première étape vers des outils d’analyse dynamique dans CLion. Avec la version 2018.2, il est désormais possible d’exporter/importer les résultats de Valgrind Memcheck dans CLion.
Cette version marque également la prise en charge des sanitizers Google. Contrairement à Valgrind, les sanitizers impliquent une recompilation du projet avec l’indicateur de build -fsanitize
, par conséquent vous devez l’inclure manuellement dans le script CMake, par exemple : set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread -fPIE -pie -g")
. Pour Clang >= 3.8.0 et GCC >= 5.0.0, CLion détecte ensuite l’indicateur de sanitizer automatiquement et visualise la sortie des sanitizers dans l’onglet « Sanitizer » de la fenêtre de l’outil d’exécution :
Consultez la liste des sanitizers pris en charge, ainsi que les paramètres disponibles dans notre article de blog.
Nous avons récemment mené une étude sur Twitter demandant aux développeurs s’ils travaillent souvent avec les bases de données lors du développement de projets C/C++. La réponse a été un oui franc et massif ! Par conséquent, il nous semble essentiel de vous informer également de la prise en charge des outils de base de données et du code SQL. Ces fonctionnalités permettent d’utiliser CLion 2018.2 comme un plug-in intégré, apportant la fonctionnalité DataGrip à l’IDE. La liste des bases de données prises en charge est assez impressionnante et inclut MySQL, PostgreSQL, Oracle, DB2, Sybase et autres. En complément des différentes options de navigation et de modification du contenu de la base de données, le plug-in permet également de comprendre en détail le code SQL.
Débogueur
CLion 2018.2 intègre LLDB v6.0 sous macOS et Linux. Il apporte GDB v8.1 sous Linux et Windows et GDB v8.0.1 sous macOS.
L’intégration avec GDB a été améliorée sur toutes les plateformes et CLion utilise les pretty-printers d’un type pour afficher les pointeurs de ce type :
Concernant LLDB, CLion traite désormais les entrées unsigned char
correctement dans le débogueur et affiche correctement les entrées unordered_map
:
Recompilation d’un fichier unique
Une fonctionnalité a été ajoutée pour accélérer vos cycles de développement dans CLion lorsque vous travaillez sur des projets CMake ou de base de données de compilation. Désormais, vous pouvez recompiler un fichier unique sans déclencher la recompilation de l’ensemble du projet. Cela est particulièrement pratique pour vérifier les modifications des fichiers locaux :
Découvrez comment cela fonctionne dans le détail en lisant cet article de blog.
Ce n’est pas tout
Cette nouvelle version comporte bien trop de nouveautés pour les présenter toutes dans cet article déjà long (si vous l’avez lu jusqu’ici – merci !). Pour finir nous mentionnerons tout de même les derniers goodies de la plateforme IntelliJ, notamment la prise en charge de la barre tactile du MacBook et des améliorations de la prise en charge de VCS.
Testez ces nouvelles fonctionnalités en téléchargeant CLion 2018.2 et en profitant de la version d’essai gratuite de 30 jours. D’autre part, vous pouvez utiliser ce projet de démonstration de GitHub pour juger par vous-même des principales améliorations. N’hésitez pas à nous faire part de vos retours d’expérience !
Votre équipe CLion
JetBrains
The Drive to Develop