Seminario web destacado: Pruebas de API mejoradas con IA: un enfoque de prueba sin código | Vea ahora
Saltar a la sección
Uso de la prueba Parasoft C / C ++ con CMake para análisis estático
Es posible que haya estado usando CMake en su análisis estático. Pero, ¿ha intentado usar la prueba Parasoft C/C++ con CMake? Aquí hay un desglose de cómo usar C/C++test para ejecutar análisis estáticos en proyectos basados en CMake.
Saltar a la sección
Saltar a la sección
CMake es una de las herramientas más populares para crear, probar y empaquetar software. Parasoft C/C++test agiliza la integración con proyectos basados en CMake simplificando el gestión de construcción proceso. Cuanto más grande es el proyecto, mayor es el impacto.
El equipo de Parasoft desarrolló estas mejoras durante la implementación de nuestra solución de prueba para un fabricante de automóviles grande y conocido.
Nuestro objetivo era introducir capacidades de análisis estático y pruebas unitarias en proyectos grandes y complejos que se basan en la 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 Prueba C / C ++ capacidades de análisis estático en proyectos basados en CMake. Puede 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 C/C++ requieren información sobre la compilación del proyecto. Generalmente, todo lo que se necesita son líneas de comando de compilación para invocar los archivos que se pretenden analizar.
Con la prueba C/C++, existen diferentes formas de integrarse en el proceso de compilación. Diferentes sistemas de construcción pueden requerir diferentes enfoques. Con los proyectos basados en CMake, existen excelentes opciones disponibles para hacer que el análisis estático sea sencillo y requiera cambios mínimos en el flujo de trabajo. Permite una integración fluida con la prueba C/C++.
Los scripts de CMake se pueden configurar fácilmente para generar información de tiempo de compilación como un archivo JSON. Por lo general, obtiene un archivo JSON por compilación. Este archivo JSON contiene todo lo que el analizador estático necesita para realizar la exploración 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. C/C++test entiende este formato y puede usarlo directamente como entrada para realizar un análisis estático.
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:
- Habilite la generación del archivo JSON con comandos de compilación. Esta es una actividad que se realiza una sola vez.
- Genere sus scripts de compilación. Esto incluirá la generación de archivos JSON de información de compilación.
- 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, instalar la edición estándar de C++test.
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 la integración continua (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 que hacer para integrar el análisis estático en proyectos basados en CMake.