リリースウィンドウ | 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 です。
Cppcheck を cmake でコンパイルする例:
mkdir build
cd build
cmake ..
cmake --build .
GUI をコンパイルしたい場合は、フラグを使用できます。 -DBUILD_GUI=ON
ルールのサポート (pcre が必要) の場合は、フラグを使用します。 -DHAVE_RULES=ON
リリース ビルドの場合は、 -DUSE_MATCHCOMPILER=ON を使用することをお勧めします。
テストを構築するにはフラグを使用します。 -DBUILD_TESTS=ON
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 にあることが期待されます。 PCRE for Visual Studio の最新バージョンは、vcpkg を使用して取得できます。
Visual Studio IDE を使用したくない場合は、コマンド ラインから次のコマンドを使用して cppcheck をコンパイルできます。
msbuild cppcheck.sln
MSYS2 をインストールして、g++ および gdb を備えた GNU ツールチェーンを入手します (https://www.msys2.org/)。次の内容を含む settings.json ファイルを .vscode フォルダーに作成します (必要に応じてパスを調整します)。
{
"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 をビルドします。
デバッグのために、次の内容を含む launch.json ファイルを .vscode フォルダーに作成します。このファイルには、cppcheck と missra.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
cppcheck の最適化には Python が使用されます。 Token::Match パターンはコンパイル時に C++ コードに変換されます。
FILESDIR=/usr/share/cppcheck
cppcheck ファイルがインストールされるフォルダーを指定します (アドオン、cfg、プラットフォーム)
HAVE_RULES=yes
ルールを有効にする (これを使用する場合は PCRE が必要です)
CXXFLAGS="-O2 -DNDEBUG -Wall -Wno-sign-compare -Wno-unused-function"
ほとんどのコンパイラの最適化を有効にし、cppcheck-internal デバッグ コードを無効にし、基本的なコンパイラ警告を有効にします。
依存関係なしで 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/