X
BLOG

Uso de la prueba Parasoft C / C ++ con CMake para análisis estático

Uso de la prueba Parasoft C / C ++ con CMake para análisis estático Tiempo de leer: 4 minutos

CMake es una de las herramientas más populares para crear, probar y empaquetar software. Simplifica enormemente la gestión del proceso de construcción para proyectos importantes. La versión de prueba 2020.1 de Parasoft C / C ++ presenta una colección de mejoras que agilizan la integración con proyectos basados ​​en CMake.

Desarrollamos estas mejoras durante el lanzamiento de nuestra solución de prueba para uno de los fabricantes de automóviles más grandes y conocidos.

Nuestro desafío fue presentar análisis estático y  examen de la unidad capacidades en proyectos grandes y complejos que se basan en el plataforma AUTOSAR adaptable. Estos proyectos estaban compuestos por múltiples bibliotecas estáticas y dinámicas y muchos ejecutables.

En esta publicación de blog, explicaré cómo integrar las capacidades de análisis estático de prueba de Parasoft C / C ++ en proyectos basados ​​en CMake. Estén atentos para mi próxima publicación donde explicaré cómo hacer lo mismo para las pruebas unitarias.

Integración del análisis estático en proyectos basados ​​en CMake

Para realizar análisis de código estático, herramientas como la prueba Parasoft C / C ++ requieren información sobre la construcción del proyecto. Generalmente, todo lo que se necesita son líneas de comando de compilación para invocar los archivos que están destinados al análisis.

Con la prueba de Parasoft C / C ++, hay diferentes formas de integrarse en las compilaciones. Los diferentes sistemas de construcción pueden requerir diferentes enfoques. Con los proyectos basados ​​en CMake, hay excelentes opciones disponibles para hacer que el análisis estático sea sencillo y requiera cambios mínimos en el proceso. Facilita la integración con la prueba C / C ++.

Los scripts de CMake se pueden configurar fácilmente para generar información en tiempo de compilación como un archivo JSON. Por lo general, obtienes un archivo JSON por compilación. Este archivo JSON contiene todo lo que necesita el analizador estático para realizar el escaneo de código. El archivo JSON con líneas de comando de compilación se crea en el momento de la generación del script de compilación. La versión 2020.1 de prueba de C / C ++ comprende este formato y puede usarlo directamente como entrada para realizar análisis estáticos.

Cómo ejecutar análisis estático en proyectos basados ​​en CMake

El procedimiento para ejecutar el análisis estático en proyectos basados ​​en CMake implica los siguientes pasos:

  1. Habilite la generación del archivo JSON con comandos de compilación. Esta es una actividad que se realiza una sola vez.
  2. Genere sus scripts de compilación. Esto incluirá la generación de archivos JSON de información de compilación.
  3. Ejecute un análisis estático alimentando la información de compilación del archivo JSON como entrada al analizador estático.

¡Eso es!

Un ejemplo de análisis estático en proyectos basados ​​en CMake

Veamos un ejemplo de ejecución de análisis estático en proyectos basados ​​en CMake. Si aún no lo ha hecho, instale la edición estándar de C ++ test 2020.1

Sigue estos pasos

Después de la instalación, vaya al directorio de instalación y a la subcarpeta de ejemplos. Haga una copia del ejemplo del temporizador e ingrese al directorio del temporizador. (Estos pasos utilizan Linux como plataforma de desarrollo).

Debería ver el siguiente contenido:

Este ejemplo está preparado para ser construido con un archivo MAKE “estático” que se encuentra en el directorio principal o usando los scripts de construcción generados por CMake.

Cree una carpeta de compilación dentro del directorio Timer usando cd. Llame a la generación de scripts de compilación usando CMake.

Si enumeramos el contenido del directorio de compilación después de la generación, veremos que se generó el archivo compile_commands.json.

Para el siguiente proyecto de ejemplo, ya se ha habilitado la generación de archivos JSON de información de compilación.

Ahora estamos listos para ejecutar el análisis estático usando el archivo compile_commands.json generado. Una gran ventaja es que podemos agregar el archivo .json directamente a la interfaz de línea de comandos del producto estándar de prueba Parasoft C / C ++:

Eso es. Se realiza el análisis estático y se devuelven los resultados.

Este enfoque de integración se puede utilizar para CI o localmente en el escritorio del desarrollador. La única modificación que podría ser necesaria es habilitar la generación del archivo compile_command.json.

Cómo habilitar el archivo de generación en su proyecto

Si no tiene habilitada la generación del archivo compile_command.json en su proyecto, puede hacerlo de dos maneras.

Opción 1

Establezca las opciones CMAKE_EXPORT_COMPILE_COMMANDS en ON en el archivo CMakeLists.txt.

Ejemplo

establecer (CMAKE_EXPORT_COMPILE_COMMANDS ON)

Opción 2

Agréguelo a la invocación de la línea de comandos de cmake al generar los scripts de compilación.

Ejemplo

cmake -DCMAKE_EXPORT_COMPILE_COMMANDS = 1

Eso es todo lo que hay para integrar el análisis estático en proyectos basados ​​en CMake. A continuación, cubriré las pruebas unitarias con CMake. Publicación de blog próximamente.

Pruebas de desarrollo unificadas para aplicaciones C y C ++

Escrito por

Miroslaw Zielinski

Gerente de producto para las soluciones de prueba integradas de Parasoft, las especialidades de Miroslaw incluyen C / C ++, RTOS, análisis de código estático, pruebas unitarias, gestión de la calidad del software para aplicaciones críticas de seguridad y cumplimiento del software con los estándares de seguridad.

Reciba las últimas noticias y recursos sobre pruebas de software en su bandeja de entrada.

Prueba Parasoft