CPPCheck, le premier outil gratuit pour vérifier MISRA


MISRA C

MISRA LOGOLa norme de programmation MISRA a été définie par un consortium d’industriels autour de l’automobile. L’objectif étant d’écrire les logiciels gérant les fonctions d’un véhicule (allumage, freinage, régulateur …) de la manière la plus fiable possible. Cette norme ne concerne pas que l’automobile mais s’applique à tout type de projet. Il en existe deux moutures suivant le langage visé (C ou C++).

MISRA est populaire dans le monde des développeurs car outre la clarté des explications associées, cette norme de codage est relativement accessible, il est possible de se la procurer en ligne en version PDF pour une vingtaine d’euros sur le site du consortium.

Décider d’utiliser MISRA est une bonne idée, mais comment vérifier son application effective par les développeurs ? Là aussi, bonne surprise, la norme a été pensée pour rendre la plupart de ses directives décidables, c’est à dire vérifiable par analyse automatique.

Jusqu’à une certaine date toutefois il n’existait aucun analyseur gratuit, mais ce n’est plus le cas aujourd’hui.

Cppcheck et MISRA

Cppcheck (téléchargeable ici) est le vérificateur de code C/C++ gratuit et open source le plus populaire sur Internet. Il dispose d’une grande communauté de développeurs et de nouvelles versions toujours plus riches sortent plusieurs fois par an. Cet outil est conçu pour éviter au maximum la remontée de faux positifs, ce qui le rend intégrable à une chaine d’intégration continue.

Nativement Cppcheck ne dispose pas de vérificateur MISRA, c’est par l’intermédiaire de ses plug-ins encore appelés « Add-ons » qu’il dispose maintenant de cette fonctionnalité. L’option « dump » de CppCheck lui permet de sortir le résultat du parsing du ficher C / C++ sous format XML, et c’est cette forme intermédiaire qui est utilisée par ses plug-ins.

 

Concernant MISRA le plug-in en question est téléchargeable sur Github sous forme de script au format python.

Pour l’utiliser il suffit sous Linux de lancer cppcheck comme suit :

$ cppecheck –dump <mon_fichier.c> | misra.py

 

Le fonctionnement est résumé par la figure suivante :

CPPcheck MISRA

 

Nous vous souhaitons des développements toujours plus fiables !

 

Laurent Meyer.

 

Sur le même sujet, lire notre article : CPPCHECK, faire l’inventaire et leurs tailles