Data Flow Analysis
L'analyse du flux de données (DFA) suit le flux de données dans votre code et détecte les problèmes potentiels sur la base de cette analyse. En plus de l'analyse DFA locale (qui fonctionne au sein d'une fonction isolée), CLion 2021.1 inclut une DFA globale (qui considère l'ensemble d'une unité de traduction d'un programme comme un seul élément pour l'analyse). La DFA globale n'enrichit pas seulement les contrôles déjà existants, elle ajoute également plusieurs nouvelles inspections uniques.
Renforcer les vérifications locales avec l'analyse DFA globale
La liste des inspections actuelles basées sur la DFA qui bénéficient de la DFA globale inclut les éléments suivants :
- Dangling pointers : détecte les pointeurs susceptibles de rediriger vers une mémoire déjà effacée ;
- Null dereference : détecte le déréférencement de pointeurs pouvant contenir nullptr ;
- Endless loops et Infinite recursion ;
- Constant conditions : détecte les conditions possibles qui sont toujours vraies ou fausses ;
- Unreachable code et Unused values ;
- Escape analysis : détecte les variables contenant des références à des variables locales qui échappent à leur portée.
Nouvelles vérifications de DFA globale
Plusieurs nouvelles inspections ont été ajoutées, qui n'ont de sens que dans le cadre d'une analyse globale – en exécutant une DFA sur l'ensemble de l'unité de traduction d'un programme :
- Constant function result : signale les fonctions dont la valeur de retour semble toujours être la même constante ;
- Constant parameter : signale les fonctions où un paramètre semble toujours être la même constante ;
- Unreachable function calls : détecte les fonctions dont les sites d'appel ne sont jamais exécutés.
Améliorations des performances
CLion 2021.1 optimise également de nombreuses étapes de la DFA. Les mesures de performance sur les projets Postgres, Eigen et Clangd, entre autres, montrent que la performance globale est bonne et que certaines caractéristiques ont été améliorées (comme le nombre de fichiers dans lesquels l'exécution de la DFA a été interrompue par CLion en raison d'une expiration de délai).
Analyse dynamique
Couverture des branches
En plus de la couverture des lignes, CLion 2021.1 peut à présent calculer également la couverture des branches. Cette méthode prend en compte l'ensemble des branches de chaque structure de contrôle. Exécutez votre application ou vos tests CMake avec la couverture et vérifiez la nouvelle colonne qui a été ajoutée à la fenêtre d'outils Coverage.
La couverture des branches est activée par défaut et peut être paramétrée dansSettings | Build, Execution, Deployment | Coverage, mais elle ne fonctionne qu'avec GCC/gcov ou la version 12.0.0 de LLVM/llvm-cov (ou une version ultérieure).
Analyse dynamique en mode distant
Afin d'assurer la cohérence des fonctionnalités sur l'ensemble des chaînes d'outils, des modèles de projets et des configurations, CLion 2021.1 permet à Google Sanitizers, Valgrind Memcheck et Code Coverage de fonctionner avec des chaînes d'outils distantes.
Contrôles MISRA C et C++
CLion 2021.1 ajoute des vérifications supplémentaires des normes MISRA C 2012 et MISRA C++ 2008. La liste complète est maintenue sur notre page Confluence et vous permet de suivre facilement l'avancement.
Saisie semi-automatique Postfix pour C et C++
La saisie semi-automatique postfix pour C et C++ vous permet d'ajouter du code autour d'une expression que vous venez de saisir. Elle peut ajouter une construction de langage fréquemment utilisée à une expression ou passer l'expression comme premier argument d'une fonction libre.
Ajouter une construction de langage à l'expression
Les modèles Postfix peuvent vous aider à utiliser des constructions de langage courantes. Saisissez une expression puis un point, ajoutez l'abréviation du modèle postfix et appuyez ensuite sur la touche d'expansion ou sélectionnez le modèle requis dans la liste de saisie semi-automatique qui apparaît. Le template étendu enveloppera l'expression donnée. Retrouvez la liste complète des modèles dans Settings | Editor | General | Postfix Completion.
Passer l'expression dans une fonction libre
Utilisez la saisie semi-automatique du code postfix pour passer l'expression que vous venez de saisir comme premier argument d'une fonction libre. Saisissez une expression, puis un point et sélectionnez une fonction libre dans la liste de saisie semi-automatique qui s'affiche.
Améliorations pour les projets Makefile
Prise en charge initiale des projets Makefile distants
CLion 2021.1 vous permet de travailler avec des projets Makefile sur une machine distante. Changez la chaîne d'outils dans les paramètres Makefile pour désigner une chaîne distante, puis rechargez le projet. Il se synchronisera avec la machine distante. Compilez, exécutez et déboguez votre application à distance à partir de votre CLion local.
Plugin Makefile Language
Le plugin Makefile Language, qui était auparavant un service tiers, est désormais maintenu par l'équipe CLion et intégré à CLion. Le plugin fournit la mise en évidence de la syntaxe make, une documentation rapide, la fonctionnalité Find Usages pour les cibles et plusieurs actions de navigation et de saisie semi-automatique du code pour Makefile.
Améliorations pour les projets CMake
Partager des profils CMake dans un VCS
Les paramètres du profil CMake dans CLion sont maintenant stockés dans un fichier cmake.xml au sein du répertoire .idea et peuvent être partagés dans le VCS en même temps que le projet. Il vous suffit de sélectionner l'option Share dans Settings | Build, Execution, Deployment | CMake.
CLion 2021.1 intègre CMake 3.19. En plus des autres changements qu'elle introduit, il s'agit de la première version de CMake à prendre en charge la puce Apple Silicon (M1).
Les fonctionnalités de CMake 3.19 pour CUDA sont désormais prises en charge dans CLion, ce qui inclut la saisie semi-automatique pour quelques nouvelles variables CMake.
Améliorations pour les projets Qt
Intégration de Clazy
Clazy, un analyseur de code statique orienté Qt, est désormais intégré au moteur basé sur Clangd de CLion. CLion utilise actuellement la version 1.8. Les contrôles s'affichent dans l'éditeur et des correctifs rapides sont également disponibles.
Les utilisateurs peuvent configurer le degré de sévérité de CLion et le niveau des contrôles Clazy dans Settings | Editor | Inspections | C/C++ | General | Clazy.
Raccourcis clavier QtCreator
Pour celles et ceux qui sont habitué·es aux associations de touches dans QtCreator, CLion intègre maintenant les raccourcis clavier QtCreator. Vous pouvez choisir de les utiliser dans Settings ou via une action Quick Switch Scheme (Ctrl+`).
Débogueur
Set Execution Point dans le désassemblage
L'action Set Execution Point vous permet de passer directement à une ligne de code quelconque dans l'éditeur pendant une session de débogage et d'y définir le point d'exécution en ignorant toutes les autres commandes intermédiaires. Elle fonctionne désormais dans la vue de désassemblage, ce qui vous permet de déplacer le point d'exécution tout en parcourant progressivement le code d'assemblage.
Débogage des core dumps
Lors du débogage des core dumps dans CLion 2021.1, les utilisateurs peuvent désormais définir sysroot dans la configuration d'exécution correspondante. Cela aidera à localiser les symboles de la bibliothèque lors du débogage des core dumps à partir de binaires créés sur d'autres systèmes.
La définition explicite des fichiers de symboles lors du débogage d'un core dump pour un binaire non symbolisé avec LLDB fournit désormais également les informations nécessaires sur les symboles à CLion. Avec ce correctif, GDB et LLDB proposent maintenant les mêmes fonctionnalités pour le débogage Core Dump!
Terminal distant
Une nouvelle action Tools | Open Remote Host Terminal ouvre le répertoire du projet sur l'hôte distant, s'il existe. L'hôte distant correspond au profil distant actuellement sélectionné ou, si un profil local est sélectionné, au premier profil distant trouvé dans le projet.
Vue du projet
Les fichiers source situés en dehors de la racine du projet sont désormais regroupés sous le nœud External Sources dans l'arborescence du projet. Cela permet d'éviter l'encombrement de ces fichiers au niveau supérieur.
VCS
Profil pour les inspections avant commit
CLion peut inspecter votre code avant que vous effectuiez un commit, pour vous aider à contrôler l'absence de bugs. Choisissez un profil d'inspection du code avant de valider les modifications dans le VCS. Cliquez sur l'icône engrenage pour afficher les options de commit, cochez la case Analyze code, cliquez sur Choose profile, puis sélectionnez le profil souhaité.
Modèles de commit Git
Vous pouvez créer un modèle de message de commit personnalisé dans Git. CLion affichera alors ce texte comme message initial de commit.
Save to Shelf
Une nouvelle action Save to Shelf vous permet de copier vos modifications dans Shelf tout en les conservant dans les modifications locales. Vous pouvez accéder à cette action en appuyant sur Ctrl+Maj+A et en tapant « Save to Shelf ».
Mise à jour du plugin Rust
IntelliJ Rust fournit maintenant une vue structurée pour la sortie du build du compilateur. L'onglet s'ouvre automatiquement dans la fenêtre d'outils Build lorsque vous appelez une commande Cargo qui comprend une étape de build. Cette nouvelle fonctionnalité fonctionne avec les versions 1.48.0 ou ultérieures de Cargo.
Autre mise à jour importante : la nouvelle refactorisation Change Signature. Elle vous aide à modifier la signature d'une fonction/méthode, ce qui impactera toutes les références. Vous pouvez rapidement modifier le nom ou le type de retour d'une fonction, réorganiser ou ajouter/supprimer des paramètres et ajouter un préfixe async ou unsafe.
La refactorisation Rename fournit maintenant des suggestions de renommage pour des éléments comme les structs, les fonctions et les variables locales lorsque vous changez un nom dans l'éditeur.
La prise en charge de la compilation conditionnelle a été améliorée. Find Usages est désormais disponible pour les fonctionnalités Cargo et la saisie semi-automatique fonctionne pour l'argument feature dans les attributs cfg et cfg_attr. De plus, s’il y a des attributs imbriqués dans cfg_attr, le plugin en tient compte lors de la résolution de noms et de l'analyse de code.
Code With Me
Code With Me, un nouveau service de JetBrains pour le développement collaboratif et la programmation en binôme à distance, est désormais intégré à CLion.
Définissez le niveau d'accès requis pour votre projet et partagez le lien avec vos invité·es. Les personnes que vous invitez à collaborer n'ont même pas besoin d'avoir un IDE pour pouvoir travailler avec vous. Les appels audio et vidéo intégrés et la messagerie instantanée permettent aux équipes de discuter du code, de partager des connaissances et de coopérer plus efficacement.
Intégration de Space
Le plugin Space est maintenant disponible pour CLion. Vous pouvez vous connecter à votre organisation dans JetBrains Space via la commande Get from VCS située à droite sur l'écran de bienvenue. Une fois connecté·e, vous pouvez consulter et cloner les référentiels de projets, réviser le code des autres membres de votre équipe et écrire des scripts Space Automation.
Autres améliorations
- CLion appliquera désormais automatiquement le thème hypercontrasté dès son premier lancement si vous utilisez le mode hypercontrasté sous Windows ;
- avec les nouveaux paramètres de typographie, paramétrez précisément le poids de vos styles de police par défaut et de police grasse dans Settings | Editor | Fonts ;
- lorsque plusieurs onglets qui divisent l’éditeur verticalement sont ouverts, vous pouvez double-cliquer sur l’un d’entre eux pour agrandir la fenêtre de l’éditeur pour cet onglet spécifique. Pour ramener la fenêtre à sa taille initiale, il suffit de double-cliquer à nouveau sur celle-ci.
Télécharger CLion 2021.1
Source : JetBrains