¿Por qué el corrector Misra C es una herramienta tan prestigiosa? [cerrado]

2

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

    
pregunta Kar

3 respuestas

11

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 ++.

    
respondido por el tcrosley
3

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 estándar del mercado, al igual que los límites de conteo de pines en diferentes versiones del mismo software de captura esquemática.

    
respondido por el Adam Haun
-1

El propósito de la pregunta original no está claro: ¿el hecho de conocer el razonamiento detrás de cobrar dinero por los inspectores de MISRA-C ayuda al interrogador? ¿O es realmente la intención de preguntar: hay alguna alternativa de menor costo? Esta respuesta se dirige a este último. Si el interrogador aclara el primero, eliminaré esta respuesta.

Si estás interesado en un software de alta integridad pero no estás obligado a usar C, hay 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 de maneras que pueden ser difíciles de apreciar al principio. Por ejemplo, el famoso problema desbordamiento de búfer se convierte en un simple error de tipo que siempre puede detectarse antes de Sucede, y en muchos casos, eliminado por el compilador.

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

No es magia; Al igual que MISRA-C, implica restricciones en el estilo de programación y más trabajo por adelantado, pero existe cierta 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

    
respondido por el Brian Drummond

Lea otras preguntas en las etiquetas