Un verificador MISRA-C es mucho más que un verificador de estilo; hace cumplir un conjunto de pautas de desarrollo de software para el lenguaje de programación C desarrollado por MISRA (Motor Industry Software Reliability Association en el Reino Unido).
El objetivo de estas directrices es facilitar la seguridad, portabilidad y confiabilidad del código con respecto al uso de ISO C en sistemas integrados.
Ha habido tres versiones; MISRA-C 1998, 2004 y 2012. Este último es compatible con C99 y contiene 143 reglas y 16 directivas, cada una de las cuales se clasifica como obligatoria, obligatoria o de asesoramiento. Para que una pieza de firmware se declare compatible con MISRA-C, todas las reglas obligatorias deben cumplirse y todas las reglas y directivas requeridas deben cumplirse o documentarse como una desviación formal.
Las reglas son cosas como:
- Evite posibles compilaciones o diferencias de host, por ejemplo, el tamaño
de un entero C puede variar pero un INT16 siempre es de 16 bits.
- Evite usar funciones y construcciones que puedan fallar, por ejemplo, malloc puede fallar.
- Limite las prácticas potencialmente peligrosas, como los punteros no constantes.
a funciones.
- Produce código mantenible, por ejemplo, usando nombres
Convenciones y comentarios. (Esto sería parte del estilo al que se refiere el OP).
De alguna manera, se puede considerar que MISRA-C es un subconjunto seguro de C. Las pautas de MISRA-C no solo son aplicables al firmware de vehículos, sino que también se pueden usar en otras áreas críticas como la industria aeroespacial, nuclear y médica.
La verificación de cumplimiento de MISRA-C se realiza mediante una serie de herramientas de terceros independientes (como PC-Lint entre muchas otras) y compiladores (como Green Hills Software e IAR). Para realizar la verificación de cumplimiento de MISRA-C, tanto static como análisis de código dinámico debe realizarse. El último en particular es bastante complejo, y es probablemente la razón por la cual los programas con verificación de cumplimiento MISRA-C se aplican a un precio superior. También apela a un mercado bastante limitado, lo que también eleva el precio.
También hay un conjunto de reglas MISRA para C ++.