En el mundo del desarrollo de software, MISRA-compliant C significa que un código escrito en lenguaje C cumple estrictamente con un conjunto de directrices y reglas de codificación diseñadas para garantizar la máxima seguri dad, portabilidad y fiabilidad.

MISRA no es una versión diferente de C (como C99 o C11), sino un “manual de estilo ultraestricto” que se aplica sobre el estándar de C.

Aquí te detallo qué lo hace tan especial:

¿De dónde viene y dónde se usa?

Las siglas significan Motor Industry Software Reliability Association. Originalmente nació en los años 90 para el software de los coches (frenos ABS, control de motor, airbags), donde un error de software puede costar vidas.

Hoy en día se ha convertido en el estándar de oro en cualquier industria crítica:

Automoción.

Dispositivos médicos (marcapasos, respiradores).

Aeroespacial y defensa.

Sistemas ferroviarios y plantas nucleares.

¿Por qué existe? (El problema con el lenguaje C)

El lenguaje C es rápido y eficiente, pero es famoso por darte “suficiente cuerda como para colgarte solo”. Permite cosas peligrosas como punteros que apuntan a cualquier parte, desbordamientos de memoria o comportamientos que cambian según el compilador que uses.

MISRA C lo que hace es prohibir las características más peligrosas, ambiguas y propensas a errores del lenguaje C.

Ejemplos de reglas típicas de MISRA C

MISRA tiene más de 140 reglas (dependiendo de la versión, como MISRA C:2012 o MISRA C:2023). Se dividen en Mandatory (obligatorias), Required (requeridas) y Advisory (recomendadas).

Algunos ejemplos de lo que prohíbe o exige:

No al uso de memoria dinámica (malloc y free): Está prohibido en sistemas críticos porque puede causar fragmentación de memoria o fugas (memory leaks) que congelen el sistema tras horas de uso.

Prohibido el uso de goto: Evita el código espagueti.

Tipado estricto: No puedes mezclar tipos de datos a la ligera. Por ejemplo, intentar sumar un int con un float de forma implícita está penalizado; debes hacer un cast explícito para demostrar que sabes exactamente lo que estás haciendo.

Inicialización obligatoria: Toda variable debe tener un valor asignado antes de ser leída.

No a las funciones recursivas: Una función no puede llamarse a sí misma, ya que esto podría desbordar la pila (stack overflow) de forma impredecible.

¿Cómo se comprueba que un código es MISRA-compliant?

Nadie revisa esto a mano línea por línea. Se utilizan herramientas de Análisis Estático de Código (como LDRA, Polyspace, Klocwork o PC-lint).

Estas herramientas escanean tu código fuente antes de compilarlo y, si violas alguna regla, hacen saltar una alarma idéntica a un error de compilación. Para que el proyecto sea “MISRA-compliant”, el reporte de la herramienta debe salir con cero violaciones (o con “desviaciones” formalmente justificadas y documentadas por el equipo de ingeniería).

¿Estás investigando esto porque planeas certificar algún proyecto de sistemas embebidos, o por curiosidad sobre buenas prácticas?

Extension update available: v1.0.20 → v1.0.21 Download: https://github.com/jackwener/opencli/releases

💬 El manual oficial de MISRA C es un documento sujeto a derechos de autor y la organización oficial lo distribuye exclusivamente bajo licencias de pago a través de su tienda web. No existe un enlace de descarga gratuita total mente legal para el documento completo, aunque existen alternativas de consulta pública.

Fuentes Oficiales y de Consulta

Tienda Oficial de MISRA: Puedes adquirir las copias digitales autorizadas directamente en el sitio web oficial de MISRA. Los precios de los manuales en formato PDF (no imprimible) comienzan desde las £15.

Referencia Gratuita de Reglas (MathWorks): Si necesitas consultar el listado y la descripción técnica de cada una de las directrices y reglas sin comprar el libro completo, puedes utilizar de forma gratuita la Guía de Referencia de MISRA C:2012 de MathWorks, la cual contiene el desglose de cada regla para configurar analizadores estáticos.

Documentación de Permisos Oficial: MISRA publica de forma abierta algunos complementos técnicos oficiales. Un ejemplo es el PDF de MISRA C:2012 Permits, de acceso libre en su servidor, útil para comprender cómo documentar las desviaciones obligatorias de las reglas.