发布窗口 | OSS-模糊 | Coverity 扫描构建状态 | 包括您使用的内容 | 执照 |
---|---|---|---|---|
这个程序原来的名字是“C++check”,后来改成了“Cppcheck”。
尽管有这个名字,Cppcheck 是为 C 和 C++ 设计的。
可以在线获取手册。
Cppcheck 是一个资源有限的业余爱好项目。您可以通过捐赠 CPU(1 核或任意数量)来帮助我们。很简单:
cd cppcheck/
virtualenv .env
.env/bin/pip install -r tools/donate-cpu-requirements.txt
.env/bin/python tools/donate-cpu.py
该脚本将分析 debian 源代码并将结果上传到 cppcheck 服务器。我们需要这些结果来改进 Cppcheck 和检测回归。
您可以随时使用 Ctrl C 停止脚本。
Cppcheck 需要具有(部分)C++11 支持的 C++ 编译器。最低所需版本为 GCC 5.1 / Clang 3.5 / Visual Studio 2015。
要构建 GUI 应用程序,您需要使用 CMake 构建系统。
构建命令行工具时,PCRE 是可选的。如果您按照规则构建,则会使用它。
有多种编译选择:
所需的最低 Python 版本是 3.6。
所需的最低版本是 CMake 3.5。
例如,使用 cmake 编译 Cppcheck:
mkdir build
cd build
cmake ..
cmake --build .
如果你想编译 GUI,你可以使用该标志。 -DBUILD_GUI=开
对于规则支持(需要 PCRE),请使用该标志。 -DHAVE_RULES=开
对于发布版本,建议您使用:-DUSE_MATCHCOMPILER=ON
为了构建测试,请使用该标志。 -DBUILD_TESTS=开
使用 cmake 您可以为 Visual Studio、XCode 等生成项目文件。
对于单配置生成器(例如“Unix Makefiles”),您可以使用以下命令生成和构建特定配置(例如“RelWithDebInfo”):
mkdir build_RelWithDebInfo
cd build_RelWithDebInfo
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
cmake --build . --config RelWithDebInfo
对于多配置生成器(如“Visual Studio 17 2022”),可以使用以下方法实现相同的效果:
mkdir build
cd build
cmake ..
cmake --build . --config RelWithDebInfo
使用 cppcheck.sln 文件。该文件是针对 Visual Studio 2019 配置的,但平台工具集可以轻松更改为旧版本或新版本。该解决方案包含 x86 和 x64 的平台目标。
要使用规则进行编译,请选择“Release-PCRE”或“Debug-PCRE”配置。 pcre.lib(用于 x64 版本的 pcre64.lib)和 pcre.h 预计位于 /externals 中。可以使用 vcpkg 获取适用于 Visual Studio 的 PCRE 的当前版本。
如果您不想使用 Visual Studio IDE,可以从命令行使用以下命令编译 cppcheck。
msbuild cppcheck.sln
安装 MSYS2 以获取带有 g++ 和 gdb 的 GNU 工具链 (https://www.msys2.org/)。在 .vscode 文件夹中创建一个包含以下内容的 settings.json 文件(根据需要调整路径):
{
"terminal.integrated.shell.windows": "C:\msys64\usr\bin\bash.exe",
"terminal.integrated.shellArgs.windows": [
"--login",
],
"terminal.integrated.env.windows": {
"CHERE_INVOKING": "1",
"MSYSTEM": "MINGW64",
}
}
在终端中运行“make”来构建 cppcheck。
为了进行调试,在 .vscode 文件夹中创建一个 launch.json 文件,其中包含以下内容,其中包含用于调试 cppcheck 和 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"
]
}
]
}
构建 CLI 需要 PCRE dll。可以在这里下载:http://software-download.name/pcre-library-windows/
简单、未优化的构建(无依赖项):
make
推荐的发布版本是:
make MATCHCOMPILER=yes FILESDIR=/usr/share/cppcheck HAVE_RULES=yes CXXFLAGS= " -O2 -DNDEBUG -Wall -Wno-sign-compare -Wno-unused-function "
标志:
MATCHCOMPILER=yes
使用Python来优化cppcheck。 Token::Match 模式在编译时转换为 C++ 代码。
FILESDIR=/usr/share/cppcheck
指定安装 cppcheck 文件的文件夹(addons、cfg、platform)
HAVE_RULES=yes
启用规则(如果使用则需要 PCRE)
CXXFLAGS="-O2 -DNDEBUG -Wall -Wno-sign-compare -Wno-unused-function"
启用大多数编译器优化,禁用 cppcheck 内部调试代码并启用基本编译器警告。
如果您只想构建没有依赖项的 Cppcheck,那么您可以使用以下命令:
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
如果您想使用--rule
和--rule-file
那么需要依赖项:
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
如果您在MATCHCOMPILER=yes
时遇到以下错误,您需要通过PYTHON_INTERPRETER
指定您的 Python 解释器。
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
除了在您选择的平台上构建自己之外,还有多种方法可以获得预构建的软件包。
注意:非 Windows 软件包不是由 Cppcheck 团队维护,而是由相应的打包者维护。
yum
、 apt
、 pacman
等)提供 Cppcheck 包。请参阅 https://pkgs.org/search/?q=cppcheck 了解概述。brew
) 获取软件包。请参阅 https://formulae.brew.sh/formula/cppcheck#default。 https://cppcheck.sourceforge.io/