MISRA C est une norme de programmation en langage C créée en 1998 par la Motor Industry Software Reliability Association (en) (MISRA). Elle spécifie les règles de programmation pour plus de sûreté. L’objectif est d’éviter des erreurs d’exécution provoquées par une construction de C incertaine, des faiblesses de structure du fait de malentendus entre les programmeurs, et de garantir la validité des expressions. La plupart de ces règles peuvent être automatiquement vérifiées ou prises en considération lors de la génération du code.

La troisième et dernière version, sortie le , est nommée MISRA C:2012. Elle intègre les nouveautés du C99 (ISO 9899:1999). Mais elle assure aussi la compatibilité avec les précédentes versions. Les nouvelles règles apportent une plus grande flexibilité par rapport aux précédentes, évitant un conflit entre la performance et la productivité des développeurs. Elle n'interdit pas l’utilisation de certains modes de codage, mais apporte des restrictions de leur usage.

Plusieurs règles de codage sont basées sur le MISRA, comme JPL C et JSF++ de Lockheed Martin.

MISRA C est devenu un standard de fait lorsque la sécurité du code est importante. Le MISRA est utilisé par de nombreuses universités et entreprises dans le monde (Bosch (entreprise), Delphi Technologies, Ford Motor Company Ltd, Jaguar Land Rover, Protean Electric Ltd, Ricardo plc, TRW Automotive Electronics, The University of Leeds, Valeoetc.).

L'association MISRA a aussi publié des règles pour le C++ et le code généré automatiquement, ainsi que de nombreux autres documents.

Les MISRA C et C++ sont en grande partie vérifiables par des outils d'analyse statique comme QAC et QAC++, Klocwork, PRQA, PolySpace, SonarQube… Chaque outil ayant une plus ou moins bonne couverture ainsi qu'un nombre de faux positifs plus ou moins important.

Liens externes modifier