Un style cohérent pour votre projet en C

Lorsque plusieurs étudiants collaborent à l’écriture d’un programme en C, ils utilisent souvent des conventions différentes pour placer les accolades, documenter les fonctions, un nombre variable d’espaces pour les tabulations, … La lecture du code source peut parfois même devenir difficile si les étudiants n’utilisent aucune convention.

Les grands projets open-source ont défini des conventions strictes pour l’écriture du code source, allant même à avoir des logiciels spécialisés pour valider le respect de leurs propres conventions. Les conventions de codage sont comme les goûts et les couleurs, elles ne se discutent pas. Par contre, il est important d’utiliser la même convention dans tout le code source d’un même projet.

Heureusement, il existe des logiciels qui permettent de reformater du code source de façon à ce que celui-ci respecte une convention donnée. clang-format est un de ces logiciels qui est bien adapté au code source en C.

Il s’installe facilement sur Linux et s’utilise en ligne de commande. A titre d’exemple, prenons le code source suivant:

#include <stdio.h>

int main(int arg, char **argv)
{
  printf("Start \n");
      int i=3;
  while(1) { i+=i;  }
  printf("End \n");
               }

Utilisé sans aucun argument, clang-format retourne sur la sortie standard une version “propre” du code source se trouvant dans le fichier passé en argument.

# clang-format /tmp/test.c
#include <stdio.h>

int main(int arg, char **argv) {
  printf("Start \n");
  int i = 3;
  while (1) {
    i += i;
  }
  printf("End \n");
}

clang-format supporte différents style de code source:

  • llvm pour le style utilisé par le compilateur clang
  • chromium pour le style utilisé pour le code source du navigateur chrome
  • mozilla pour le style de la fondation mozilla

Ces styles sont prédéfinis dans clang-format. Il est aussi possible de les adapter pour obtenir le style que vous préférez.

clang-format -style=mozilla -dump-config > .clang-format

Le fichier .clang-format contient toutes les règles du style mozilla. C’est un fichier texte qui peut être modifié si nécessaire. Vous trouverez des définitions de style dans de nombreux projets open-source, comme par exemple celui utilisé par le noyau Linux.

En plaçant ce fichier de style à la racine de votre projet, vous pouvez demander à clang-format de reformater tous vos fichiers .c et .h avec la commande suivante :

# find . -regex '.*\.\(c\|h\)' -exec clang-format -style=file -i {} \;
Ecrit le April 7, 2020