09 janvier 2024

Uncrustify & Universal Indent GUI


 

Comment utiliser le très performant, mais mal documenté, indenteur uncrustify avec le très vieux, mais toujours opérationnel, Universal Indent GUI ?

  • Uncrustify est un outil en ligne de commande pour formater des fichiers sources (C, C++, C#, Objective-C, D, Java ...). C’est un outil très flexible (plus de 800 options de formatage !) mais mal documenté. C’est sur ce dernier point qu’intervient Universal Indent GUI car, pour comprendre l’effet de chaque option, rien ne vaut un test grandeur nature sur de vrais fichiers source.
     
  • UniversalIndentGUI, UIGUI pour les intimes, est une interface graphique (écrite avec le framework Qt4) pour tester la configuration de pratiquement n’importe quel indenteur (d’où le nom Universal), ce qui inclut uncrustify. La dernière version date de janvier 2012 mais il fonctionne toujours sur Windows et Linux.

Nous ne parlerons ici que de l’utilisation du couple Uncrustify + UniversalIndentGUI sous Windows, mais le principe reste le même pour les autres OS et les autres indenteurs.

Comme ces deux outils n’ont pas de programme d’installation, et pour éviter les configurations compliquées, nous allons installer uncrustify dans l’arborescente de UniversalIndentGUI (UniversalIndentGUI est conçu pour cela). 

  • UniversalIndentGUI
  1. Télécharger le fichier UniversalIndentGUI_1.2.0_win32.zip depuis SourceForge et l’installer ou vous voulez.
  2. Le répertoire UniversalIndentGUI_win32/indenters ne contient que des vieilleries, renommez le et créez en un nouveau vide 
  • uncrustify
  1. Télécharger la derniere version de uncrustify depuis GitHub (début 2024 c’était uncrustify-0.78.1_f-win64.zip)
  2. Extraire seulement le fichier bin/uncrustify.exe dans le répertoire vide UniversalIndentGUI_win32/indenters
  3. Ouvrir une ligne de commande dans ce répertoire et exécuter :
    .\uncrustify.exe --universalindent > uigui_uncrustify.ini
    Ce fichier .ini (son nom est imposé) contient la description de toutes les options de mise en forme supportées par uncrustify. Ceci signifie que si on met à jour uncrustify il faut régénérer le fichier uigui_uncrustify.ini. Chaque [section] de ce fichier définit une option.

On peut maintenant exécuter UniversalIndentGUI.exe

Il va se plaindre de ne pas pouvoir vérifier si une mise à jour existe. Comme il n’y en en aura plus jamais on va dans Préférences > Préférences > Network et on décoche l’option « Rechercher si une nouvelle version est disponible ». 


Les options dans le panneau de gauche sont les options par défaut de uncrustify. Passer le curseur dessus pour obtenir une aide sommaire sur chaque option. 


Si vous avez déjà un fichier de configuration pour uncrustify vous pouvez le charger via le menu
  Indenteur > Charger un fichier de configuration d’indenteur.
Des exemples de configuration sont aussi dans le fichier zip de uncrustify :
  \share\doc\uncrustify\examples\*.cfg

CONSEILS :

  • UniversalIndentGUI.exe n’est plus maintenu et n’a pas de remplaçant. On n’est pas à l’abri d’un plantage avec perte de la configuration en cours. En conséquence, gardez la trace de vos modifications du fichier de configuration avec git ou en nommant chaque version de manière unique.
  • Habituellement on stocke le fichier uncrustify.cfg dans la racine de chaque projet, plutôt que dans un endroit commun à tous les projets mais inclus dans aucun projet.

 UPDATES:

- Beaucoup de plantages de  UniversalIndentGUI.exe


- Michele Calgaro a entrepris en 2022 de relancer UniversalIndentGUI avec son projet universal-indent-gui-tqt en utilisant TQt v3.x et non Qt5 ou Qt6 ! Michel (Michele en italien) participe aux tests et developpement de uncrustify et est un developpeur du projet Trinity Desktop Environment (TDE).