コンパイラとセマンティックアナライザーの動作を制御するためのオプション

オプション 説明
-cc ms | gnu 定義済みコンパイラ構成の1つを指定します:Microsoft cl compiler の ms、gnu compiler の gnu
-cf <compiler-filter-file> コンパイラフィルターファイルを指定します
-D <macro[=value]> /D <macro[=value]> 条件付きコンパイルのためにマクロを指定します。詳細は、次のセクションを参照してください。Klocwork は GNU インラインアセンブラディレクティブを認識して解析するため、-Dオプションを asm、__asm、__asm__ とともに使用する必要はありません。
--disable-ms-extensions Microsoft C/C++ 言語拡張機能を無効にします。Microsoft 指定キーワード (__int8、__cdecl、__try など) が通常の識別子であると Klocwork コンパイラに強制的に認識させます。これは、言語拡張が重要とは考えられずにキーワードが再定義される "pure C/C++" コード (プラットフォーム非依存型ライブラリまたはポータブルな ANSI 準拠コードなど) をコンパイルする場合に役に立ちます。Microsoft の /Za オプションに対する適合性のために追加されています (詳細については、http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore.htm/_core_.2f.Za.2c_2f.Ze.asp を参照)。
--disable-multiline-strings 複数行のストリングリテラルのサポートを無効にします。
--disable-wchar_t wchar_t 組み込み型を無効にします (MS 方言の C++、バージョン 2005 以降でのみ有意義)
-e std | gnu | ms | arm | ghs | sun | wr | mw コンパイラの互換モードを指定します。詳細については、コンパイラ互換性指摘の処理を参照してください。
--enable-altivec AltiVec サポートを有効にする
--enable-for-scope スコープ対応の規格準拠を有効にする (Microsoft の方言 C++ についてのみ有意義)."for" ループに対する C++ の動作を標準にする場合は、このオプションを指定します。Microsoft の /Zc:forScope オプションに対する適合性のために追加されています (詳細については、http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore.htm/vcrefzcforscope.asp を参照)。
--enable-multiline-strings 複数行のストリングリテラルのサポートを有効にします。
--enable-wchar_t wchar_t 組み込み型を有効にします (Microsoft 方言の C++ でのみ有意義)。"wchart" を組み込み型とコンパイラに強制的に認識させます (デフォルトでは行いません)。Microsoft の /Zc:wchar_t オプションに対する適合性のために追加されています (詳細については、http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore.htm/vclrfzcwchar_t.asp を参照)。
--encoding <encoding-name> 入力ソースファイルのエンコーディングを指定します。ソースファイルにマルチバイト文字が含まれる場合は、このオプションを UTF-8 に指定します (日本語など)。
-FI <file> /FI <file> 強制されたインクルードファイルに名前を付けます。Klocwork コンパイラの Windows バージョンでのみ使用できます。-include <file> と同様。互換性のため Microsoft C/C++ コンパイラに追加されています。
--honor-std C++ "std" キーワードを通常の名前空間として扱います (Windows のデフォルト)。
-I <dir> /I <dir> インクルードファイルへのパスを指定します。このオプションは再帰的ではありません。必要に応じて、それぞれのサブディレクトリを個別に指定する必要があります。
-idirafter <dir> システムのインクルードパスを指定します
-iframework <dir> フレームワークディレクトリをディレクトリのリストの先頭部に追加し、ヘッダーファイルが検索されるようにします。これらのディレクトリは、-I オプションで指定したものとインターリーブされ、左から右の順にスキャンされます。
--ignore-extension 非標準の拡張子とヘッダーファイルでファイルのコンパイルを実行できます。以下に例を挙げます。.h .kc .genc.非標準の拡張子を持つファイルはすべて、C++ ファイルとして扱われます。ファイル拡張子と使用するコンパイラに関する注意を参照してください。
--ignore-tabs TAB 記号を単一の空白文字として扱います
-imacros <file> <file> のマクロの定義を受け入れます。ファイルへのフルパスを指定する必要があります。ファイルには、標準形式の #define から始まるマクロ定義が行ごとに 1 つ含まれる必要があります。
-include <file> 他のファイルの前に <file> の内容を含みます。ファイルへのフルパスを指定する必要があります。ファイルには、標準形式の #include から始まるインクルードステートメントが行ごとに 1 つ含まれる必要があります。
--import-dir <dir> #import プライマリヘッダーの検索パスを指定します
--instantiation-depth <value> 最大のインスタンス化の深さのネスティングを指定します。このオプションにより、インスタンス化の最大の深さ、つまり、Klocwork がインスタンス化のテンプレートを停止する深さを指定できます。テンプレートの一部は、入れ子になったテンプレートを持つ場合があります。外側のテンプレートがインスタンス化されると、入れ子になったテンプレートもインスタンス化されます。パラメーター、<value> は、インスタンス化されたテンプレートの最大の入れ子レベルを指定する整数です。デフォルトでは、入れ子になったテンプレートは 50 の深さにインスタンス化されます。
-iprefix <prefix> -iwithprefix-iwithprefixbefore インクルードパスの接頭辞を指定します
-iquote 非システムのインクルードパスを指定します
-isysroot <dir> インクルードパスのルートディレクトリを指定します
-isystem <dir> -J <dir> システムインクルードディレクトリへのパスを指定します。Klocwork は、コード行を数えません。また、これらのファイルの指摘もレポートしません。

NFS の一般的な projects_root ディレクトリにアクセスしている場合、システムインクルードへのパスがインストールされたホストマシンと異なると、コンパイルの結果は異なります。これは、このオプションのパスを明示的に指定することで防ぐことができます。

-iwithprefix <subpath> システムのインクルードパスを接頭辞なしで指定します
-iwithprefixbefore <subpath> 非システムのインクルードパスを接頭辞なしで指定します
--keep-va-arg va_arg に関連したマクロの特定処理を無効にします
--never-cpp プリプロセッサを呼び出さないでください

次のメトリックは、前処理中に計算されます: NOCOMMSECT、LINESCOMM、BYTESCOMM、NOMACROS、NOLOCALINC、NOSYSINC、NO3DPINC、INCLDIRECTIVES、DIRECTIVES。--never-cpp オプションを使用する場合 (前処理ファイルで)、これらのメトリックの値はゼロになります。

-nocc デフォルトのデファインとインクルードなしにコンパイルします
--no-honor-std C++ "std" キーワードを名前空間 (Unix のデフォルト) として扱わないでください。
--no-lef, -n Klocwork 指摘検出段階を実行しません
--no-path-cache インクルードディレクトリをキャッシュしません
--no-resolve デフォルトでは、kwbuildproject はシンボリックリンクを解決します。 このオプションを指定すると、ファイルへのシンボリックリンクはプロジェクト用に解決されませんが、ディレクトリへのシンボリックリンクは解決されます。
--no-resolve-path デフォルトでは、kwbuildproject はシンボリックリンクを解決します。 このオプションを指定しても、プロジェクトに対してシンボリックリンクは解決されません。
-nostdinc システムインクルードを検索しません
--pack-struct= <alignment> アライメントの最大値を指定します。Klocwork は、この値が負ではない整数で、2 の累乗であることを検証します。1、2、4、8、16
--override-file <file> ファイルのオーバーライドを指定します。C/C++ 解析のチューニング を参照してください。
--size-of-types <file> 指定した "size-of-types" ファイルを使用して、次のメトリックを計算します。BYTESGLDATADECL、BTYESDATADECL、BYTESLOCDECL、BYTESPARMS、BYTESPAROTHER。システムで型のサイズがデフォルトと同じ場合、このファイルを作成して使用する必要はありません。詳細については、組み込み型のサイズの指定を参照してください。
--sysroot=<dir> インクルードパスのルートディレクトリを指定します
--target-platform ターゲットプラットフォームを指定します (デフォルトの knowledge base (ナレッジベース) の設定を定義)
-Tc <file> /Tc <file> このファイルを C 言語のファイルとしてコンパイルします
-TC /TC すべてのファイルを C 言語のファイルとしてコンパイルします
-Tp <file> /Tp <file> このファイルを C++ 言語のファイルとしてコンパイルします
-TP /TP すべてのファイルを C++ 言語のファイルとしてコンパイルします
-trigraphs 3 文字表記のサポートを有効にします
-U <macro> /U <macro> 指定したマクロ定義を消します
/u 定義済みマクロを使用しません。Klocwork コンパイラの Windows バージョンでのみ使用できます。-undef と同様。互換性のため Microsoft C/C++ コンパイラに追加されています。
-undef 定義済みマクロを使用しません
--windows Microsoft Windows のソースコードをパースするための規則を有効にします (Windows プラットフォームを実行している場合はデフォルト)。このオプションは、-e オプションをオーバーライドします。コンパイラ互換性指摘の処理を参照してください。
-x <language> 入力ファイルの言語を指定します。ソースファイルに使用するデフォルトコンパイラを変更する場合 (C または C++)、このオプションを使用して言語を設定します。"c" を C コンパイラに使用し、"c++" または "cxx" のいずれかを C++ コンパイラに使用します。ファイル拡張子と使用するコンパイラに関する注意も参照してください。
-X /X システムインクルードを検索しません。Klocwork コンパイラの Windows バージョンでのみ使用できます。-nostdinc と同様。互換性のため Microsoft C/C++ コンパイラに追加されています。
-Zc:<arg> /Zc:<arg> <arg> が forScope または wchar_t[-] のいずれかになることができる C++ 言語の適合性

使用するファイル拡張子とコンパイラに関する注意

以下のテーブルを確認して、デフォルトでソースファイルにどのコンパイラが使用されるかを特定します。

プラットフォーム ファイルの拡張子 デフォルトコンパイラ
UNIX .c C コンパイラ
.C、.cc、.CC、.cpp、.CPP、.cxx、.CXX、.c++、.C++ C++ コンパイラ
Windows .c、.C C コンパイラ
.cc、.CC、.cpp、.CPP、.cxx、.CXX、.c++、.C++ C++ コンパイラ

デフォルトコンパイラを変更するには、入力ファイルの言語を指定できる -x コンパイラオプションを使用します。コンパイラとセマンティックアナライザーの動作を制御するためのオプションを参照してください。

ソースファイルに上のテーブルに表示されない拡張子がある場合、--ignore-extension コンパイラオプションを使用します。C++ コンパイラは、非標準的な拡張子を持つすべてのファイルに使用されます。コンパイラとセマンティックアナライザーの動作を制御するためのオプションを参照してください。

コンパイラ互換性指摘の処理

Klocwork コンパイラは、Windows と UNIX 上でコンパイルが異なります。Windows では、デフォルトのコンパイラは CL です (Microsoft Visual Studio C/C++ コンパイラ)。UNIX では、デフォルトのコンパイラは GNU gcc (C の場合) とg++ です (C++ の場合)。

-e--windows コンパイラオプションでは、コンパイラ互換性指摘に対応しています。

  • -e オプションでは、コンパイラの互換モードを指定して、使用するパーサーを制御します。
  • --windows オプションにより、Windows ソースファイルの規則のパースが有効になります (-e オプションをオーバーライド)。
コンパイラの互換モード Klocwork がサポートする次の拡張子を有効にします。
std 標準
gnu GNU
ms Visual C++
arm ARM
ghs Green Hills のコンパイラ
sun Sun
wr Wind River diab
mw Metaware ARC

ソースファイルを Unix でコンパイルしている場合、--windows オプションにより次が有効になります。

  • Klocwork がサポートする Visual C++ 拡張子 (設定 -e ms と同等)
  • Windows 特定マクロ。--windows が定義する Visual C++ 特定マクロは、_WIN32、_M_IX86、_MSC_VER です。
  • プリプロセッサのインクルードファイルの大文字と小文字を区別しない検索。Visual C++ を Unix でクロスコンパイルする場合、大文字と小文字を区別しないことが要求されます。これは、Windows では必要ありません (Klocwork コンパイラの Windows バージョンでは有効になりません)。

C++ 名前空間の処理方法

Klocwork C/C++ コンパイラは、ソースファイルの処理方法が自動的に決定されます。このため、C++ の名前空間は、Windows と Unix の両方で適切に処理されます。

Klocwork では、コンパイラが使用する構文の方言に従って、デフォルトの動作が設定されます。