La version finale de cette année est CLion 2020.3! Avec de nouvelles fonctionnalités dans le débogueur, MISRA vérifie et améliore Qt

Bonjour, Habr!



Alors que l'année tire à sa fin, chez JetBrains, nous déployons les versions traditionnelles du «train à vapeur» pour nos outils de bureau. Nous avons déjà écrit sur certains d'entre eux ( WebStorm , DataGrip ) ici sur Habré. Et aujourd'hui, il est temps de vous parler de la mise à jour de notre environnement de développement multiplateforme en C et C ++ - CLion 2020.3!



Sortie de CLion 2020.3



En bref sur le plus important:



  • Le débogueur a maintenant la capacité d'examiner les vidages de mémoire et d'exécuter la configuration avec des privilèges d'administrateur. Et maintenant, vous pouvez déplacer le point d'exécution à travers le code dans n'importe quelle direction pendant une session de débogage.

  • Pour les tests unitaires, nous avons ajouté la prise en charge de CTest, un exécuteur de test fourni avec le modèle de conception CMake.

  • Qt Qt- UI, , Qt .

  • , Makefile, CLion. CMake CMake.

  • MISRA C 2012 MISRA C ++ 2008.

  • Et de nombreuses autres améliorations pour les configurations de lancement et de débogage, la prise en charge des systèmes de contrôle de version et le développement à distance. Diverses améliorations de l'interface utilisateur. Et… l'aperçu tant attendu du nouveau service de développement collaboratif et de programmation en binôme.



La nouvelle version peut être téléchargée à partir du site Web et essayée gratuitement pendant 30 jours. Si vous avez un abonnement actif à CLion ou à All Products Pack, il vous suffit de mettre à jour la version vers 2020.3. Pour rappel, lorsque vous achetez un abonnement annuel pour n'importe quel produit, vous recevrez une licence perpétuelle de sauvegarde .



Parlons maintenant plus en détail des innovations et améliorations de la version 2020.3.



Débogueur



La version 2020.3 marque une étape majeure dans le développement des intégrations de débogage dans CLion. Et ce n'est pas un hasard, car cette intégration est utilisée non pas par un, mais par plusieurs produits de l'entreprise! CLion, un plugin IntelliJ Rust et un aperçu de l'environnement de développement de jeux Rider for Unreal Engine . Ensemble, nous avons pu implémenter de nombreuses nouvelles fonctionnalités importantes dans le débogueur.



Débogage avec des vidages de mémoire



Le processus s'est terminé anormalement, en d'autres termes, est tombé, laissant un vidage de mémoire? Nouvelle action d'exécution | Open Core Dump, disponible pour Linux et macOS, vous permettra d'ouvrir un vidage mémoire d'un processus tombé dans CLion pour un débogage supplémentaire:



Open core dump



dans la boîte de dialogue, vous devez spécifier le chemin vers le vidage mémoire, le chemin vers le fichier avec les symboles de débogage (par exemple, le fichier exécutable du programme convient si l'assemblage a été activé en mode débogage), correspondance de chemin (si le fichier exécutable a été construit sur une machine différente). CLion créera ensuite une configuration pour déboguer cette image mémoire que vous pouvez exécuter.



La boîte de dialogue peut afficher une liste des configurations déjà créées. Les configurations peuvent également être créées manuellement à partir de Run | Modifier les configurations. Lors du débogage avec un vidage de la mémoire, vous pouvez analyser les informations sur les cadres, examiner les valeurs des variables, afficher l'état de la mémoire et le code d'assemblage, évaluer les expressions et exécuter des commandes à partir de la console du débogueur. Dans le même temps, pour des raisons évidentes, le débogage étape par étape est désactivé et la fenêtre de sortie du processus n'est pas disponible.



Déboguer le vidage de mémoire



Parmi les limitations actuelles, outre l'indisponibilité de la nouvelle fonction sur la plateforme Windows, il est à noter que dans le cas de LLDB, le fichier avec les symboles de débogage n'est pas encore utilisé. Et les possibilités de débogage des vidages collectés sur une autre machine et de débogage à distance des vidages sont très limitées ( CPP-22736 , CPP-22656 ).



Exécuter et déboguer avec les privilèges d'administrateur



Une nouvelle case à cocher est apparue dans les configurations de lancement et de débogage de cette version - pour lancer la configuration avec des privilèges d'administrateur. La personnalisation est prise en charge pour de nombreux types de configurations: CMake, Makefile, Gradle Native, Custom Build, CTest.



Pour utiliser la nouvelle fonctionnalité plus facilement dans la pratique, nous avons écrit un démon spécial qui vous invite à rester connecté en tant qu'administrateur lors de l'exécution de telles configurations pendant une période de temps sélectionnée:



Paramètres d'élévation



En savoir plus sur le fonctionnement de cette nouvelle fonctionnalité ici (en anglais).



Définition du point d'exécution



Les utilisateurs de Visual Studio peuvent être familiarisés avec une fonctionnalité utile telle que la modification du point d'exécution pendant une session de débogage. Pour tout le monde: imaginez que vous vouliez sauter l'exécution d'une boucle entière, changer la branche d'une instruction conditionnelle, revenir en arrière de quelques étapes dans le déroulement de l'exécution du programme juste pendant une session de débogage. Maintenant, CLion a une nouvelle action Définir le point d'exécution sur le curseur pour cela , ou vous pouvez réorganiser manuellement la flèche jaune sur la ligne souhaitée à droite dans l'éditeur:



Définir le point d'exécution



faisons une réservation qu'une telle action peut interrompre le programme (par exemple, si vous manquez la commande pour initialiser une variable). Mais s'il est utilisé habilement, il vous permettra de déboguer votre application très efficacement.



Conseils interactifs



Presque tous nos IDE basés sur IntelliJ ont des astuces interactives et des montres intégrées dans la version 2020.3. Même avant 2020.3, lors d'une session de débogage, vous pouviez voir les valeurs des variables directement dans l'éditeur. Maintenant, ces conseils sont devenus interactifs - vous pouvez développer la variable et voir la valeur de tous ses champs:



Conseils interactifs



Et vous pouvez également ajouter une expression arbitraire pour le comptage et la visualisation directement dans l'éditeur (à côté de la ligne de code requise). Cela s'avère plus pratique que les montres ordinaires (qui sont constamment affichées dans la fenêtre du débogueur) lorsque les variables utilisées dans l'expression n'ont de sens qu'à un endroit spécifique du code (par exemple, les variables locales).



Vous voulez voir les nouvelles fonctionnalités en action? Essayez-le vous-même ou regardez cette vidéo de notre avocat-développeur:





Test unitaire



En termes de frameworks de tests unitaires, CLion prend en charge Google Test, Catch (2), Boost.Test et doctest. Selon notre enquête sur l'écosystème de développement 2020, 31% des développeurs C ++ utilisent Google Test. Par conséquent, nous avons pris le temps d'améliorer la présentation des résultats de Google Test run dans CLion:



  • Nous avons appris à construire un arbre de test tout de suite, avant même que tous les tests ne soient exécutés.

  • Démarrage de l'affichage des valeurs des paramètres de test (pour les tests paramétrés).

  • Nous avons introduit une icône spéciale pour marquer les tests désactivés (DISABLED) dans l'arborescence.

  • Et surtout, ils ont considérablement accéléré le processus de recherche de tests dans le projet.



Gt courir



Nos utilisateurs (en particulier ici sur Habré) ont activement demandé d'ajouter le support de CTest, un testeur livré avec le modèle de projet CMake. Ce n'était pas très facile, car CTest est lui-même un outil de lancement, et pas seulement un autre framework, et donc il ne s'intégrait pas bien dans l'API existante. Mais nous l'avons finalement fait! CLion trouve désormais automatiquement les tests CTest dans le projet, crée des configurations de lancement et de débogage pour eux, crée une arborescence affichant les résultats des tests. Vous pouvez même déboguer vos tests - cela obligera CLion à exécuter le test, pas le processus ctest.



En ce qui concerne les limitations, il convient de noter que CLion prend en charge les versions 3.14 et supérieures de CTest. De plus, si un bloc de test d'un framework déjà pris en charge (Google Test, Catch (2), Boost.Test et doctest) est exécuté en tant que test CTest, un tel bloc aura une entrée dans l'arborescence des résultats (c'est-à-dire qu'il correspond à un test).



Une vidéo traditionnelle de Phil Nash sur les améliorations pour les tests unitaires:





Projets Qt



On voit que CLion écrit souvent des projets en utilisant le framework Qt. Et, bien que nous ne prévoyions pas de créer notre propre concepteur d'interface ou de prendre en charge le modèle de projet qmake, nous avons néanmoins décidé de faire quelque chose pour améliorer l'expérience utilisateur dans CLion dans ce sens.



Projet d'interface utilisateur et modèles de classe



La boîte de dialogue de création d'un nouveau projet propose désormais deux nouveaux types - Qt Console Executable et Qt Widgets Executable:



Nouveau projet Qt



spécifiez les valeurs requises - CLion crée un projet CMake de départ du type sélectionné, et maintenant le widget ou l'application console le plus simple est dans votre poche! En passant, en parlant de CMake et Qt, Qt6 suggère d'installer certaines bibliothèques via Conan (CLion a également un plugin correspondant ) et de les construire via CMake et Ninja. N'y a-t-il pas une raison d'essayer CLion pour le développement Qt?



À propos, lors de l'ajout d'une nouvelle classe d'interface utilisateur Qt, CLion peut créer trois fichiers à la fois ( fichiers .ui et fichiers de classe). Pour ce faire, sélectionnez l'action de classe QT UI dans le menu Ajouter un nouveau fichier.



Travailler avec le code Qt



Le code Qt est généralement du code C ++ normal, mais il a ses propres bizarreries. Par exemple, Qt a un certain style d'importation de fichiers d'en-tête. Par exemple, il peut être activé correctement QtCore/qurl.h



, mais il serait plus correct de l'utiliser QUrl



. Le style est désormais pris en charge lors de l'importation automatique dans CLion:



Importation automatique Qt



la fonction de complétion de code comprend désormais quand il est nécessaire de proposer des variantes de signaux uniquement ou uniquement des slots pour les principales entités Qt:



Achèvement Qt



Ceci est pratique, car la liste déroulante affiche uniquement les variantes qui correspondent à la signification, et pas toutes celles qui correspondent par caractères tapés.



De quelle fonctionnalité Qt vous manque-t-il personnellement dans CLion? Écrivez dans les commentaires!



Modèles de conception dans CLion



Nous ajoutons progressivement le support pour de plus en plus de types de projets utilisant le Makefile dans CLion (nous gardons une liste des projets testés ici ). Dans la version 2020,3, nous avons soutenu des projets qui utilisent les ccache , libtool , butor , slibtool, et des outils de jlibtool . Ce sont des projets ZFS, PHP, Mono, Curl et autres. Les configurations d'exécution et de débogage pour les cibles du Makefile de niveau supérieur sont automatiquement générées. De plus, pour les projets Makefile, il est devenu possible de recompiler un fichier séparé sans avoir à reconstruire l'ensemble du projet (dans la disposition par défaut - Ctrl + Maj + F9 sous Windows / Linux et ⇧⌘F9 sous macOS).



Pour les projets CMakevous pouvez maintenant désactiver les profils CMake temporairement inutilisés. Ceci est particulièrement utile si le projet a plusieurs profils configurés à la fois pour le développement à distance (certains d'entre eux peuvent être temporairement désactivés) ou pour diverses chaînes d'outils (pas toujours utilisées ensemble). Lorsque ces profils sont désactivés, le temps de chargement du projet est sensiblement réduit. Auparavant, pour cela, les profils devaient être supprimés, mais maintenant vous pouvez simplement les désactiver. Cela peut être fait à partir des paramètres de profil dans Paramètres / Préférences | Construction, exécution, déploiement | CMake ou depuis la boîte de dialogue de téléchargement de CMake:



Désactiver / activer les profils CMake



pour plus d'informations sur les améliorations apportées aux projets Qt et aux modèles de projet, consultez la présentation de notre développeur-avocat.



Normes MISRA



Nos clients comprennent de nombreux développeurs embarqués et des représentants de l'industrie automobile. Pour eux, une partie importante du processus de développement est la certification du code selon les normes MISRA. Nous ne pouvons pas encore aider avec la certification elle-même, mais nous sommes tout à fait capables de signaler d'éventuelles incohérences avec les normes MISRA à un stade précoce de développement! Dans la version CLion 2020.3, nous avons commencé à ajouter des vérifications pour les normes MISRA C 2012 et MISRA C ++ 2008 à l'analyseur de code statique intégré:



Contrôles MISRA



tous ne sont pas pris en charge; une liste complète se trouve sur cette page . La mise en place des inspections est assez simple:



Paramètres MISRA



nous ajouterons d'autres inspections MISRA à l'avenir. Il est possible que les contrôles AUTOSAR apparaissent également.



Code With Me est un nouvel outil de développement collaboratif



Votre équipe pratique-t-elle la programmation en binôme? Que diriez-vous d'un outil de partage de code? Nous avons récemment lancé un programme d'accès anticipé pour notre nouvel outil de développement collaboratif, Code With Me. Fondamentalement, il s'agit d'un plugin disponible pour presque tous nos IDE de bureau (à l'exclusion de JetBrains Rider et DataGrip jusqu'à présent). Il vous permet, à vous et à votre équipe, de collaborer sur des projets directement à partir de vos IDE. Pour essayer Code With Me, installez le plugin dans Préférences / Paramètres | Plugins.



Codez avec moi



Vous pouvez en savoir plus sur les capacités du plugin dans ces articles de blog . Code With Me est toujours en développement actif. Si vous rencontrez des problèmes lors de son utilisation, veuillez nous en informer ici .



Et beaucoup plus



D'autres améliorations importantes incluent:



  • Vous pouvez maintenant utiliser un script pour configurer l'environnement dans lequel la configuration d'exécution / débogage sera exécutée. De plus, vous pouvez désormais modifier les configurations d'exécution / débogage pendant l'indexation du projet.

  • Nous avons étendu les capacités de saisie semi-automatique avec des extraits de code Clang. Ils vous aideront à corriger non seulement les mots-clés, mais également la syntaxe des expressions entières:



    Extraits de Clang

  • Le jeu de couleurs de CLion peut désormais être synchronisé avec le thème de votre système d'exploitation. Pour activer cette fonctionnalité, allez dans Paramètres / Préférences | Apparence et comportement | Apparence et sélectionnez l'option Synchroniser avec le système d'exploitation.

  • , (Drag&Drop). Open in Right Split, Project, Recent Files Search Everywhere.

  • Git-. VCS , VCS (, Git). Search Everywhere Git. , , .



C'est tout pour nous. Nous sommes heureux que vous ayez lu jusqu'au bout. Merci pour l'attention! Laissez vos questions, réflexions et suggestions dans les commentaires - nous sommes intéressés par ce que vous pensez et nous sommes toujours heureux de vous aider!



L'équipe CLion

La volonté de se développer



All Articles