Après quelques recherches pour arriver à lancer l'éditeur d'Unreal sous Linux, j'ai eu l'occasion de jouer un peu avec Clion.

À la question : est-ce que Clion arrive à tenir de très gros projets, la question... reste un peu en suspens.

En effet, le chargement du projet et l'analyse des symboles se passe à peu près bien, au détail près que Clion ne détecte pas les fichiers comme étant « actifs ». Ils sont grisés. Probablement que le CMakefile d'Unreal n'utilise pas les mêmes variables auxquelles s'attend Clion.

C'est d'ailleurs étrange : les fichiers sont grisés, les includes ne sont pas trouvés et l'analyse statique ne fonctionne donc pas... Mais le parsing des symboles a été fait et on peut sauter directement vers un symbole donné.

CLion-UnrealProjectGray.png

Petite configuration à faire aussi pour un gros projet au niveau d'inotify. En effet, Clion demande une modification dans les limites des fichiers pouvant être surveillés en même temps. S'il atteint la limite, il utilise un système de parsing des répertoires manuels et averti alors de la manipulation à effectuer pour augmenter la limite (ça prend 30 secondes et se fait à chaud).

Comme je n'ai pas spécialement envie de voir comment rendre la configuration d'Unreal lisible complètement par Clion, je vais plutôt essayer les autres fonctionnalités de Clion sur un plus petit projet. Je passe aussi sur les fonctions de base d'un IDE, comme un find in files. Tout est là, pas de soucis. Et ça répond bien.

CLion-FindInFiles.png

J'ai donc crée un petit projet autour de SDL2 pour voir les outils offerts par Clion. Il y a beaucoup de choses : formatage de code, générations de méthodes inexistantes ou implémentation de virtuelles, navigation aisée, intégration de gestion de version (Git, Subversion, Mercuria, CVS)... Contrairement à d'autres gros IDE, j'ai tout de même l'impression que 90% des fonctions présentées me seront utiles.

Il est même possible d'intégrer son gestionnaire de tâches.

ClionIntegrationTasks.png

Et au cas où, même si je n'ai pas testé cette fonctionnalité, l'IDE s'étend par scripts (en Javascript).

L'IDE n'est pas très aidant sur la configuration du projet lui-même, puisqu'il se base sur CMake. Il offre cependant la possibilité de passer des options de configuration à CMake et d'analyser le cache de configuration du programme. Cela peut aider lors de la mise en place d'une configuration, ou bien pour se souvenir du nom d'une variable de CMake en particulier.

Le Debug

Pour le debug, Clion se repose sur gdb auquel il ajoute une interface graphique. Il est toujours possible d'accéder à la session gdb dans un onglet. Aide aux opérations simples et permission d'aller utiliser un outil en profondeur pour les plus avancés, c'est pour moi la bonne chose à faire pour une interface graphique.

ClionDebug.png

Les Breakpoints/Watchpoint, watches, callstacks,... tout ça est disponible en mode IDE. Je n'ai pas trouvé d'accès à la mémoire brut par contre. Comme pour beaucoup d'IDE, montrer le contenu de la mémoire semble quelque chose d'accessoire. Ça me semble toujours bizarre.

Il y a cependant deux outils qui l'un dump la mémoire et l'autre fait une capture de performance. A priori, ces dumps sont à ouvrir avec des programmes externes. Je n'ai pas poussé dans cette direction. L'offre d'analyse dans le monde Linux étant déjà assez fournie, je pense que Clion ou un plugin fera la liaison avec ces outils.

Au final

  • Est-ce que le programme est toujours maintenu

Oui. La version officielle n'est pas encore sortie. Cependant, le build qui est sorti aujourd'hui même n'est plus nommée EAP (Early Access Program).

  • Y a t'il un support des C++ récents

Les quelques essais que j'ai fait au niveau de l'analyse statique réagissent bien pour des constructions C++14. Au niveau de la compilation, il faut configurer son projet pour cela, c'est du côté de CMake que ça se passe. En tout cas, Clion n'est pas dans le chemin.

  • Est-ce qu'il y a une intégration native de framework de tests unitaires

Non. On peut toujours configurer CMake pour générer des suites de tests, mais Clion ne fait rien pour présenter les résultats de manière sympathique, ou pour lancer des suites de tests sélectionnées.

  • L'IDE a-t-il un mode de debug et avec quels fonctionnalités

Oui, cf. au-dessus.

  • Quelles sont les capacités de navigation dans le code

Elles sont très bonnes, variées et efficaces.

  • Le prix ? Est-ce Open Source ?

Générallement, les IDE de JetBrains ont plusieurs styles de licences, entre 100$ et 200$, une version communautaire allégée et une version gratuite pour l'enseignement et les projets Open Source actifs (sur dossier).

  • Les dépendances, la facilité d'installation

Clion vient avec son JDK (puisqu'il est écrit en Java) son CMake par défaut si celui du système n'est pas le bon ou est inexistant. Reste à avoir un compilation (gcc ou clang) et un debuggeur (gdb) installé. Ça s'installe en décompressant un .zip. Clion propose ensuite l'intégration dans le système dans le menu Tools. C'est simple rapide et efficace.

  • Les supports de Build System (uniquement interne, autotools, cmake,...)

Clion est entièrement basé sur CMake. Il peut importer des Projets externes, mais je n'ai pas regardé ce que cela donnait.

Conclusion

Clion est qualifié pour la question originale d'un IDE pratique, sous Linux, capable d'encaisser un très gros projet.