Temps de lecture : 5 minutes
Il peut être tentant de ne pas aimer les directives MISRA, ou toute autre norme de codage. La plupart des gens ne sont pas pressés de se faire dire comment faire les choses. Idéalement, tout le monde lit le document MISRA C et voit la flexibilité qu'il permet tout en vous empêchant d'utiliser les parties du langage qui sont ambiguës ou indéfinies. Mais nous avons d’autres tâches importantes à accomplir, c’est pourquoi nous nous concentrons sur les violations qui nous attendent et prenons rarement le temps de lire le livre.
Mais nous lisons toujours des blogs, n’est-ce pas ?
Ce premier concerne l’organisation des lignes directrices MISRA C.
Tout comme le langage C, tout n’est pas entièrement défini dans MISRA C. Les lignes directrices sont divisées en directives et règles. Les règles sont bien définies et la plupart sont vérifiables statiquement. Les directives ne sont pas aussi autonomes ; ils vous envoient dans la nature avec une idée et quelques recherches ou réflexions pour déterminer si le code est conforme. Les outils d'analyse statique peuvent vous aider à prendre la décision, mais le choix est laissé comme un exercice au lecteur.
Les lignes directrices sont en outre organisées en trois catégories :
- Mandatory,
- Required,
- Advisory.
Les lignes directrices consultatives permettent la plus grande flexibilité. En tant que catégorie, les avis concernent généralement les violations qui prêtent à confusion ou réduisent la portabilité. Ce sont toutes de bonnes pratiques à suivre, mais le groupe de travail qui les a rassemblées comprend qu'il y a des raisons de laisser une certaine marge de manœuvre. Les écarts sont faciles et ne nécessitent pas de procédure standard, mais il est recommandé qu'ils soient documentés pour plus de clarté (par exemple TBexclude ).
Vous pouvez également mettre à niveau ces règles vers obligatoires afin que les procédures formelles soient suivies par défaut, ce qui peut simplifier l'application et conduire à moins de questions dans le processus. Les équipes de projet ont la liberté de le faire si elles le souhaitent.
Les violations requises peuvent provoquer des erreurs et doivent être évitées dans la plupart des cas. Ils nécessitent un processus formel de déviation ; chacun doit être documenté, mais le processus exact dépend du projet ou de l'entreprise. Autoriser les écarts signifie qu'il est raisonnablement flexible, mais vous devez y être suffisamment attaché pour suivre le processus. Parfois, un concept ou une pratique particulière est suffisamment bien utilisé et compris pour qu’il y ait peu de risque à l’utiliser, même si cela représente une violation des lignes directrices. Les exceptions ou les écarts par rapport aux règles strictes permettent la flexibilité nécessaire pour s'adapter à de telles circonstances sans compromettre l'objectif consistant à rendre les choses aussi prévisibles et bien comprises que possible.
Les directives obligatoires ne laissent aucune marge de déviation. Vous êtes tenu de les suivre tels qu’écrits. Il n'y en a pas beaucoup et ils abordent les pratiques qui provoqueront des erreurs. La plupart d’entre eux sont conçus pour éviter les pièges dans lesquels peuvent tomber les développeurs s’ils ne sont pas conscients du risque. J’ai du mal à trouver un argument qui aurait du sens en faveur de tout écart par rapport à ces principes.
Bien qu'il n'y ait pas d'exception à chaque règle, elles offrent clairement suffisamment de polyvalence pour que les directives MISRA C soient devenues la norme de choix pour bien plus que l'industrie automobile. Les auteurs ont été pragmatiques quant à l'idée que chaque situation sera différente et que la capacité limitée de configurer les lignes directrices pour le projet établit un bon équilibre entre « faites ceci » et « faites ce que vous voulez ».
De plus en plus adopté par les entreprises du médical (dispositifs médicaux) qui souhaitent mettre en place d'une ligne directrice selon des règles et de comprendre les concepts a atténué la douleur du « Pourquoi dois-je résoudre ce problème ? » ainsi que la prévention de certaines violations, ce qui a accéléré le processus de conformité.