發布視窗 | 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/