Tout ce que vous avez longtemps demandé en une seule version - CLion 2018.2

Bonjour, Habr!

Nous ne savons pas à quel point il fait chaud en dehors de votre fenêtre, mais ces semaines chez JetBrains, nous avons sûrement une version à chaud. Un par un, nous avons publié des versions mises à jour de 2018.2 pour presque tous nos outils basés sur la plateforme IntelliJ: WebStorm, IntelliJ IDEA, PyCharm, DataGrip, GoLand, PhpStorm, RubyMine et CLion.

Cette version est spéciale pour l'équipe CLion, car elle inclut les résultats de notre travail dans trois domaines très importants:

  1. Clangd comme base d'un nouveau moteur expérimental pour analyser le code C ++.
  2. Améliorations des performances IDE grâce à de nouvelles solutions architecturales.
  3. Nouveaux modèles de conception pris en charge par CLion.

En plus de la prise en charge de Google Sanitizers, la possibilité de reconstruire un seul fichier et bien plus encore!

image

Ci-dessous, nous parlerons des améliorations et des innovations en détail, et les plus impatients peuvent dès maintenant télécharger la version gratuite de 30 jours à partir de notre site Web et essayer de nouvelles opportunités sur leur projet ou un projet de démonstration spécialement préparé avec GitHub .

Clangd pour analyser le code C ++ dans CLion


En mars dernier, nous vous avions annoncé que nous envisagions différentes alternatives pour le moteur de langage CLion. Cela est compréhensible - je veux améliorer fondamentalement la prise en charge des fonctionnalités du langage actuel, et ajouter plus de puces C ++ plus rapidement, et écrire des refactorisations plus cool et spécifiques à C ++, etc. Pour tout cela, vous avez besoin d'un analyseur de code précis et rapide.

Nous continuons d'améliorer notre analyseur actuel en gravant méthodiquement une variété d'erreurs et de lacunes. De plus, nous avons décidé d'essayer de faire un autre moteur de langage basé sur clangd (c'est une telle implémentation du protocole LSP pour clang).

Si vous allez directement aux résultats, dans CLion 2018.2, en plus du moteur de langage principal, un nouveau moteur expérimental fonctionne sur clangd. Non seulement cela, nous étions si audacieux que nous l'avons activé par défaut sous Linux et macOS. Sur Windows, malheureusement, une caractéristique désagréable du travail de Clangd avec la mémoire a été découverte, et par défaut, nous avons désactivé le nouveau moteur sur cette plate-forme (mais avec une forte probabilité, cela sera déjà corrigé dans les premières mises à jour mineures de la version 2018.2).
Vous pouvez activer / désactiver l'analyseur expérimental du code basé sur clangd dans Paramètres / Préférences | Langues et cadres | C / C ++ | Clangd:

image

Il est important de comprendre:

  • L'analyseur de code basé sur clangd fonctionne en parallèle avec l'analyseur natif CLion.
  • Clangd est utilisé uniquement pour afficher les erreurs et les avertissements dans l'éditeur. Pour tout le reste (y compris le refactoring, les corrections de bugs (correctifs rapides), la navigation, l'auto-complétion, etc.), son propre analyseur CLion est utilisé.
  • La configuration par défaut des erreurs et avertissements de Clang est spécialement sélectionnée pour afficher un grand nombre d'avertissements sur les erreurs potentielles, mais en même temps pour ne pas contredire les inspections de code qui fonctionnent dans CLion sur la base de leur propre analyseur de code et sont activées par défaut.

Attention à vos questions, je dirai tout de suite que oui, nous prévoyons d'essayer de traduire d'autres fonctionnalités IDE intelligentes en clangd, mais nous devons d'abord stabiliser la solution actuelle, effectuer de nombreux tests supplémentaires et résoudre de nombreux problèmes complexes et fondamentaux en cours de route.

Nouvelle vérification du code C ++


Lorsqu'une fonction accepte plusieurs paramètres du même type, il est facile de commettre une erreur et imperceptiblement pour vous (et le compilateur) d'échanger les arguments du même type lors de l'appel de cette fonction. De telles erreurs sont difficiles à détecter, ce qui signifie que leur coût est élevé. Mais dans CLion 2018.2, nous avons mis en place un nouveau code d'inspection spécifiquement pour de tels cas. Il utilise un algorithme heuristique pour analyser les noms de paramètres et les arguments de fonction et est capable de détecter des situations lorsque l'ordre des arguments est modifié par erreur:

image

Important:

  • Pour éviter les faux positifs, l'algorithme est désactivé automatiquement pour les noms très courts (moins de 3 caractères).
  • Pour les mêmes raisons, l'algorithme est désactivé pour les fonctions dont les noms contiennent les sous-chaînes swap / inverse / rotation / arrière / flip.
  • Pour un certain nombre de raisons techniques, l'inspection ne fonctionne que lorsque l'analyseur expérimental pour le code clangd est activé et également uniquement lorsque l'analyseur de code clang-tidy est activé via clangd (tout cela dans les paramètres des paramètres / préférences ci-dessus Paramètres / Préférences | Langues et cadres | C / C ++ | Clangd).

Performance IDE


Dans cette version, nous avons délibérément tourmenté les suspensions IDE (gel de l'interface utilisateur) dans un certain nombre de cas: lors de l'achèvement, dans la recherche Search Everywhere, lors de la navigation vers un caractère associé (qui est généralement utilisé pour basculer entre le fichier source et l'en-tête et vice versa), lors de l'utilisation de fil d'Ariane (chapelure) pour la navigation. Les premiers utilisateurs de la version, ainsi que de nombreux participants à notre programme d'accès anticipé, ont déjà évalué les améliorations et confirment que le comportement de l'IDE s'est considérablement amélioré et qu'il y a eu beaucoup moins de blocages. Les travaux dans ce sens se poursuivront en 2018.3.

De plus, nous avons traduit le formateur de code intégré dans le lexer . Bien sûr, lorsque vous travaillez sur l'analyseur (comme précédemment), son résultat est plus précis, mais le temps de fonctionnement est considérablement augmenté. Et puisque le formatage du code dans CLion se produit au moment où vous tapez le code, le blocage ici peut affecter très négativement l'impression globale de la vitesse de l'IDE. La réactivité de l'éditeur diminue, les suspensions deviennent visibles, etc.

Le formateur sur le lexer fonctionne assez bien, mais si vous rencontrez toujours des problèmes avec le formatage de votre code, alors premièrement, assurez-vous de nous en parler , et deuxièmement, vous pouvez toujours passer à un formateur plus lent mais plus précis sur analyseur - pour cela, il existe une option cidr.indent.lexer.only.cpp dans le Registre.

Nouveaux modèles de conception: Gradle C ++ et base de données de compilation


Jusqu'en 2018.2, il y avait les façons suivantes d'ouvrir un projet dans CLion:

  • Ouvrez le projet CMake.
  • Ouvrez un fichier ou un dossier entier qui ne contient pas de fichiers CMake. Dans le même temps, de nombreuses fonctions intelligentes pour travailler avec le code seront désactivées.
  • Pour le code Rust, en utilisant le plugin Rust dans CLion, vous pouvez utiliser Cargo.
  • Utilisez un plugin tiers pour CLion pour ouvrir un projet sur Bazel.

En 2018.2, nous avons ajouté deux nouvelles options à cette liste:

  • Ouvrez le projet sur Gradle, en indiquant l'emplacement IDE du fichier build.gradle . Veuillez noter que CLion ne prend désormais en charge que le nouveau format Gradle pour les projets C ++:
    image
  • Ouvrez le projet à partir de la base de données de compilation en spécifiant l'emplacement IDE du fichier compile_commands.json . Jusqu'à présent, dans ce cas, l'assemblage et le lancement du projet à partir de CLion ne sont pas possibles, car la base de données de compilation ne contient pas d'informations sur l'assemblage de l'ensemble du projet.

Mais dans les deux cas, Gradle et la base de données de compilation, toutes les fonctions intelligentes pour travailler avec du code sont disponibles! Et au fait, l'option de base de données de compilation est intéressante en ce sens que, quel que soit votre projet - Makefiles, Ninja, Qbs, n'importe lequel de vos modèles de projet spécifiques - vous pouvez générer une base de données de compilation pour votre projet et l'ouvrir dans CLion!

Pendant ce temps, nous continuons à travailler sur l'API pour ajouter la prise en charge de nouveaux modèles de conception dans CLion!

Améliorations de CMake


Certaines améliorations importantes ont été apportées aux projets CMake. La chose la plus importante est que si vos fichiers d'en-tête situés dans le répertoire de votre projet sont utilisés dans les fichiers de projet et connectés via la directive #include , vous n'avez plus besoin de les lister explicitement dans les scripts CMake ! CLion les marquera désormais comme celles de conception, et toutes les fonctions intelligentes comme la refactorisation et la saisie semi-automatique seront disponibles dans ces fichiers:

image

La deuxième amélioration importante concerne la configuration des outils externes (outils externes), qui peuvent ensuite être appelés soit par commande, soit dans le cadre des configurations de lancement d'application. Des macros contenant toutes sortes de variables CMake y sont désormais disponibles. Par exemple, le répertoire d'assembly ou le nom du fichier exécutable:

image

Outils d'analyse de code dynamique


Pour Valgrind Memcheck, pris en charge dans CLion depuis la version 2017.3, il est devenu possible d'exporter puis de réimporter les résultats d'analyse:

image

Également dans cette version, CLion a introduit la prise en charge d'un autre outil pour l'analyse dynamique de code - Google Sanitizers . Pour les activer, vous devez explicitement spécifier le -fsanitize spécial dans les scripts CMake de votre projet, puis, si vous utilisez la version Clang au moins 3.8.0 ou la version GCC au moins 5.0.0, CLion sera en mesure de détecter automatiquement l'utilisation de désinfectants et d'afficher les résultats de leur travail dans fenêtre spéciale:

image

Vous pouvez y voir non seulement la liste des erreurs trouvées, mais aussi le code source (et y accéder), étudier les informations sur le cadre, regarder le chemin des erreurs. En savoir plus sur les désinfectants et les paramètres pris en charge dans CLion dans notre article de blog en anglais.

Réassemblage d'un seul fichier


Pour les modèles de projet CMake et la base de données de compilation dans CLion 2018.2, il est possible de reconstruire un fichier sans provoquer la reconstruction de l'ensemble du projet. Pour ce faire, il existe une action dans le menu Exécuter - Recompiler, ou vous pouvez utiliser la combinaison de touches Maj + Ctrl + F9 sous Linux / Windows, ⇧⌘F9 sous macOS (dans les dispositions par défaut):

image

Cette fonctionnalité est un excellent moyen de vérifier rapidement que vos modifications actuelles dans le fichier n'ont pas interrompu l'assemblage de l'ensemble du projet. Si les détails sont intéressants, quel type de commande de compilation est appelée et comment le type d'assemblage est sélectionné, vous pouvez lire en détail dans notre blog .

Bases de données


Selon les résultats de notre enquête sur Twitter , de nombreux utilisateurs de CLion se tournent vers diverses bases de données lors du développement d'un projet en C / C ++. Par conséquent, à partir de cette version, un plugin pour travailler avec les bases de données et le code SQL a été inclus dans notre IDE. Il s'agit d'un analogue fonctionnel complet de notre environnement de base de données - DataGrip . Donc, cet article ici sur Habr de moscas sur les innovations de DataGrip 2018.2 peut également vous intéresser.

Et ce n’est pas tout!


En bref sur d'autres améliorations:


La vidéo traditionnelle sur les nouvelles fonctionnalités de CLion 2018.2 en anglais de notre avocat développeur:


Et en passant, jusqu'au mercredi 1er août 2018, 19 h 05, heure de Moscou (GMT + 3), nous accordons une remise de 50% sur tous les produits JetBrains Toolbox .

Des questions? Nous serons heureux de répondre dans les commentaires!

Votre équipe JetBrains CLion
La volonté de se développer

Source: https://habr.com/ru/post/fr418729/


All Articles