1# Cppcheck 2 3| Linux ビルド状態 | Windows ビルド状態 | Coverity Scan Build 状態 | 4|:--:|:--:|:--:| 5| [![Linux ビルド状態](https://img.shields.io/travis/danmar/cppcheck/master.svg?label=Linux%20build)](https://travis-ci.org/danmar/cppcheck) | [![Windows ビルド状態](https://img.shields.io/appveyor/ci/danmar/cppcheck/master.svg?label=Windows%20build)](https://ci.appveyor.com/project/danmar/cppcheck/branch/master) | [![Coverity Scan Build 状態](https://img.shields.io/coverity/scan/512.svg)](https://scan.coverity.com/projects/512) | 6 7## 名前について 8 9このプログラムは元々、"C++check"という名前でしたが後に"Cppcheck"に変更されました。 10 11このような名前ですが、Cppcheckは CとC++の両方に対して設計されています。 12 13## マニュアル 14 15マニュアルは[オンライン上に](https://cppcheck.sourceforge.io/manual.pdf)あります。 16 17## ビルド 18 19C++11に対応したコンパイラが利用できます。部分的にC++11にサポートしたコンパイラも利用できるかもしれません。もし、あなたのコンパイラがVisual Studio 2013や GCC 4.6で利用できるC++11機能がサポートされているなら、そのコンパイラが利用できます。 20 21GUIも利用する場合、Qtライブラリが必要です。 22 23コマンドラインツールをビルドする場合、[PCRE](http://www.pcre.org/)はオプションです。これはルールを作成するために利用します。 24 25コンパイル上の選択肢がいくつかあります。 26* qmake - クロスプラットフォームのビルドツール 27* cmake - クロスプラットフォームのビルドツール 28* Windows: Visual Studio (VS 2013 またはそれ以上) 29* Windows: Qt Creator + mingw 30* gnu make 31* g++ 4.6 (またはそれ以上) 32* clang++ 33 34### cmake 35 36cmakeでCppcheckをコンパイルする例 37 38```shell 39mkdir build 40cd build 41cmake .. 42cmake --build . 43``` 44 45C++標準を指定する必要がある場合次のオプションを指定します。 46-DCMAKE_CXX_STANDARD=11 47 48CppcheckのGUIが必要な場合次のフラグを指定します。 49-DBUILD_GUI=ON 50 51pcreが必要になりますが、正規表現のルールサポートが必要な場合次のフラグを指定します。 52-DHAVE_RULES=ON 53 54### qmake 55 56GUIをビルドするには、gui/gui.proファイルが利用できます。 57 58```shell 59cd gui 60qmake 61make 62``` 63 64### Visual Studio 65 66cppcheck.slnファイルが利用できます。このファイルは、Visual Studio 2019向けです。しかし、このプラットフォームツールセットはこれより新しいバージョンまたは古いバージョン向けに変更できます。このソルーションには、プラットフォームターゲットとしてx86とx64があります。 67 68ルールをコンパイルするためには、"Release-PCRE" または "Debug-PCRE" 設定を選択してください。pcre.lib (または pcre64.lib x64ビルド向け) と pcre.h を /externals にコピーしてください。Visual Studio のための PCRE の最新バージョンは [vcpkg](https://github.com/microsoft/vcpkg) から取得できます。 69 70### Qt Creator + MinGW 71 72コマンドラインツールをビルドするには、PCRE.dllが必要です。これは以下のURLからダウンロードできます。: 73http://software-download.name/pcre-library-windows/ 74 75### GNU make 76 77単純で最適化しないビルド(依存関係なし): 78 79```shell 80make 81``` 82 83推奨するリリースビルド方法: 84 85```shell 86make MATCHCOMPILER=yes FILESDIR=/usr/share/cppcheck HAVE_RULES=yes CXXFLAGS="-O2 -DNDEBUG -Wall -Wno-sign-compare -Wno-unused-function" 87``` 88 89フラグ: 90 911. `MATCHCOMPILER=yes` 92cppcheckの最適化にPythonを使用します。Token::Match パターンはコンパイル時にlC++コードに変換されます。 93 942. `FILESDIR=/usr/share/cppcheck` 95cppcheckの設定ファイル(addon や cfg や platform)を置くディレクトリを指定します。 96 973. `HAVE_RULES=yes` 98ルール機能の有効化 (ルール機能には PCRE が必要です)設定です。 99 1004. `CXXFLAGS="-O2 -DNDEBUG -Wall -Wno-sign-compare -Wno-unused-function"` 101ほとんどのコンパイラの最適化オプション、cppcheckの内部デバッグコードの無効化、基本的なコンパイラ警告の有効化 102 103### g++ (エキスパート向け) 104 105依存関係なく Cppcheckをビルドしたい場合、次のコマンドを利用できます。 106 107```shell 108g++ -o cppcheck -std=c++11 -Iexternals -Iexternals/simplecpp -Iexternals/tinyxml2 -Ilib cli/*.cpp lib/*.cpp externals/simplecpp/simplecpp.cpp externals/tinyxml2/*.cpp 109``` 110 111`--rule` や `--rule-file` を利用する場合、依存ライブラリが必要です。 112 113```shell 114g++ -o cppcheck -std=c++11 -lpcre -DHAVE_RULES -Iexternals -Iexternals/simplecpp -Iexternals/tinyxml2 -Ilib cli/*.cpp lib/*.cpp externals/simplecpp/simplecpp.cpp externals/tinyxml2/*.cpp 115``` 116 117### MinGW 118 119```shell 120mingw32-make LDFLAGS=-lshlwapi 121``` 122 123### その他のコンパイラ/IDE 124 1251. 空のプロジェクトファイル /makefileの作成 1262. cppcheck cli それに lib ディレクトリに含まれる全てのcppファイルをそのプロジェクトファイルまたはmakefileに加えます。 1273. externalsフォルダの全てのcppファイルをプロジェクトファイル / makefileに追加します。 1284. ビルド 129 130### Linux で Win32 コマンドラインバージョンをクロスコンパイル 131 132```shell 133sudo apt-get install mingw32 134make CXX=i586-mingw32msvc-g++ LDFLAGS="-lshlwapi" RDYNAMIC="" 135mv cppcheck cppcheck.exe 136``` 137 138## Webページ 139 140https://cppcheck.sourceforge.io/ 141