Jump to content
La fin ?! Elle est là ! ×
×
×
  • Create New...

Code Formatter: Artistic Style


Cassegrain
 Share

Recommended Posts

Centre de Téléchargement

Hidden Content

    Give reaction to this post to see the hidden content.
( Interne )

Bonjour,

 

C'est plutôt un partage de connaissances que je vous propose aujourd'hui en vous présentant un outil pour améliorer la lisibilité du code.

 

 

Cet outil c'est Artistic Style.

Un formatter / beautifier de code dont je n'ai trouvé aucun équivalent.

 

Le code source est disponible ici: http://astyle.sourceforge.net/

 

La documentation ici: http://astyle.sourceforge.net/astyle.html

 

 

 

Utilisation:

 

Vous pouvez l'utiliser sur différents supports, Freebsd, Windows, ou même Linux.

Un package déjà compilé est disponible en plus de la source complète que vous pourrez compiler par vous même après l'avoir adapté à vos besoins si vous le souhaitez.

 

 

 

 - 1: Windows: il faudra se servir d'un fichier batch pour lancer l'exécution.

 

exemple.bat:

 

AStyle.exe --style=allman test.cpp test.h
pause
 

 

 

Cette ligne de commande mettra les fichiers test.cpp et test.h du répertoire courant à la norme allman.

La deuxième ligne "pause" permet de laisser la fenêtre de commande ouverte une fois l'exécution terminée.

 

 

 - 2: Freebsd / Linux: Il faudra se servir d'un fichier shell.

 

exemple.sh:

#!/bin/sh
astyle --style=allman test.cpp test.h
 

 

Cette commande donnera le même résultat que celle pour windows.

La première ligne est un shebang, qui permet au système de savoir avec quel exécutable le script doit s'exécuter.

 

 

 

Les arguements:

 

 

Comme vous pouvez le voir sur la documentation, il existe beaucoup d'arguments qui ont chacun leur spécificités.

Changer le type d'indentation, changer la position des accolades, aligner les définitions de variables ou de fonctions et d'autres.

 

Mais le mieux pour ça, c'est d'essayer par vous même pour que vous trouviez la combinaison qui vous correspond afin d'éclaircir votre code et d'optimiser votre travail.

 

 

Je vais jsute faire un petit point sur la récursivité que propose le logiciel sur le traitement des fichiers, qui permet de modifier un dossier complet, par type de fichier.

 

Exemple.bat:

AStyle.exe --style=allman --recursive E:\work\src\*.cpp
AStyle.exe --style=java --recursive E:\work\include\*.h
pause
 

 

Exemple.sh:

#!/bin/sh
astyle --style=allman --recursive '/work/src/*.cpp'
astyle --style=java --recursive '/work/include/*.h'
 

 

 

Ces lignes de commandes permettent de:

  1. Mettre tous les fichiers .cpp à la norme allman dans les chemins indiqués.
  2. Mettre tous les fichiers .h à la norme java dans les chemins indiqués.

 

 

Recommandations:

 

Pour les codes source C / C++ voici les arguments que je recommande:

--style=allman --indent=force-tab --indent-namespaces --indent-switches --indent-modifiers --indent-classes --indent-preproc-block --pad-oper --remove-brackets --break-after-logical
 

 

Pour les fichiers headers (moins de saut de ligne et meilleur lisibilité pour les fonctions sans déclaration):

--style=java --indent=force-tab --indent-namespaces --indent-switches --indent-modifiers --indent-classes --indent-preproc-block --pad-oper --remove-brackets --break-after-logical
 

 

Attention, lorsqu'un fichier est modifié par le logiciel, une copie avant modification est créée et l'extension '.orig' (par défaut) y est ajoutée.

Pour éviter de devoir tout trier sur un gros projet, il est préférable de faire une sauvegarde au préalable et d'ajouter l'argument suivant qui désactivera la sauvegarde faite par le logiciel:

--suffix=none
 

N'oubliez pas que la documentation est toujours très utile et qu'il y a beaucoup de fonctionnalités utiles à exploiter !

Bon code !

  • Funky Emulation 1
Link to comment
Share on other sites

 Share



Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.