Herramienta de front-end simple que puede ejecutar varias herramientas de análisis estático leyendo la información requerida de compile_commands.json.
Proporciona formateo de salida para la integración a otras herramientas, paralerización cuando es necesario, la capacidad de anular/reconfigurar los indicadores del compilador y tales en los requisitos del complemento de "herramienta".
El desarrollo actual se realiza principalmente en Windows, pero debe funcionar en cualquier plataforma donde tenga Python, entorno de desarrollo laboral para su propio proyecto y analizador. Actualmente compatibles:
El proyecto está disponible en PYPI como distribución de fuente:
pip install processcdb
Dado que ProcessCDB también instalará pocas dependencias, se recomienda usar PIPX para la instalación.
Una vez que se instala el paquete. Genere un archivo de configuración con:
processcdb --dump-config
Esto generará un archivo de configuración de Barebones en la ubicación predeterminada (se puede sobrescribir más tarde con el argumento -config). Edite este archivo para señalar opciones "binarias" para que esos analizador apunten a su ejecutable. En Windows, no omita la extensión del archivo.
Ayuda básica:
processcdb --help
Después de un proceso de generación de un compile_commands.json, puede ejecutar processCDB con una herramienta seleccionada como esta:
processcdb --tool clang-tidy
Esto intentará ubicar el archivo JSON del directorio de trabajo actual y ejecuta la herramienta, en este caso Clang-Tidy, con todos los archivos que se compilan y no se presentan en la lista negra en el archivo COMFIG processcdb o en el archivo de configuración de herramientas y genera la salida a la salida estándar. Si necesita ejecutar la herramienta cuando no tiene acceso para cambiar el directorio de trabajo actual, puede pasar --cdb y ubicación absoluta:
processcdb --tool clang-tidy --cdb D:srcmyprojectbuildcompile_commands.json
Uno puede dirigir la salida de herramientas a un archivo con el argumento --output . Vale la pena señalar que ciertas herramientas ( -t ) pueden proporcionar más argumentos para el procesamiento posterior o propósitos específicos de la herramienta:
processcdb --tool clang-tidy --cdb ~/src/myproject/build/compile_commands.json --output scan.log --xml
Si ProcessCDB se invoca sin pasar -argumento --config , se utiliza un archivo de configuración predeterminado. La ubicación depende del sistema operativo. Si necesita analizar múltiples proyectos con diferentes tipos de configuraciones o desea analizar con diferentes versiones de un escáner particular, use múltiples archivos de configuración.
Por ejemplo, si tiene una base de código que desea escanear con Clang 11.0.0, pero su proyecto realmente se compila realmente con MSVC de Microsoft y tiene otro proyecto que se compila con Clang: haga un archivo de configuración separado para MSVC y Clang e Invoke ProcessCDB:
processcdb --tool clang-tidy --config location/to/config/msvc17_clang_interop.ini
Si ProcessCDB se invoca sin pasar -argumento --config , se utiliza un archivo de configuración predeterminado. Para generar un archivo de configuración, pase --dump-config al ProcessCDB. Para guardar el archivo de configuración predeterminado en un archivo. Capture la salida estándar o proporcione el parámetro --config .
Cada herramienta tiene una sección separada y cada sección se puede configurar en la sección específica de la herramienta o en el valor predeterminado. Mínimo. La configuración de una sola herramienta se vería algo así:
[clang-tidy]
binary=C:llvm-11.0.0binclang-tidy.exe
Aquí tenemos una sección para la herramienta Clang-Tidy, donde estamos configurando un binary variable a un valor de c:llvm-11.0.0binclang-tidy.exe .
El módulo Python configparser se utiliza para cargar/analizar el archivo.
Las siguientes variables se comparten entre las herramientas:
binary - camino absoluto a un escáner.file_blacklist : lista de especificaciones de archivos que deben omitirse desde el escaneoarg_blacklist : lista de argumentos de línea de comandos pasados al compilador que no debe pasar a una herramienta.arg_additions : una lista de pares de clave/valor. Si se encuentra clave en JSON, se coloca un valor en los argumentos de la herramienta.jobs : procesos de número predeterminado ProcessCDB o la herramienta puede usar para procesar. 0 para la detección automática.default_includes : lista de rutas que deben pasar automáticamente a la herramienta como rutas de inclusión que podrían no especificarse en el compile_commands.jsondefault_args : lista de argumentos que deben pasar a la herramienta que no proporciona el compile_commands.jsonincludes_as_system : lista de especificaciones de archivos que deberían convertirse de lo normal -i incluir a -isystem incluyen.Cada opción de configuración que es una lista y permite múltiples valores, use Semicolon como separador de elementos.
Con arg_blacklist , uno puede quitar los argumentos innecesarios de la línea de comandos y arg_addition puede usarse para inyectar nuevos argumentos. Por ejemplo, si está compilando un proyecto en MSVC y se habilitan las excepciones, la siguiente configuración permitiría que la herramienta Clang-Tidy todavía funcione correctamente:
[clang-tidy]
binary=C:llvm-11.0.0binclang-tidy.exe
arg_blacklist=EHsc
arg_additions=EHsc=-Xclang,-fcxx-exceptions
Como primero, ProcessCDB notaría que compile_commands.json podría tener el argumento /EHsc , agregaría 2 nuevos argumentos -Xclang y '-fcxx-exceptions' y luego arg_blacklist eliminaría el original /EHsc
La herramienta CPPCheck también tiene opción supression_file que, si es necesario, debe ser una ubicación absoluta del archivo de supresión propio de CPPChecks.
La capacidad de Clang-Tidy Toool para convertir el archivo de registro en XML para el soporte directo de Jenkins es parte del proyecto CodeChecker y su licencia bajo Apache 2.0
Inicio: https://github.com/rasjani/processcdb Problemas: https://github.com/rasjani/processcdb/issues