ventanas de liberación | OSS-Fuzz | Estado de compilación del escaneo de Coverity | incluye-lo-que-usas | Licencia |
---|---|---|---|---|
El nombre original de este programa era "C++check", pero luego se cambió a "Cppcheck".
A pesar del nombre, Cppcheck está diseñado tanto para C como para C++.
Hay un manual disponible en línea.
Cppcheck es un proyecto de hobby con recursos limitados. Puedes ayudarnos donando CPU (1 núcleo o tantos como quieras). Es sencillo:
cd cppcheck/
virtualenv .env
.env/bin/pip install -r tools/donate-cpu-requirements.txt
.env/bin/python tools/donate-cpu.py
El script analizará el código fuente de Debian y cargará los resultados en un servidor cppcheck. Necesitamos estos resultados tanto para mejorar Cppcheck como para detectar regresiones.
Puedes detener el script cuando quieras con Ctrl C.
Cppcheck requiere un compilador de C++ con soporte (parcial) de C++ 11. Las versiones mínimas requeridas son GCC 5.1 / Clang 3.5 / Visual Studio 2015.
Para crear la aplicación GUI, debe utilizar el sistema de compilación CMake.
Al crear la herramienta de línea de comandos, PCRE es opcional. Se utiliza si construyes con reglas.
Hay múltiples opciones de compilación:
La versión mínima requerida de Python es 3.6.
La versión mínima requerida es CMake 3.5.
Ejemplo, compilando Cppcheck con cmake:
mkdir build
cd build
cmake ..
cmake --build .
Si desea compilar la GUI, puede utilizar la bandera. -DBUILD_GUI=ENCENDIDO
Para compatibilidad con reglas (requiere pcre), utilice la bandera. -DHAVE_RULES=ON
Para versiones de lanzamiento, se recomienda utilizar: -DUSE_MATCHCOMPILER=ON
Para construir las pruebas use la bandera. -DBUILD_TESTS=ON
Usando cmake puedes generar archivos de proyecto para Visual Studio, XCode, etc.
Para generadores de configuración única (como "Unix Makefiles") puede generar y construir una configuración específica (por ejemplo, "RelWithDebInfo") usando:
mkdir build_RelWithDebInfo
cd build_RelWithDebInfo
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
cmake --build . --config RelWithDebInfo
Para generadores de configuración múltiple (como "Visual Studio 17 2022") se logra lo mismo usando:
mkdir build
cd build
cmake ..
cmake --build . --config RelWithDebInfo
Utilice el archivo cppcheck.sln. El archivo está configurado para Visual Studio 2019, pero el conjunto de herramientas de la plataforma se puede cambiar fácilmente a versiones más antiguas o más nuevas. La solución contiene objetivos de plataforma para x86 y x64.
Para compilar con reglas, seleccione la configuración "Release-PCRE" o "Debug-PCRE". Se espera que pcre.lib (pcre64.lib para compilaciones x64) y pcre.h estén en /externals en ese momento. Se puede obtener una versión actual de PCRE para Visual Studio utilizando vcpkg.
Si no desea utilizar el IDE de Visual Studio, puede compilar cppcheck desde la línea de comando con el siguiente comando.
msbuild cppcheck.sln
Instale MSYS2 para obtener la cadena de herramientas GNU con g++ y gdb (https://www.msys2.org/). Cree un archivo settings.json en la carpeta .vscode con el siguiente contenido (ajuste la ruta según sea necesario):
{
"terminal.integrated.shell.windows": "C:\msys64\usr\bin\bash.exe",
"terminal.integrated.shellArgs.windows": [
"--login",
],
"terminal.integrated.env.windows": {
"CHERE_INVOKING": "1",
"MSYSTEM": "MINGW64",
}
}
Ejecute "make" en la terminal para compilar cppcheck.
Para la depuración, cree un archivo launch.json en la carpeta .vscode con el siguiente contenido, que cubre la configuración para depurar cppcheck y misra.py:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "cppcheck",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/cppcheck.exe",
"args": [
"--dump",
"${workspaceFolder}/addons/test/misra/misra-test.c"
],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "C:/msys64/mingw64/bin/gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "misra.py",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}/addons/misra.py",
"console": "integratedTerminal",
"args": [
"${workspaceFolder}/addons/test/misra/misra-test.c.dump"
]
}
]
}
La dll PCRE es necesaria para construir la CLI. Se puede descargar aquí: http://software-download.name/pcre-library-windows/
Construcción simple y no optimizada (sin dependencias):
make
La versión de lanzamiento recomendada es:
make MATCHCOMPILER=yes FILESDIR=/usr/share/cppcheck HAVE_RULES=yes CXXFLAGS= " -O2 -DNDEBUG -Wall -Wno-sign-compare -Wno-unused-function "
Banderas:
MATCHCOMPILER=yes
Python se utiliza para optimizar cppcheck. Los patrones Token::Match se convierten en código C++ en el momento de la compilación.
FILESDIR=/usr/share/cppcheck
Especifique la carpeta donde están instalados los archivos cppcheck (complementos, cfg, plataforma)
HAVE_RULES=yes
Habilitar reglas (se requiere PCRE si se usa)
CXXFLAGS="-O2 -DNDEBUG -Wall -Wno-sign-compare -Wno-unused-function"
Habilita la mayoría de las optimizaciones del compilador, deshabilita el código de depuración interno de cppcheck y habilita las advertencias básicas del compilador.
Si solo desea compilar Cppcheck sin dependencias, puede usar este comando:
g++ -o cppcheck -std=c++11 -Iexternals -Iexternals/simplecpp -Iexternals/tinyxml2 -Iexternals/picojson -Ilib cli/ * .cpp lib/ * .cpp externals/simplecpp/simplecpp.cpp externals/tinyxml2/ * .cpp
Si desea utilizar --rule
y --rule-file
, entonces se necesitan dependencias:
g++ -o cppcheck -std=c++11 -lpcre -DHAVE_RULES -Ilib -Iexternals -Iexternals/simplecpp -Iexternals/tinyxml2 cli/ * .cpp lib/ * .cpp externals/simplecpp/simplecpp.cpp externals/tinyxml2/ * .cpp
mingw32-make
Si encuentra el siguiente error con MATCHCOMPILER=yes
debe especificar su intérprete de Python a través de PYTHON_INTERPRETER
.
process_begin: CreateProcess(NULL, which python3, ...) failed.
makefile:24: pipe: No error
process_begin: CreateProcess(NULL, which python, ...) failed.
makefile:27: pipe: No error
makefile:30: *** Did not find a Python interpreter. Stop.
sudo apt-get install mingw32
make CXX=i586-mingw32msvc-g++ LDFLAGS= " -lshlwapi " RDYNAMIC= " "
mv cppcheck cppcheck.exe
Además de crear usted mismo en la plataforma de su elección, también hay varias formas de obtener paquetes prediseñados.
Nota: Los paquetes que no son de Windows no son mantenidos por el equipo de Cppcheck sino por los respectivos empaquetadores.
yum
, apt
, pacman
, etc.). Consulte https://pkgs.org/search/?q=cppcheck para obtener una descripción general.brew
). Consulte https://formulae.brew.sh/formula/cppcheck#default. https://cppcheck.sourceforge.io/