EN JP CN

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

コンパイラとセマンティックアナライザーの動作を制御するためのオプション
オプション 説明
-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-extensionsMicrosoft 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/html/_core_.2f.Za.2c_2f.Ze.asp を参照)。
--disable-multiline-strings複数行のストリングリテラルのサポートを無効にします。複数行のストリングリテラルに対し、デフォルトの Klocwork の動作をオーバーライドするこのオプションを使用します。GCC バージョン 3.0 より前のバージョンでは、複数行のストリングリテラルが使用可能となりましたが、それ以降の GCC では、Visual Studio C++ と同様、それらはサポートされておらず、エラーと警告の両方またはいずれかとなります。このエンジンは、適切な互換モードの自動検出を試みます (GCC-2.x は --enable-multiline-strings、それ以外は --disable-multiline-strings)。--enable-multiline-strings オプションも参照してください。
--disable-wchar_twchar_t 組み込み型を無効にします (MS 方言の C++、バージョン 2005 以降でのみ有意義)
-e std | gnu | ms | arm | ghs | sun | wr | mwコンパイラの互換モードを指定します。詳細については、コンパイラ互換性指摘の処理を参照してください。
--enable-altivecAltiVec サポートを有効にする
--enable-for-scopeスコープ対応の規格準拠を有効にする (Microsoft の方言 C++ についてのみ有意義)."for" ループに対する C++ の動作を標準にする場合は、このオプションを指定します。Microsoft の /Zc:forScope オプションに対する適合性のために追加されています (詳細については、http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcrefzcforscope.asp を参照)。
--enable-multiline-strings複数行のストリングリテラルをサポートします。複数行のストリングリテラルに対し、デフォルトの Klocwork の動作をオーバーライドするこのオプションを使用します。詳細については、--disable-multiline-strings オプションを参照してください。
--enable-wchar_twchar_t 組み込み型を有効にします (Microsoft 方言の C++ でのみ有意義)。"wchart" を組み込み型とコンパイラに強制的に認識させます (デフォルトでは行いません)。Microsoft の /Zc:wchar_t オプションに対する適合性のために追加されています (詳細については、http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vclrfzcwchar_t.asp を参照)。
--encoding <encoding-name>入力ソースファイルのエンコーディングを指定します。ソースファイルにマルチバイト文字が含まれる場合は、このオプションを UTF-8 に指定します (日本語など)。
-FI <file> /FI <file>強制されたインクルードファイルに名前を付けます。Klocwork コンパイラの Windows バージョンでのみ使用できます。-include <file> と同様。互換性のため Microsoft C/C++ コンパイラに追加されています。
--honor-stdC++ "std" キーワードを通常の名前空間として扱います (Windows のデフォルト)。C++ 名前空間の処理方法を参照してください。
-I <dir> /I <dir>インクルードファイルへのパスを指定します。このオプションは再帰的ではありません。必要に応じて、それぞれのサブディレクトリを個別に指定する必要があります。
-idirafter <dir>システムのインクルードパスを指定します
-iframework <dir>フレームワークディレクトリをディレクトリのリストの頭に追加し、ヘッダーファイルが検索されるようにします。これらのディレクトリは、-I オプションにより指定されたものとインターリーブされ、左から右の順にスキャンされます。
--ignore-extension非標準の拡張子とヘッダーファイルでファイルのコンパイルを実行できます。以下に例を挙げます。.h .kc .genc.非標準の拡張子を持つファイルはすべて、C++ ファイルとして扱われます。ファイル拡張子と使用するコンパイラに関する注意を参照してください。
--ignore-options <options>このパラメーターの不明なオプションのリストを無視します。このオプションは、Klocwork コンパイラを makefile で実行していて、ビルド環境に特有なオプションを Klocwork コンパイラに無視させる場合に使用します。構文を以下の例に示します。UNIX の例:make CC="kwcc --ignore-options '-Wall,-O2,-G='" Windows の例 (オプションを二重引用符で囲む必要があります):kwcc --ignore-options "-Wall,-02,-G=" 注 1:無視するオプションに引数がある場合は、等号 (=) を使用してください。複数の引数が必要な場合は、等号の後に引数の数を入力します。次に例を挙げます。=2 (引数が 2 つの場合)。注意 2:-J など、Klocwork がサポートするオプションを無視することはできません。注意 3:引用符に囲まれた不明なオプションは、コマンドラインのいずれの場所に表れるかに関わらず、無視されます (次の --ignore-options オプションだけではありません)。
--ignore-tabsTAB 記号を単一の空白文字として扱います
-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-argva_arg に関連したマクロの特定処理を無効にします
--never-cppプリプロセッサを呼び出さないでください
注: 次のメトリックは、前処理中に計算されます:NOCOMMSECT、LINESCOMM、BYTESCOMM、NOMACROS、NOLOCALINC、NOSYSINC、NO3DPINC、INCLDIRECTIVES、DIRECTIVES。--never-cpp オプションを使用する場合 (前処理ファイルで)、これらのメトリックの値はゼロになります。
-noccデフォルトのデファインとインクルードなしにコンパイルします
--no-honor-stdC++ "std" キーワードを名前空間 (Unix のデフォルト) として扱わないでください。C++ 名前空間の処理方法を参照してください。
--no-path-cacheインクルードディレクトリをキャッシュしません
--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++ 言語のファイルとしてコンパイルします
-trigraphs3 文字表記のサポートを有効にします
-U <macro> /U <macro>指定したマクロ定義を消します
/u定義済みマクロを使用しません。Klocwork コンパイラの Windows バージョンでのみ使用できます。-undef と同様。互換性のため Microsoft C/C++ コンパイラに追加されています。
-undef定義済みマクロを使用しません
--windowsMicrosoft 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.cC コンパイラ
.C、.cc、.CC、.cpp、.CPP、.cxx、.CXX、.c++、.C++C++ コンパイラ
Windows.c、.CC コンパイラ
.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標準
gnuGNU
msVisual C++
armARM
ghsGreen Hills のコンパイラ
sunSun
wrWind River diab
mwMetaware 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++ コンパイラ、kwcc では、ソースファイルの処理方法が自動的に決定されます。このため、C++ の名前空間は、Windows とUnix の両方で適切に処理されます。

Klocwork 使用されている構文の方言に従って、デフォルトの動作が設定されます。構文の方言は、kwcc の -e オプションを使用して設定されます。-e gnu では、デフォルトの std 設定は --no-honor-std です。-e ms-e arm-e std では、デフォルトの std 設定は --honor-std です。

パーサーダイアレクトが設定されていない場合、Klocwork が実行時にパーサーダイアレクトを計算し、それに従って std の値を設定します。Windows では、デフォルトの動作は std と匿名 C++ 名前空間を区別しています。Unix では、デフォルトの動作は std と匿名 C++ 名前空間を組み合わせる必要があります。

これらのデフォルトでは、std 名前空間を GNU gcc コンパイラのバージョン 2.95.3 以前に実装する方法をサポートしています。これらの gcc バージョンでは、std 名前空間はデフォルト (匿名) 名前空間と組み合わせられています。これは、匿名の名前空間で検索されるすべての名前が std 名前空間でも検索され、またその逆も起こるという意味です。さらに、std 名前空間にあるべき特定の STL テンプレートは、gcc ヘッダーの匿名の名前空間にあります。

ただし、デフォルトの設定をオーバーライドすることが必要な場合は、次のオプションの 1 つを --add-compiler-options オプションを介して kwbuildproject に渡すことができます。

  • --honor-std により、kwbuildproject は C++ "std" キーワードを通常の名前空間として扱います。
  • --no-honor-std により、kwbuildproject は C++ "std" キーワードを名前空間として扱いません。