CodeChecker es una infraestructura de análisis estático construida en la cadena de herramientas de analizador estático LLVM/Clang, reemplazando scan-build en un entorno de desarrollo de Linux o MacOS (OS X).

¡Vea nuestra demostración que muestra algunos resultados de análisis de proyectos de código abierto!
Ejecuta el analizador estático de Clang-Tidy , Clang con análisis de la unidad de traducción cruzada, análisis estadístico (cuando hay verificadores disponibles), CPPCheck , GCC Static Analyzer y Facebook Infer Analyzer .
Crea la base de datos de compilación JSON al intercambiar cualquier proceso de compilación (por ejemplo, CodeChecker log -b "make" ).
Analiza automáticamente los proyectos compilados de GCC: detectar la configuración del compilador GCC o Clang y formar las invocaciones de analizador CLANG correspondientes.
Análisis incremental: solo los archivos cambiados y sus dependencias deben volver a analizarse.
Supresión de falsos positivos con la posibilidad de agregar comentarios de revisión.
Visualización de resultados en la línea de comando o en HTML estático.
Puede almacenar y visualizar miles de informes de análisis de muchos analizadores como Clang Static Analyzer (C/C ++), Clang Tidy (C/C ++), Facebook Infer (C/C ++, Java), CLang Anitizers (C/C ++), SpotBugs (Java), Pylint (Python), ESLINT (JavaScript) ...
Para una lista completa, consulte Analizadores compatibles
Aplicación web para ver defectos de código descubierto con una experiencia fácil y fácil (con PostgreSQL o backend sqlite).
La integración de Gerrit y Gitlab muestra los resultados del análisis como revisiones GitLab o Gerrit.
Filtrable (nombre del verificador de defectos, gravedad, rutas de origen, ...) y comparable (calcula la diferencia entre dos análisis del proyecto, que muestra qué errores se han solucionado y cuáles se introducen recientemente).
Modo DIFF: esto muestra la lista de errores que se han introducido desde su última ejecución del analizador.
Los resultados se pueden compartir con otros desarrolladores, el sistema de comentarios y revisión ayuda a la comunicación de defectos del código.
Comunicación de servidor de servidor basada en segunda mano fácilmente implementable utilizada para almacenar y consultar defectos descubiertos.
Soporte para múltiples frontends de visualización de errores, como la aplicación web, una herramienta de línea de comandos y un complemento Eclipse.
El comando CodeChecker tiene muchos subcomandos que se pueden usar, por ejemplo, para iniciar sesión y analizar sus proyectos, imprimir los resultados o iniciar un servidor web. Para obtener la lista completa, consulte la siguiente tabla o verifique el mensaje de ayuda de este comando ( CodeChecker --help ):
Subcomando CodeChecker | Descripción |
|---|---|
analyze | Ejecute los analizadores de código compatibles para los archivos registrados en una base de datos de compilación JSON. |
analyzer-version | Imprima la versión del paquete CodeChecker Analyzer que se está utilizando. |
analyzers | Lista de analizadores compatibles y disponibles. |
check | Realice un análisis en un proyecto e imprima los resultados de la salida estándar. |
checkers | Enumere las verificadoras disponibles para el análisis de código. |
cmd | Ver resultados de análisis en un servidor en ejecución desde la línea de comando. |
fixit | Aplique soluciones automáticas basadas en las sugerencias de los analizadores. |
log | Ejecute un comando de compilación, recopile los comandos de compilación ejecutados y guárdelos en un archivo JSON. |
parse | Resumen de análisis de impresión y resultados en un formato legible por humanos. |
server | Inicie y administre el servidor web CodeChecker. |
store | Guardar resultados de análisis en una base de datos. |
version | Imprima la versión del paquete CodeChecker que se está utilizando. |
web-version | Imprima la versión del paquete de servidor CodeChecker que se está utilizando. |
CodeChecker cmd Subcomand también tiene muchos otros subcomandos que pueden usarse para obtener datos (productos, ejecuciones, resultados, estadísticas) de un servidor de CodeChecker en ejecución. Para obtener la lista completa, consulte la siguiente tabla o verifique el mensaje de ayuda de este subcomando ( CodeChecker cmd --help ):
Subcomando CodeChecker cmd | Descripción |
|---|---|
runs | Enumere las ejecuciones de análisis disponibles. |
history | Show Run History de múltiples carreras. |
results | Resultado del análisis de la lista (hallazgo) Resumen para una ejecución dada. |
diff | Compare dos ejecuciones de análisis y muestre la diferencia. |
sum | Mostrar estadísticas de verificadores. |
token | Subcomandos de acceso relacionados con la configuración de tokens de acceso personal administrados por un servidor CodeChecker. |
del | Eliminar el análisis se ejecuta. |
update | Actualizar una ejecución de análisis. |
suppress | Administre e importe supresiones de informes en un servidor CodeChecker. |
products | Subcomandos de acceso relacionados con la configuración de los productos administrados por un servidor CodeChecker. |
components | Subcomandos de acceso relacionados con la configuración de los componentes de origen administrados por un servidor CodeChecker. |
login | Autenticar en servidores CodeChecker que requieren privilegios. |
export | Exportar comentarios y revisar los estados de CodeChecker. |
import | Importar comentarios y revisar los estados en CodeChecker. |

Paso 1 : CodeChecker log ejecuta el comando de compilación dado y registra los pasos de compilación ejecutados. Estos pasos se escriben en un archivo de salida (base de datos de compilación) en formato JSON.
Paso 2 : CodeChecker analyze utiliza la base de datos de compilación JSON creada anteriormente para realizar un análisis en el proyecto, lo que produce resultados de análisis en un formato legible por máquina (PLIST).
Paso 3 : En este paso, puede hacer varias cosas:
Analice y imprima el resumen y los resultados de los archivos de resultados de análisis ( CodeChecker parse ).
Almacene los resultados en un servidor CodeChecker en ejecución ( CodeChecker store ).
Compare dos resultados/ejecuciones de análisis para mostrar los resultados que difieren entre los dos ( CodeChecker cmd diff ).
etc.
Para obtener más información sobre cómo usar CodeChecker, consulte nuestra Guía del usuario.
Comenzar (cómo hacer ejemplos)
Guía del usuario del analizador
Evitar o suprimir los falsos positivos
Configuración del analizador de verificación y estática
Incompatibilidades de GCC
Suprimir falsos positivos
Guía del usuario del servidor web
Guía del usuario de Web GUI
Línea de comandos y descripción general de funciones de interfaz de usuario web
Configuración de seguridad
Configuración de la autenticación
Configuración de autorización
Despliegue
Implementar servidor usando Docker
Configuración del servidor
Configuración del registro del servidor
Configuración de múltiples repositorios de CodeChecker en un servidor
Integración continua (CI)
CodeChecker como acción de Github
Configuración de CI Actualización con Gerrit y Jenkins
Configuración de la base de datos
Guía de configuración del backend de la base de datos PostgreSQL
Guía de actualización del esquema de la base de datos de CodeChecker y la base de datos
CodeChecker se puede utilizar como una herramienta genérica para visualizar los resultados del analizador.
Se admiten las siguientes herramientas:
| Idioma | Analizador |
|---|---|
| C/C ++ | Analizador estático de clang |
| Clang ordenado | |
| Desinfectantes de clang | |
| CPPCHECK | |
| Facebook inferir | |
| Coccinela | |
| Armar | |
| Doc de núcleo | |
| Escaso | |
| pezón | |
| DO# | Roslynator.dotnet.cli |
| Java | Colaboradores |
| Facebook inferir | |
| Pitón | Pylint |
| Pyflakes | |
| Javascript | Eslint |
| Mecanografiado | Tslint |
| Ir | Artilugio |
| Reducción | Markdownlint |
| Esfinge |
Para más detalles, consulte la documentación de los analizadores de código compatibles y la herramienta de convertidor de informes.
Herramientas útiles que también se pueden usar fuera de CodeChecker.
Build Logger (para generar la base de datos de compilación JSON a partir de sus compilaciones)
PLIST/SARIF a HTML Converter (para generar archivos HTML a partir de los archivos PLIST o SARIF dados)
Herramienta de convertidor de informes (para convertir los resultados del análisis de otros analizadores al formato de directorio de informes de CodeChecker)))
Collector de la unidad de traducción (para recopilar archivos de origen de una unidad de traducción o para obtener archivos de origen que dependen de los archivos de encabezado dados)
Informe el generador de hash (para generar identificadores de hash únicos para los informes)
Scripts de ayuda para el análisis diario
pipCodeChecker está disponible en el PYPI y se puede instalar con el siguiente comando:
PIP3 Instalar CodeChecker
Nota: Este paquete se puede instalar en sistemas Linux , OSX y Windows donde el comando pip3 está disponible. En OSX , se debe instalar intercept-build para registro ( CodeChecker log ). En Windows , el registro no está disponible.
snapCodeChecker está disponible en la tienda Snap y se puede instalar con el siguiente comando:
SUDO Snap Instale CodeChecker -Classic
Nota: Desafortunadamente, el paquete SNAP solo admite nombres de comandos de caso inferior. Por esta razón, debe usar el comando codechecker en lugar de CodeChecker en todas partes. Para obtener una lista completa de comandos disponibles en el paquete Snap de CodeChecker , ejecute snap info codechecker .
Para obtener una lista de dependencia detallada y para obtener instrucciones sobre cómo instalar versiones más nuevas de Clang y Clang-Tidy, consulte los requisitos. Los siguientes comandos se utilizan para arrancar CodeChecker en Ubuntu 20.04 LTS:
# Instale dependencias obligatorias para un entorno de desarrollo y análisis.# NOTA: Clang o Clang-Tidy pueden ser cualquier versión suficientemente fresca, y no es necesario que vine de un administrador de paquetes!# En caso de CPPCheck, la versión mínima compatible es 1.80. CLANG CLANG-TIDY CPPCHECK G ++ CURL ESENCIAL DE LA CONDUCCIÓN
GCC-Multilib Git Python3-Dev Python3-VENVV Python3-SetupTools# En el caso de VenV_Dev Target y Ubuntu 23 Linux, instale una biblioteca adicional: sudo apt-get instalar libpq-dev# instalar la dependencia de nodejs para la web. En el caso de Debian/Ubuntu, puede usar los# siguientes comandos. Para obtener más información, consulte los documentos oficiales:# https://nodejs.org/en/download/package-manager/curl -sl https://deb.nodesource.com/setup_16.x | sudo -e Bash -
sudo apt -get install -y nodejs# Consulte el código fuente de CodeChecker. `venv`.make venvSource $ pwd/venv/bin/activado# [opcional] Si desea utilizar métodos de autenticación externos (LDAP/PAM)# Siga las instrucciones en# docs/web/autenticación.md# Metodios de autorización externa Ruta = "$ pwd/build/codeChecker/bin: $ ruta" CD ..Notas :
De manera predeterminada, make package construirá objetos compartidos LDLogger para 32bit y 64bit también. Si desea construir y empaquetar 64 bit only objetos compartidos y Ldlogger Binary, puede establecer BUILD_LOGGER_64_BIT_ONLY Variable a YES antes del paquete Build: BUILD_LOGGER_64_BIT_ONLY=YES make package .
Por defecto, el make package creará el código de UI si aún no está construido o se cambia el código de interfaz de usuario. Si no desea construir el código UI, puede establecer la variable de entorno BUILD_UI_DIST en NO antes del paquete Build: BUILD_UI_DIST=NO make package .
Use make standalone_package en lugar de make package para evitar tener que activar manualmente el entorno antes de ejecutar CodeChecker.
Si ha actualizado la pitón de su sistema a una versión más nueva (por ejemplo, de 3.8 a 3.11 , este es el caso al actualizar Ubuntu de 20.04 LTS a 22.04 LTS), el entorno instalado no funcionará fuera de la caja. Para solucionar este problema, ejecute el siguiente comando para actualizar su checker_env también:
CD ~/CodeChecker/Venv Python3 -M Venv.
Para las instrucciones de instalación para Mac OS X, consulte la documentación de la Guía de instalación de Mac OS X.
Para ejecutar el servidor CodeChecker en Docker, consulte la documentación de Docker. Puede encontrar el contenedor de servidor web CodeChecker en el Docker Hub.
Puede instalar y usar CodeChecker VScode Extension desde Visual Studio Marketplace o desde Open VSX.
Características principales:
Ejecute el análisis de CodeChecker desde el editor y vea los resultados automáticamente.
Vuelva a analizar el archivo actual cuando se guarde.
Comandos y tareas de compilación para ejecutar CodeChecker como parte de un sistema de compilación.
Explore los informes encontrados y muestre los pasos de reproducción directamente en el código.
Navegue entre los pasos de reproducción.

Para obtener más información sobre cómo instalar y usar este complemento, consulte el repositorio de esta extensión.

¡CodeChecker se puede ejecutar a través de una acción de GitHub reutilizable para su proyecto! Solo debe especificar el comando de compilación, como si ejecutara el análisis localmente.
Para obtener más información, consulte la acción de análisis estático de CodeChecker en el mercado de acciones de GitHub.
Estos pasos siempre deben tomarse en un nuevo símbolo del sistema en el que desea ejecutar el análisis.
fuente ~/codeChecker/venv/bin/activar# ruta del paquete de CodeChecker# Nota: omita esta línea Si siempre desea especificar la ruta completa de CodeChecker.export = ~/CodeChecker/build/codeChecker/bin: $ ruta# ruta# de la ruta de Llvm/clang ruta>/construir/bin: $ ruta
Analice su proyecto con el comando check :
CodeChecker check -b "cd ~/your-project && make clean && make" -o ./results
check imprimirá una descripción general de los problemas encontrados en su proyecto por los analizadores. Los informes se almacenarán en el directorio ./results en formato plist XML.
Puede visualizar los resultados como HTML estático ejecutando
CodeChecker parse -e html ./results -o ./reports_html
Se generará una página de índice con una lista de todos los periódicos en ./reports_html/index.html
Si tiene cientos de resultados, es posible que desee almacenarlos en el servidor web con un backend de la base de datos.
Inicie un servidor web y de almacenamiento de CodeChecker en otro terminal o como un proceso de fondo. Por defecto, escuchará en localhost:8001 .
La base de datos SQLite que contiene los informes se colocará en el directorio de su espacio de trabajo ( ~/.codechecker de forma predeterminada), que se puede proporcionar a través del indicador -w .
CodeChecker server
Almacene sus informes de análisis en el servidor para poder usar el visor web.
CodeChecker store ./results -n my-project
Abra el visor web de CodeChecker en su navegador, y debe ser recibido con una aplicación web que le muestre los resultados del análisis.
Arquitectura
Diseño del paquete
Dependencias
Interfaz de segunda mano
Pruebas de paquete e integración
Una visión general sobre la infraestructura de CodeChecker se dio en PLDI 2020.
Márton, Gábor y Krupp, Dániel :
Charla de herramientas: CodeChecker
Una descripción general de alto nivel sobre la infraestructura está disponible entre las presentaciones de la Conferencia Euro LLVM 2015.
Krupp, Dániel y Orbán, György y Horváth, Gábor y Babati, Bence :
Experiencias industriales con el conjunto de herramientas de análisis estático de Clang