Pregunta

Tengo el requisito de hacer que una gran cantidad de código sea compatible con MISRA.
Primera pregunta:¿Alguien puede dar una Estimacion por pasar código bien escrito para sistemas integrados basado en la experiencia.Entiendo que "bien escrito" está mal definido y es vago, por lo que pido una estimación bruta.
Segunda pregunta:Cualquier recomendación para una herramienta que pueda ser personalizable (es decir, que permita suprimir advertencias específicas) y usarse en un entorno de compilación automática (es decir, una interfaz de línea de comandos).
Cualquier otra sugerencia útil que pueda ayudar con esta tarea.
Gracias Ilya.

¿Fue útil?

Solución

También recomiendo PC-Lint.Si está compilando su código con Visual Studio, le recomiendo el complemento 'Visual Lint' de Riverblade.Si no puede compilar el código en Visual Studio, aún puede ejecutar PC-Lint desde la línea de comandos con buenos resultados.

Algunos compiladores de sistemas integrados proporcionan pruebas de cumplimiento de MISRA como advertencias del compilador.Utilizo el compilador IAR para el desarrollo de Arm7/Arm9.Proporciona una lista de verificación de cumplimiento de MISRA fácil de configurar directamente en la configuración del compilador.

Es difícil encontrar una regla general para estimar el tiempo que le llevaría hacer que un código bien escrito sea compatible con MISRA.Mucho depende de los hábitos de codificación existentes de los programadores y de qué tan estrictamente sigan las reglas de MISRA en primer lugar.

Estimaciones aproximadas:
2 - 3 días para convertirse en un experto en el uso de PC-Lint.
Paso inicial para hacer que el código existente sea compatible con MISRA:Entre el 10 y el 25 por ciento del tiempo dedicado a escribir el código en primer lugar.
Mantener el código MISRA compatible:Del 5 al 10 por ciento se agrega al desarrollo del código.La mitad de este costo es cambiar los hábitos de sus programadores para que sigan la 'forma MISRA' de hacer las cosas.La otra mitad es el costo adicional de las pruebas e inspecciones del código para garantizar el cumplimiento de MISRA.

Otros consejos

Hacer que el código Misra sea compatible no es una tarea demasiado complicada, si se siguen prácticas de programación bastante buenas.Es posible que algunas de las reglas de puntero le resulten un poco complicadas, si el código que intenta hacer cumplir tiene alguna aritmética de puntero extraña y maravillosa.

Apoyaría la recomendación de Greg para PC Lint, pero también vale la pena echarle un vistazo al Splint de código abierto, aunque entre ellos (y el sistema de advertencia del compilador), calculo que solo podrás cubrir el 80% de las reglas de Misra. - El resto probablemente necesitará una revisión manual del código.

Utilizo PC Lint para el análisis estático de código C y C++.Se puede configurar para mostrar qué reglas de MISRA se han violado y tiene una interfaz de línea de comando.

He utilizado una herramienta comercial llamada control de calidad.La herramienta es capaz de hacer cumplir misra

Tiene una interfaz de línea de comandos, por lo que puedes configurarlo para que se ejecute desde un entorno de compilación automatizado.Las reglas que se aplicarán son configurables, pero espere que alguien dedique algo de tiempo a configurarlas.La aplicación de MISRA es bastante sencilla y funcionó bastante bien.Me dijeron (y esto es sólo de tercera mano) que esta es una de las herramientas que algunas agencias (como la FDA) utilizan para evaluar el código.Como la mayoría de las herramientas de análisis estático, hay ruido (falsos positivos) con el que lidiar.La última vez que lo usé, no tenía un buen medio para marcar/evitar que volviera a ocurrir un falso positivo (sin cambiar el código del que se quejaba).

Sospecho que un ingeniero junior tardará hasta una semana (4-5 días) en configurarlo (suponiendo que esté decidido a hacerlo funcionar como usted desea).

Como nota al margen, es probable que otras herramientas comerciales de análisis estático también tengan aplicación MISRA.Según se informa (según su representante de ventas), Klocwork hace.

Tuvimos un problema similar al actualizar las reglas de Misra.Tuvimos algunos problemas con la calidad del código en un proyecto grande y decidimos usar MISRA para mejorar la calidad del código.

Usamos el compilador Green Hills que admite reglas MISRA C.También hay fichas independientes disponibles.Dependiendo de lo que quieras hacer, puede ser un poco excesivo activar todas las reglas.Activamos una regla a la vez para darles tiempo a las personas para solucionar un número limitado de problemas similares; de lo contrario, se sentirá totalmente abrumado por la cantidad de errores.

Dado que nuestras advertencias fueron generadas por el compilador y no por una herramienta independiente, verá los errores a medida que desarrolla y no solo cuando ejecuta el verificador.A medida que continuamos desarrollando, logramos que nuestro código fuera compatible y no de una sola vez.Esto también evita que los viejos hábitos estropeen el nuevo código y le obliguen a volver a trabajar en el código más adelante.

Algunas veces es difícil lograr que el código antiguo sea compatible ya que nadie sabe exactamente cómo funciona el código.Espero que tengas pruebas unitarias.

Aprecio que esta sea una vieja pregunta, pero para beneficio de otros arqueólogos (o buscadores), es importante recordar que MISRA proporciona pautas que no siempre se debe seguir ciegamente.

Recomiendo escribir código nuevo con MISRA en mente;por lo tanto, será mucho más fácil cumplir.

Sin embargo, esto no siempre es posible, y en particular, cuando se intenta aplicar ingeniería inversa al código para cumplir con las pautas.En este caso, te sugiero que te concentres en las reglas requeridas y trates los Avisos como una ventaja...¡El costo versus el beneficio se aplica aquí también!

Además, tenga en cuenta que existe un proceso de desviación: es mejor mantener un código limpio y mantenible con una desviación, que idear algunos espaguetis compatibles pero ilegibles.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top