Dans la série, je suis un psychopathe mais je ne me soigne pas, j'ai mis en place sur la plateforme d'intégration continue du projet sur lequel je travaille une série de tests que mes collègues on qualifiés de "tests de psychopathe"... ils sont charmants :)
On peut les séparer en 2 grandes catégories :
On peut les séparer en 2 grandes catégories :
- les tests de psychopathe pouvant encore être soigné
- les tests de psychopathe fini
Dans la première catégorie, on y trouvera des tests que l'on pourrait qualifier de tests de "cohérence du code".
On y vérifie entre autres pour le langage C que les fichiers header d'API sont auto-suffisants, c'est à dire qu'ils ne nécessitent pas d'avoir à inclure 72 autres .h avant eux pour pouvoir les utiliser.
On vérifie également qu'il n'y a pas d'inclusion cycliques dans ces mêmes .h et qu'on ne vas pas chercher des .h ailleurs que là où ils sont censés être (pas d'inclusion bizarre en ../../../polop/toto.h, ne riez-pas ça s'est déjà vu... voire pire en d:/dev/mon_projet/ma_version/polop/toto.h --sic--).
D'autres concernent les déclarations de types d'énumération afin d'éviter de déclarer 2 fois les mêmes, ou 2 définitions différentes pour la même valeur.
Dans la deuxième catégorie on y trouve des tests beaucoup plus amusants :), qui vont cette fois vérifier la cohérence dans l'écriture du code, autrement dit, les conventions de codages.
Dans beaucoup de projets, au tout début on essaye tous d'ériger des règles de codages, auxquelles on se tiens les premiers jours, puis la lassitude vient (en général au bout de quelques jours pour les plus acharnés) et on oublie ces belles règles. Pour éviter cela, rien de mieux que de mettre en place une convention de codage automatique :).
La première règle de codage que j'ai mise en place portait sur l'indentation des fichiers. Développant en grande partie en python, où l'indentation est au coeur du langage puisqu'elle défini les blocs fonctionnels (déclaration de fonction, classe, bloc de condition...), il paraissait logique de fixer une règle et de ne pas en déroger, on indente avec des tabulations et uniquement avec des tabulations (tabulations à 4 ou à 8 espaces, chacun est libre du moment que ce ne sont que des tabulations qui terminent dans le fichier). A l'opposé pour le langage C, on indente uniquement avec des espaces (3 par niveau de tabulation) où même si l'indentation ne fait pas partie du langage, elle aide énoooooormément à la lisibilité du code, je vous rappelle au passage que le boulot d'un développeur est en majeure partie fait de relecture de code pour le corriger ou le modifier légèrement, faire en sorte que le code soit lisible peut faire une grande différence !
Là où le délire de psycopathe va un peu plus loin, c'est quand je teste qu'il ne reste pas d'espace en fin de ligne. Vous allez me dire, "mais pourquoi tant de haine ? Ca ne change rien d'avoir des espaces qui traînent".... et bien si justement, la preuve ici. Ahahah, non seulement c'est justifié, mais en plus ca prouve que je ne suis pas le seul psycopathe au monde :-D
M'enfin, le résultat de tous ces tests de codage, c'est que le code produit dans notre équipe est de manière générale plus homogène et plus "standard" selon nos normes, cela simplifie sans aucun doute l'intégration de nouveaux développeurs et si cela n'accélère pas le développement de nouvelle fonctionnalités, la maintenabilité du code est accrue.
On y vérifie entre autres pour le langage C que les fichiers header d'API sont auto-suffisants, c'est à dire qu'ils ne nécessitent pas d'avoir à inclure 72 autres .h avant eux pour pouvoir les utiliser.
On vérifie également qu'il n'y a pas d'inclusion cycliques dans ces mêmes .h et qu'on ne vas pas chercher des .h ailleurs que là où ils sont censés être (pas d'inclusion bizarre en ../../../polop/toto.h, ne riez-pas ça s'est déjà vu... voire pire en d:/dev/mon_projet/ma_version/polop/toto.h --sic--).
D'autres concernent les déclarations de types d'énumération afin d'éviter de déclarer 2 fois les mêmes, ou 2 définitions différentes pour la même valeur.
Dans la deuxième catégorie on y trouve des tests beaucoup plus amusants :), qui vont cette fois vérifier la cohérence dans l'écriture du code, autrement dit, les conventions de codages.
Dans beaucoup de projets, au tout début on essaye tous d'ériger des règles de codages, auxquelles on se tiens les premiers jours, puis la lassitude vient (en général au bout de quelques jours pour les plus acharnés) et on oublie ces belles règles. Pour éviter cela, rien de mieux que de mettre en place une convention de codage automatique :).
La première règle de codage que j'ai mise en place portait sur l'indentation des fichiers. Développant en grande partie en python, où l'indentation est au coeur du langage puisqu'elle défini les blocs fonctionnels (déclaration de fonction, classe, bloc de condition...), il paraissait logique de fixer une règle et de ne pas en déroger, on indente avec des tabulations et uniquement avec des tabulations (tabulations à 4 ou à 8 espaces, chacun est libre du moment que ce ne sont que des tabulations qui terminent dans le fichier). A l'opposé pour le langage C, on indente uniquement avec des espaces (3 par niveau de tabulation) où même si l'indentation ne fait pas partie du langage, elle aide énoooooormément à la lisibilité du code, je vous rappelle au passage que le boulot d'un développeur est en majeure partie fait de relecture de code pour le corriger ou le modifier légèrement, faire en sorte que le code soit lisible peut faire une grande différence !
Là où le délire de psycopathe va un peu plus loin, c'est quand je teste qu'il ne reste pas d'espace en fin de ligne. Vous allez me dire, "mais pourquoi tant de haine ? Ca ne change rien d'avoir des espaces qui traînent".... et bien si justement, la preuve ici. Ahahah, non seulement c'est justifié, mais en plus ca prouve que je ne suis pas le seul psycopathe au monde :-D
M'enfin, le résultat de tous ces tests de codage, c'est que le code produit dans notre équipe est de manière générale plus homogène et plus "standard" selon nos normes, cela simplifie sans aucun doute l'intégration de nouveaux développeurs et si cela n'accélère pas le développement de nouvelle fonctionnalités, la maintenabilité du code est accrue.