jendela rilis | OSS-Fuzz | Status Pembuatan Pemindaian Cakupan | sertakan-apa-yang-Anda-gunakan | Lisensi |
---|---|---|---|---|
Nama asli program ini adalah "C++check", namun kemudian diubah menjadi "Cppcheck".
Terlepas dari namanya, Cppcheck dirancang untuk C dan C++.
Panduan tersedia online.
Cppcheck adalah proyek hobi dengan sumber daya terbatas. Anda dapat membantu kami dengan mendonasikan CPU (1 core atau sebanyak yang Anda suka). Sederhana saja:
cd cppcheck/
virtualenv .env
.env/bin/pip install -r tools/donate-cpu-requirements.txt
.env/bin/python tools/donate-cpu.py
Skrip akan menganalisis kode sumber debian dan mengunggah hasilnya ke server cppcheck. Kami memerlukan hasil ini untuk meningkatkan Cppcheck dan mendeteksi regresi.
Anda dapat menghentikan skrip kapan pun Anda mau dengan Ctrl C.
Cppcheck memerlukan kompiler C++ dengan dukungan (sebagian) C++11. Versi minimum yang diperlukan adalah GCC 5.1/Clang 3.5/Visual Studio 2015.
Untuk membangun aplikasi GUI, Anda perlu menggunakan sistem build CMake.
Saat membuat alat baris perintah, PCRE bersifat opsional. Ini digunakan jika Anda membangun dengan aturan.
Ada beberapa pilihan kompilasi:
Versi Python minimum yang diperlukan adalah 3.6.
Versi minimum yang diperlukan adalah CMake 3.5.
Contoh, kompilasi Cppcheck dengan cmake:
mkdir build
cd build
cmake ..
cmake --build .
Jika Anda ingin mengkompilasi GUI Anda dapat menggunakan flag. -DBUILD_GUI=AKTIF
Untuk dukungan aturan (membutuhkan pcre) gunakan flag. -DHAVE_RULES= AKTIF
Untuk versi rilis disarankan agar Anda menggunakan: -DUSE_MATCHCOMPILER=ON
Untuk membuat pengujian, gunakan bendera. -DBUILD_TESTS= AKTIF
Menggunakan cmake Anda dapat menghasilkan file proyek untuk Visual Studio, XCode, dll.
Untuk generator konfigurasi tunggal (seperti "Unix Makefiles") Anda dapat membuat dan membangun konfigurasi tertentu (misalnya "RelWithDebInfo") menggunakan:
mkdir build_RelWithDebInfo
cd build_RelWithDebInfo
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
cmake --build . --config RelWithDebInfo
Untuk generator multi-konfigurasi (seperti "Visual Studio 17 2022") hal yang sama dapat dicapai dengan menggunakan:
mkdir build
cd build
cmake ..
cmake --build . --config RelWithDebInfo
Gunakan file cppcheck.sln. File ini dikonfigurasi untuk Visual Studio 2019, tetapi perangkat platform dapat diubah dengan mudah ke versi yang lebih lama atau lebih baru. Solusinya berisi target platform untuk x86 dan x64.
Untuk mengkompilasi dengan aturan, pilih konfigurasi "Release-PCRE" atau "Debug-PCRE". pcre.lib (pcre64.lib untuk build x64) dan pcre.h diharapkan ada di /externals. Versi PCRE untuk Visual Studio saat ini dapat diperoleh menggunakan vcpkg.
Jika Anda tidak ingin menggunakan Visual Studio IDE, Anda dapat mengkompilasi cppcheck dari baris perintah dengan perintah berikut.
msbuild cppcheck.sln
Instal MSYS2 untuk mendapatkan GNU toolchain dengan g++ dan gdb (https://www.msys2.org/). Buat file settings.json di folder .vscode dengan konten berikut (sesuaikan jalur seperlunya):
{
"terminal.integrated.shell.windows": "C:\msys64\usr\bin\bash.exe",
"terminal.integrated.shellArgs.windows": [
"--login",
],
"terminal.integrated.env.windows": {
"CHERE_INVOKING": "1",
"MSYSTEM": "MINGW64",
}
}
Jalankan "make" di terminal untuk membangun cppcheck.
Untuk debugging, buat file launch.json di folder .vscode dengan konten berikut, yang mencakup konfigurasi untuk debugging cppcheck dan 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"
]
}
]
}
PCRE dll diperlukan untuk membangun CLI. Itu dapat diunduh di sini: http://software-download.name/pcre-library-windows/
Build sederhana dan tidak dioptimalkan (tidak ada ketergantungan):
make
Versi rilis yang direkomendasikan adalah:
make MATCHCOMPILER=yes FILESDIR=/usr/share/cppcheck HAVE_RULES=yes CXXFLAGS= " -O2 -DNDEBUG -Wall -Wno-sign-compare -Wno-unused-function "
Bendera:
MATCHCOMPILER=yes
Python digunakan untuk mengoptimalkan cppcheck. Pola Token::Match diubah menjadi kode C++ pada waktu kompilasi.
FILESDIR=/usr/share/cppcheck
Tentukan folder tempat file cppcheck diinstal (addons, cfg, platform)
HAVE_RULES=yes
Aktifkan aturan (PCRE diperlukan jika ini digunakan)
CXXFLAGS="-O2 -DNDEBUG -Wall -Wno-sign-compare -Wno-unused-function"
Mengaktifkan sebagian besar pengoptimalan kompiler, menonaktifkan kode debug internal cppcheck, dan mengaktifkan peringatan kompiler dasar.
Jika Anda hanya ingin membangun Cppcheck tanpa ketergantungan maka Anda dapat menggunakan perintah ini:
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
Jika Anda ingin menggunakan --rule
dan --rule-file
maka diperlukan dependensi:
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
Jika Anda mengalami kesalahan berikut dengan MATCHCOMPILER=yes
Anda perlu menentukan juru bahasa Python Anda melalui 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
Selain membangun diri Anda sendiri pada platform pilihan Anda, ada juga beberapa cara untuk mendapatkan paket siap pakai.
Catatan: Paket non-Windows tidak dikelola oleh tim Cppcheck tetapi oleh masing-masing pembuat paket.
yum
, apt
, pacman
, dll.). Lihat https://pkgs.org/search/?q=cppcheck untuk ikhtisarnya.brew
). Lihat https://formulae.brew.sh/formula/cppcheck#default. https://cppcheck.sourceforge.io/