¿Cómo es que Misra C checker es una herramienta tan prestigiosa? [cerrado]

Los compiladores profesionales como IAR Embedded Workbench ofrecen comprobadores Misra C solo en sus versiones premium. ¿No es el verificador Misra C un verificador de estilo en elementos como sangría, nombres de variables? ¿Por qué parece ser tan buscado?

Presumiblemente porque MISRA C es un estándar de pago, por lo que las personas que integran esta verificación probablemente tendrán que pagar una tarifa de licencia.
si trabaja en software automotriz, la compatibilidad con MISRA es imprescindible
@TomCarpenter No existe tal tarifa. Desafortunadamente, cualquier vagabundo puede hacer su propio verificador MISRA-C. Desearía que existiera algo así como una certificación de herramientas, porque el 95 % de todas las verificadoras MISRA en el mercado tienen errores increíbles.

Respuestas (3)

Un corrector MISRA-C es mucho más que un simple corrector 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).

Estas pautas están destinadas a 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, requerida o consultiva. Para que una pieza de firmware afirme ser compatible con MISRA-C, se deben cumplir todas las reglas obligatorias y todas las reglas y directivas requeridas deben cumplirse o documentarse como una desviación formal.

Las reglas son cosas como:

  • Evite posibles diferencias de compilador o host, por ejemplo, el tamaño de un entero C puede variar, pero un INT16 siempre tiene 16 bits.
  • Evite usar funciones y construcciones que sean propensas a fallar, por ejemplo, malloc puede fallar.
  • Limite las prácticas potencialmente peligrosas, como los punteros no constantes a las funciones.
  • Produzca código mantenible, por ejemplo, usando convenciones de nomenclatura y comentarios. (Esto sería parte del estilo al que se refiere el OP).

De alguna manera, MISRA-C se puede considerar como un subconjunto seguro de C. Las pautas de MISRA-C no solo se aplican al firmware de vehículos, sino también al firmware en otras áreas de misión crítica como la aeroespacial, nuclear y médica.

La verificación del cumplimiento de MISRA-C se realiza mediante una serie de herramientas independientes de terceros (como PC-Lint, entre muchas otras) y compiladores (como Green Hills Software e IAR). Para realizar la verificación de cumplimiento de MISRA-C, se debe realizar un análisis de código tanto estático como dinámico . Este último en particular es bastante complejo, y es probablemente la razón por la cual los programas con verificación de cumplimiento de MISRA-C tienen un precio superior. También atrae a un mercado bastante limitado, lo que también eleva el precio.

También hay un conjunto de reglas MISRA para C++.

Para responder a la pregunta de manera más directa, a menudo se requiere el cumplimiento de MISRA si está escribiendo software para aplicaciones críticas para la seguridad como Automotive. Si está escribiendo software crítico para la seguridad, implica que es un usuario relativamente avanzado que puede pagar más por las herramientas de desarrollo. Esta es una segmentación de mercado estándar, al igual que los límites de conteo de pines en diferentes versiones del mismo software de captura de esquemas.

El propósito de la pregunta original no está claro: ¿conocer el razonamiento detrás de cobrar dinero por las damas MISRA-C ayuda al interrogador? ¿O la intención es realmente preguntar: hay alguna alternativa de menor costo? Esta respuesta aborda lo último. Si el interrogador aclara lo anterior, eliminaré esta respuesta.

Si está interesado en software de alta integridad pero no está obligado a usar C, existen alternativas.

SPARK es más riguroso que MISRA-C.

El hecho de que esté basado en Ada ayuda a lograr la confiabilidad del software porque el lenguaje base permite menos áreas grises, comportamiento indefinido o ambiguo. El sistema de tipo fuerte ayuda mucho en formas que pueden ser difíciles de apreciar al principio. Por ejemplo, el famoso problema de desbordamiento de búfer se convierte en un simple error de tipo que siempre se puede detectar antes de que suceda y, en muchos casos, eliminarlo el compilador.

SPARK se basa en el lenguaje Ada básico al demostrar que el desbordamiento del búfer no ocurrirá, incluso antes de la compilación.

No es magia; como MISRA-C, implica restricciones en el estilo de programación y más trabajo por adelantado, pero hay alguna evidencia de que el costo inicial ahorra más gastos más adelante en el proceso de desarrollo.

Si puede vivir con una licencia GPL, hay una edición GPL disponible .

Mucha más información de un usuario satisfecho