EN JP CN

build trace (ビルドトレース) を使用した build specification (ビルドスペック) の問題のトラブルシューティング

build trace (ビルドトレース) を使用した build specification (ビルドスペック) の問題のトラブルシューティング

build trace (ビルドトレース) を使用した build specification (ビルドスペック) の問題のトラブルシューティング

build trace (ビルドトレース) を使用した build specification (ビルドスペック) の問題のトラブルシューティング

kwinject を使用して build trace (ビルドトレース) を生成することができます。 build trace (ビルドトレース) は、C/C++ ビルド時に発生したプロセス呼び出しのシーケンスを含むファイルです。

build trace (ビルドトレース) は以下の場合に役立ちます。

  • コンパイラの正確な名前を特定する場合。 kwinject は、ビルド設定をキャプチャするためにコンパイラの正確な名前を必要とします。
  • ファイルの欠落、インクルードファイルの欠落、バージョン行のみを含む build specification (ビルドスペック) など、build specification (ビルドスペック) での問題を診断する場合。

build trace (ビルドトレース)

C/C++ のビルド時に発生したプロセス呼び出しのシーケンスを含むファイル。C/C++ build specification (ビルドスペック) の生成に関するトラブルシューティングの中間手順として、kwinject により生成できます。

方法の詳細については、build trace (ビルドトレース) を使用した build specification (ビルドスペック) の問題のトラブルシューティングを参照してください。

参照項目: build trace (ビルドトレース) ファイルの形式

build trace (ビルドトレース) の生成

kwinject [options] --trace-out <trace_file> <build_command>

フィールド

  • <trace_file> は出力追跡ファイルです。
  • <build_command> は make などのビルドコマンドです。

build trace (ビルドトレース) の例

build trace (ビルドトレース) ファイルの例からの抜粋を次に示します。

{"version":100} 
{"creator":"kwinject, version 2017.0"}
{"env":{"LIBGL_DRIVERS":"/usr/lib/fglrx/dri:/usr/lib32/dri", "MAKEFLAGS": " --jobserver-fds=3"}}
{"id":26008,"parent_id":-1,"work_dir":"/space/zlib-1.2.8","executable":"/space/gcc-4.9.0/bin/gcc","args":["gcc","-D_LARGEFILE64_SOURCE=1","-DHAVE_HIDDEN","-c","crc32.c"],"env-diff":{"ANT_HOME":"/opt/apache-ant-1.7","COLORTERM":"gnome-terminal","JAVA_HOME":"/opt/sun-jdk-1.6","LANG":"en_US.UTF-8"}}
{"id":26008,"parent_id":-1,"work_dir":"/space/zlib-1.2.8","executable":"/space/gcc-4.9.0/bin/gcc","args":["gcc","-D_LARGEFILE64_SOURCE=1","-DHAVE_HIDDEN","-c","foo.c"],"env-diff":{"ANT_HOME":"/opt/apache-ant-1.7","COLORTERM":"gnome-terminal","JAVA_HOME":"/opt/sun-jdk-1.6","LANG":"en_US.UTF-8"}}
...
{"id":26008,"parent_id":-1,"work_dir":"/space/zlib-1.2.8","executable":"/space/gcc-4.9.0/bin/gcc","args":["gcc","-D_LARGEFILE64_SOURCE=1","-DHAVE_HIDDEN","-c","bar32.c"],"env-diff":{"ANT_HOME":"/opt/apache-ant-1.7","COLORTERM":"gnome-terminal","JAVA_HOME":"/opt/sun-jdk-1.6","LANG":"en_US.UTF-8"}}

build trace (ビルドトレース) ファイルの形式とその他の例については、build trace (ビルドトレース) ファイルの形式を参照してください。

build trace (ビルドトレース) でのコンパイラ名とリンカー名の確認

通常、追跡ファイルではコンパイラ名とリンカー名は複数回出現します。コンパイラ/リンカーツールチェーンではなく、ルートコンパイラ/リンカーの名前を特定する必要があります。

コンパイラ名を見つけるには、ビルド中のファイルの名前 (.c または .cpp 拡張子付きのファイル) を検索します。

次の例では、コンパイラ名は g++ です。

{
  "id": 5396,
  "parentid": 6024,
  "workdir": "C:\\tutorial\\npp\\PowerEditor\\src",
  "executable": "C:\\Perl64\\site\\bin\\g++.exe",
  "args": [
    "g++",
    "foo.cpp"
  ],

build trace (ビルドトレース) の詳細な例については、build trace (ビルドトレース) ファイルの形式を参照してください。

コンパイラが kwinject によって認識されるかどうかの確認

コンパイラ/リンカー名を特定したら、その名前をビルド統合でサポートされる C/C++ コンパイラのリストで確認してください。

コンパイラがサポートされているかどうかにより、次のように対応します。

build trace (ビルドトレース) の build specification (ビルドスペック) への変換

build trace (ビルドトレース) を build specification (ビルドスペック) に変換するには

kwinject [options] --trace-in <trace_file>

フィールド<trace_file> は入力追跡ファイルです。

次は何?

build specification (ビルドスペック) の作成が完了したので、いつでも C/C++ 統合ビルド解析を実行 することができます。

分散ビルドを実行している場合は、分散 Klocwork C/C++ 解析の実行 を参照してください。

build trace (ビルドトレース) ファイルの形式

build trace (ビルドトレース) ファイルは、C/C++ ビルドのログで、フィルターされていない実行追跡です。 これを kwinject で処理して build specification (ビルドスペック) を生成できます。build trace (ビルドトレース) ファイルは、JSON ファイル形式で出力されます。ファイルには以下が含まれています。

  • バージョンと作成者情報
  • ビルドで起動したコマンド
  • コマンドライン引数と環境変数
  • コマンドを実行した作業ディレクトリ

ルートレベルフィールド

JSON ファイルの最上位には、トレースファイルに関する基本情報のほかに、env オブジェクトと 1 つ以上の id オブジェクト (または event オブジェクト) が含まれています。最上位オブジェクト (versioncreatortop-level env、または id) はそれぞれ、単一の独立した行に記述する必要があります。Versioncreator、および env はそのイベントの前にリストしてください。下記は、代表的な JSON build trace (ビルドトレース) ファイルのルートレベルの例です。

{"version":101} 
{"creator":"kwinject, version 10.1.1"}
{"env":{"LIBGL_DRIVERS":"/usr/lib/fglrx/dri:/usr/lib32/dri", "MAKEFLAGS": " --jobserver-fds=3"}}
{"id":26008,"parent_id":-1,"work_dir":"/space/zlib-1.2.8","executable":"/space/gcc-4.9.0/bin/gcc","args":["gcc","-D_LARGEFILE64_SOURCE=1","-DHAVE_HIDDEN","-c","crc32.c"],"env-diff":{"ANT_HOME":"/opt/apache-ant-1.7","COLORTERM":"gnome-terminal","JAVA_HOME":"/opt/sun-jdk-1.6","LANG":"en_US.UTF-8"}}
{"id":26008,"parent_id":-1,"work_dir":"/space/zlib-1.2.8","executable":"/space/gcc-4.9.0/bin/gcc","args":["gcc","-D_LARGEFILE64_SOURCE=1","-DHAVE_HIDDEN","-c","foo.c"],"env-diff":{"ANT_HOME":"/opt/apache-ant-1.7","COLORTERM":"gnome-terminal","JAVA_HOME":"/opt/sun-jdk-1.6","LANG":"en_US.UTF-8"}}
...
{"id":26008,"parent_id":-1,"work_dir":"/space/zlib-1.2.8","executable":"/space/gcc-4.9.0/bin/gcc","args":["gcc","-D_LARGEFILE64_SOURCE=1","-DHAVE_HIDDEN","-c","bar32.c"],"env-diff":{"ANT_HOME":"/opt/apache-ant-1.7","COLORTERM":"gnome-terminal","JAVA_HOME":"/opt/sun-jdk-1.6","LANG":"en_US.UTF-8"}}

フィールドは次のとおりです。

フィールド 説明
versionbuild trace (ビルドトレース) ファイルのバージョン。バージョンは、小数点を使って計算されます。101 (現在のバージョン) はバージョン 1.1 と同等です。たとえば、203 はバージョン 2.3 と同等です。
作成者(オプション) トレースファイルを作成したツールの名前を表す文字列。kwinjectkwlogparserkwwrap など。
env環境変数を含んでいるオブジェクト。最初のプロセスが実行される前の、システム上のすべての環境変数を表します。
idシステムイベントをキャプチャするために使用した 1 つ以上の id オブジェクト。詳細については、次を参照してください。

id (event) オブジェクト

id オブジェクトには、ビルドの一環として発生する実際のシステム実行イベントに関する情報が含まれています。ビルドの一環として発生するプロセスおよびサブプロセスごとに新しい id オブジェクトが作成されます。

フィールドは次のとおりです。

フィールド 説明
idイベントの一意の ID。
parent_idこのイベントを発生させたイベントの ID。この ID が指定されていない場合、最上位プロセスがこのイベントの親と想定されます。
work_dir実行時の現在の作業ディレクトリ。
実行可能ファイル実行可能ファイルのフルパス (/usr/bin/gcc など)。
argsargv[0] など、コマンドライン引数を含んでいる配列。 通常、これは executable フィールドです。
env-diff(オプション) 現在の環境で変更された環境変数のリストを含んでいるオブジェクト。このフィールドには、システムレベルの環境変数と親および子プロセス間の相違が反映されます。新しい変数と、既存の変数の変更された値は、"name" :"value" です。削除された変数は null 値によって表現されます。

次の例は、kwinject によって作成された完全な build trace (ビルドトレース) ファイルを示しています。このコードは、foo.cpp という簡素な C++ ファイルをコンパイルする g++ コンパイラによる出力をキャプチャします。

{
  "version": 100,
  "creator": "kwinject, version 2017.0",
  "env": {
    "ALLUSERSPROFILE": "C:\\ProgramData",
    "ANT_HOME": "C:\\apache-ant-1.8.4",
    "APPDATA": "C:\\Users\\jdoe\\AppData\\Roaming",
    "ASL.LOG": "Destination=file",
    "COMMONPROGRAMFILES": "C:\\Program Files (x86)\\Common Files",
    "COMMONPROGRAMFILES(X86)": "C:\\Program Files (x86)\\Common Files",
    "COMMONPROGRAMW6432": "C:\\Program Files\\Common Files",
    "COMPUTERNAME": "JDOE2",
    "COMSPEC": "C:\\Windows\\system32\\cmd.exe",
    "FP_NO_HOST_CHECK": "NO",
    "HOMEDRIVE": "C:",
    "HOMEPATH": "\\Users\\jdoe",
    "JAVA_HOME": "C:\\Program Files\\Java\\jdk1.7.0_07",
    "LOCALAPPDATA": "C:\\Users\\jdoe\\AppData\\Local",
    "LOGONSERVER": "\\\\SERVER01",
    "NUMBER_OF_PROCESSORS": "4",
    "OS": "Windows_NT",
    "PATH": "C:\\Klocwork\\Server 2017\\bin;C:\\Program Files\\CollabNet\\Subversion Client;C:\\Perl64\\site\\bin;C:\\Perl64\\bin;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\apache-ant-1.8.4\\bin;C:\\Program Files\\jEdit;C:\\Program Files (x86)\\BaseX\\bin;c:\\Program Files (x86)\\Microsoft SQL Server\\90\\Tools\\binn\\;C:\\Program Files (x86)\\Microsoft Visual Studio 2008 SDK\\VisualStudioIntegration\\Tools\\Sandcastle\\ProductionTools\\;C:\\Python26;C:\\Program Files (x86)\\Microsoft Visual Studio 2017\\VC\\bin;C:\\bin\\curl.exe",
    "PATHEXT": ".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC",
    "PROCESSOR_ARCHITECTURE": "x86",
    "PROCESSOR_ARCHITEW6432": "AMD64",
    "PROCESSOR_IDENTIFIER": "Intel64 Family 6 Model 58 Stepping 9, GenuineIntel",
    "PROCESSOR_LEVEL": "6",
    "PROCESSOR_REVISION": "3a09",
    "PROGRAMDATA": "C:\\ProgramData",
    "PROGRAMFILES": "C:\\Program Files (x86)",
    "PROGRAMFILES(X86)": "C:\\Program Files (x86)",
    "PROGRAMW6432": "C:\\Program Files",
    "PROMPT": "$P$G",
    "PSMODULEPATH": "C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules\\",
    "PUBLIC": "C:\\Users\\Public",
    "SESSIONNAME": "Console",
    "SYSTEMDRIVE": "C:",
    "SYSTEMROOT": "C:\\Windows",
    "TEAMCITY_DATA_PATH": "C:\\ProgramData\\JetBrains\\TeamCity",
    "TEMP": "C:\\Users\\jdoe\\AppData\\Local\\Temp",
    "TFS_DIR": "C:\\Program Files\\ThinkVantage Fingerprint Software\\",
    "TMP": "C:\\Users\\jdoe\\AppData\\Local\\Temp",
    "USERDNSDOMAIN": "COMPANY.COM",
    "USERDOMAIN": "WORKGROUP",
    "USERNAME": "jdoe",
    "USERPROFILE": "C:\\Users\\jdoe",
    "VS100COMNTOOLS": "c:\\Program Files (x86)\\Microsoft Visual Studio 2017\\Common7\\Tools\\",
    "VS90COMNTOOLS": "c:\\Program Files (x86)\\Microsoft Visual Studio 9.0\\Common7\\Tools\\",
    "VSSDK90INSTALL": "C:\\Program Files (x86)\\Microsoft Visual Studio 2008 SDK\\",
    "WINDIR": "C:\\Windows",
    "WINDOWS_TRACING_FLAGS": "3",
    "WINDOWS_TRACING_LOGFILE": "C:\\BVTBin\\Tests\\installpackage\\csilogfile.log"
  },
  "events": [
    {
      "id": 5396,
      "parentid": 6024,
      "workdir": "C:\\tutorial\\npp\\PowerEditor\\src",
      "executable": "C:\\Perl64\\site\\bin\\g++.exe",
      "args": [
        "g++",
        "foo.cpp"
      ],
      "env-diff": {
        "=::": "::\\",
        "=C:": "C:\\tutorial\\npp\\PowerEditor\\src",
        "=EXITCODE": "00000001",
        "COMMONPROGRAMFILES": "C:\\Program Files\\Common Files",
        "KW_INST_DIR": "C:\\Klocwork\\Server 2017\\",
        "MSBUILDDISABLENODEREUSE": "1",
        "PROCESSOR_ARCHITECTURE": "AMD64",
        "PROCESSOR_ARCHITEW6432": null,
        "PROGRAMFILES": "C:\\Program Files"
      }
    },
    {
      "id": 2520,
      "parentid": 5396,
      "workdir": "C:\\tutorial\\npp\\PowerEditor\\src",
      "executable": "C:\\Perl64\\site\\lib\\auto\\MinGW\\bin\\g++.exe",
      "args": [
        "C:\\Perl64\\site\\lib\\auto\\MinGW\\bin\\g++.exe",
        "foo.cpp"
      ],
      "env-diff": {
        "COMMONPROGRAMFILES": "C:\\Program Files (x86)\\Common Files",
        "PROCESSOR_ARCHITECTURE": "x86",
        "PROCESSOR_ARCHITEW6432": "AMD64",
        "PROGRAMFILES": "C:\\Program Files (x86)"
      }
    },
    {
      "id": 6704,
      "parentid": 2520,
      "workdir": "C:\\tutorial\\npp\\PowerEditor\\src",
      "executable": "c:\\perl64\\site\\lib\\auto\\mingw\\bin\\..\\libexec\\gcc\\x86_64-w64-mingw32\\4.5.4\\cc1plus.exe",
      "args": [
        "c:/perl64/site/lib/auto/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/4.5.4/cc1plus.exe",
        "-quiet",
        "-iprefix",
        "c:\\perl64\\site\\lib\\auto\\mingw\\bin\\../lib/gcc/x86_64-w64-mingw32/4.5.4/",
        "-isysroot",
        "c:\\perl64\\site\\lib\\auto\\mingw\\bin\\../../mingw64",
        "foo.cpp",
        "-quiet",
        "-dumpbase",
        "foo.cpp",
        "-mtune=generic",
        "-march=x86-64",
        "-auxbase",
        "foo",
        "-o",
        "C:\\Users\\jdoe\\AppData\\Local\\Temp\\ccUkGgFd.s"
      ],
      "env-diff": {
        "COLLECT_GCC": "C:\\Perl64\\site\\lib\\auto\\MinGW\\bin\\g++.exe",
        "COLLECT_GCC_OPTIONS": "'-shared-libgcc' '-mtune=generic' '-march=x86-64'",
        "COLLECT_LTO_WRAPPER": "c:/perl64/site/lib/auto/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/4.5.4/lto-wrapper.exe",
        "COMMONPROGRAMFILES": "C:\\Program Files\\Common Files",
        "GCC_EXEC_PREFIX": "c:\\perl64\\site\\lib\\auto\\mingw\\bin\\../lib/gcc/",
        "PROCESSOR_ARCHITECTURE": "AMD64",
        "PROCESSOR_ARCHITEW6432": null,
        "PROGRAMFILES": "C:\\Program Files"
      }
    },
    {
      "id": 8924,
      "parentid": 2520,
      "workdir": "C:\\tutorial\\npp\\PowerEditor\\src",
      "executable": "c:\\perl64\\site\\lib\\auto\\mingw\\bin\\..\\lib\\gcc\\x86_64-w64-mingw32\\4.5.4\\..\\..\\..\\..\\x86_64-w64-mingw32\\bin\\as.exe",
      "args": [
        "c:/perl64/site/lib/auto/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.4/../../../../x86_64-w64-mingw32/bin/as.exe",
        "-o",
        "C:\\Users\\jdoe\\AppData\\Local\\Temp\\cc3VdMAp.o",
        "C:\\Users\\jdoe\\AppData\\Local\\Temp\\ccUkGgFd.s"
      ],
      "env-diff": {
        "COLLECT_GCC": "C:\\Perl64\\site\\lib\\auto\\MinGW\\bin\\g++.exe",
        "COLLECT_GCC_OPTIONS": "'-shared-libgcc' '-mtune=generic' '-march=x86-64'",
        "COLLECT_LTO_WRAPPER": "c:/perl64/site/lib/auto/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/4.5.4/lto-wrapper.exe",
        "COMMONPROGRAMFILES": "C:\\Program Files\\Common Files",
        "GCC_EXEC_PREFIX": "c:\\perl64\\site\\lib\\auto\\mingw\\bin\\../lib/gcc/",
        "PROCESSOR_ARCHITECTURE": "AMD64",
        "PROCESSOR_ARCHITEW6432": null,
        "PROGRAMFILES": "C:\\Program Files"
      }
    },
    {
      "id": 7824,
      "parentid": 2520,
      "workdir": "C:\\tutorial\\npp\\PowerEditor\\src",
      "executable": "c:\\perl64\\site\\lib\\auto\\mingw\\bin\\..\\libexec\\gcc\\x86_64-w64-mingw32\\4.5.4\\collect2.exe",
      "args": [
        "c:/perl64/site/lib/auto/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/4.5.4/collect2.exe",
        "--sysroot=c:\\perl64\\site\\lib\\auto\\mingw\\bin\\../../mingw64",
        "-m",
        "i386pep",
        "-Bdynamic",
        "c:/perl64/site/lib/auto/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.4/../../../../x86_64-w64-mingw32/lib/crt2.o",
        "c:/perl64/site/lib/auto/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.4/../../../../x86_64-w64-mingw32/lib/crtbegin.o",
        "-Lc:/perl64/site/lib/auto/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.4",
        "-Lc:/perl64/site/lib/auto/mingw/bin/../lib/gcc",
        "-Lc:/perl64/site/lib/auto/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.4/../../../../lib64",
        "-Lc:/perl64/site/lib/auto/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.4/../../../../x86_64-w64-mingw32/lib",
        "-Lc:/perl64/site/lib/auto/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.4/../../..",
        "C:\\Users\\jdoe\\AppData\\Local\\Temp\\cc3VdMAp.o",
        "-lstdc++",
        "-lmingw32",
        "-lgcc_s",
        "-lgcc",
        "-lmoldname",
        "-lmingwex",
        "-lmsvcrt",
        "-luser32",
        "-lkernel32",
        "-ladvapi32",
        "-lshell32",
        "-lmingw32",
        "-lgcc_s",
        "-lgcc",
        "-lmoldname",
        "-lmingwex",
        "-lmsvcrt",
        "c:/perl64/site/lib/auto/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.4/../../../../x86_64-w64-mingw32/lib/crtend.o"
      ],
      "env-diff": {
        "COLLECT_GCC": "C:\\Perl64\\site\\lib\\auto\\MinGW\\bin\\g++.exe",
        "COLLECT_GCC_OPTIONS": "'-shared-libgcc' '-mtune=generic' '-march=x86-64'",
        "COLLECT_LTO_WRAPPER": "c:/perl64/site/lib/auto/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/4.5.4/lto-wrapper.exe",
        "COMMONPROGRAMFILES": "C:\\Program Files\\Common Files",
        "COMPILER_PATH": "c:/perl64/site/lib/auto/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/4.5.4/;c:/perl64/site/lib/auto/mingw/bin/../libexec/gcc/;c:/perl64/site/lib/auto/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.4/../../../../x86_64-w64-mingw32/bin/",
        "GCC_EXEC_PREFIX": "c:\\perl64\\site\\lib\\auto\\mingw\\bin\\../lib/gcc/",
        "LIBRARY_PATH": "c:/perl64/site/lib/auto/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.4/;c:/perl64/site/lib/auto/mingw/bin/../lib/gcc/;c:/perl64/site/lib/auto/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.4/../../../../lib64/;c:/perl64/site/lib/auto/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.4/../../../../x86_64-w64-mingw32/lib/;c:/perl64/site/lib/auto/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.4/../../../",
        "PROCESSOR_ARCHITECTURE": "AMD64",
        "PROCESSOR_ARCHITEW6432": null,
        "PROGRAMFILES": "C:\\Program Files"
      }
    },
    {
      "id": 8440,
      "parent_id": 7824,
      "work_dir": "C:\\tutorial\\npp\\PowerEditor\\src",
      "executable": "c:\\perl64\\site\\lib\\auto\\mingw\\bin\\..\\lib\\gcc\\x86_64-w64-mingw32\\4.5.4\\..\\..\\..\\..\\x86_64-w64-mingw32\\bin\\ld.exe",
      "args": [
        "c:/perl64/site/lib/auto/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.4/../../../../x86_64-w64-mingw32/bin/ld.exe",
        "--sysroot=c:\\perl64\\site\\lib\\auto\\mingw\\bin\\../../mingw64",
        "-m",
        "i386pep",
        "-Bdynamic",
        "c:/perl64/site/lib/auto/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.4/../../../../x86_64-w64-mingw32/lib/crt2.o",
        "c:/perl64/site/lib/auto/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.4/../../../../x86_64-w64-mingw32/lib/crtbegin.o",
        "-Lc:/perl64/site/lib/auto/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.4",
        "-Lc:/perl64/site/lib/auto/mingw/bin/../lib/gcc",
        "-Lc:/perl64/site/lib/auto/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.4/../../../../lib64",
        "-Lc:/perl64/site/lib/auto/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.4/../../../../x86_64-w64-mingw32/lib",
        "-Lc:/perl64/site/lib/auto/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.4/../../..",
        "C:\\Users\\jdoe\\AppData\\Local\\Temp\\cc3VdMAp.o",
        "-lstdc++",
        "-lmingw32",
        "-lgcc_s",
        "-lgcc",
        "-lmoldname",
        "-lmingwex",
        "-lmsvcrt",
        "-luser32",
        "-lkernel32",
        "-ladvapi32",
        "-lshell32",
        "-lmingw32",
        "-lgcc_s",
        "-lgcc",
        "-lmoldname",
        "-lmingwex",
        "-lmsvcrt",
        "c:/perl64/site/lib/auto/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.5.4/../../../../x86_64-w64-mingw32/lib/crtend.o"
      ]
    }
  ]
}
注: build trace (ビルドトレース) ファイル形式が Klocwork バージョン 2017 で変わりました。kwinject では、まだ、build trace (ビルドトレース) ファイル形式の以前のバージョンをサポートしています。

コンパイラのマッピングファイル形式 (kwfilter.conf)

既知のすべてのフィルターのリストを取得し、インターセプトされたコマンドに使用するフィルターを決定するために (異なるいくつかのコマンドが同じオプションフィルターを使用できるため)、kwinject および kwwrap は <klocwork_install>/config/kwfilter.conf に格納されたマスターコンパイラフィルターファイルを使用します。

このマスターコンパイラフィルターファイルは、タブまたはカンマで区切られたテキストファイルです。空の文字列およびコメント (# 記号で始まる行) は無視されます。

次の場合には、このファイルの編集が必要になることがあります。

フィルターバインディング行

フィルターバインディングでは、特定のコマンドにどのフィルターを使用するかを指定します。バインディング行の構文は次のとおりです。

filter <compiler-type> <prog-name>[, <prog-name> ...]  

フィールド

  • <compiler-type> は、コンパイラタイプの名前です。この名前は、指定されたフィルターの構成ファイルの名前と次のように一致します。<Klocwork_install>/config/<compiler-name>_filter.pyl (GNU フィルター定義に gnu_filter.py と名前が付けられている場合)。コンパイラフィルターファイルは、kwinject による build specification (ビルドスペック) の作成中に、インターセプトされたコマンドに対してどのようなフィルターを使用するかを判定するために使用されるコンパイラごとに固有の構成ファイルです。このファイルは、ビルドオプションを Klocwork オプションにマップします。
  • <prog-name> は、gcc など、指定されたコンパイラタイプに適用できる 1 つまたは複数の実行ファイルです。

たとえば、次のようになります。

# Default GNU C/C++ compiler
filter  gnu   gcc, g++  

これによって、gcc および g++ コンパイラの実行ファイルが GNU コンパイラタイプに属することが指定されます。

このフィルターは、gnu_filter.py という名前のファイル内に記述されています。

ワイルドカードを使用した一連の関連コンパイラ実行可能ファイルの指定

ワイルドカード(*) を使用すると、同様に名前の付いた実行可能ファイルのグループをバインドできます。

たとえば、次のようになります。

#More GNU C/C++ compilers
filter  gnu *ccpentium, *-xt-xcc  

これにより ccpentium および -xt-xcc のパターンで終了するすべての実行可能ファイルが照合されます。

ワイルドカードはコンパイラ名のどの位置でも使用できます。たとえば、次のようになります。

filter gnu *-gcc, *-cc, gcc-*, gcc1.*.mips

ピリオド文字は必ずピリオド (.) と一致することに注意してください

注: kwfilter.conf のエントリは表示順に照合されるため、ファイルの最後でのみワイルドカードを使用すると役立ちます。

キーワードのアタッチとデタッチ (Windows のみ)

場合によっては、kwinject のプロセスのインターセプト/モニター機能がプロセス自体に干渉することがあります。Windows では、キーワードのアタッチとデタッチを使用して、ビルドのモニター中に kwinject がインターセプトしない コマンドのリストを指定できます。 kwinject は、開始直後に指定されたプロセスからデタッチします。

手順については、kwinject 対応ビルドでのローカルビルドプロセスの失敗を参照してください。

kwfilter.conf の展開

デフォルトでは、kwfilter.conf は、サーバーとデスクトップ解析ツールの両方の <klocwork_install>/config フォルダーにあります。カスタム kwfilter.conf をクライアントまたはデスクトップユーザーに展開するには、カスタム kwfilter.conf ファイルを projects_root/compiler_config フォルダーにコピーし、kwdeploy を実行してサーバーに展開します。

コンパイラ設定を connected desktop (コネクテッドデスクトップ) のあるサーバープロジェクトに展開するには、次の手順に従います。
  1. Klocwork サーバーで、projects_rootcompiler_config という名前のフォルダーを作成し、展開する kwfilter.conf ファイルをそのフォルダーに配置します。
  2. 各ビルドマシンで、kwdeploy sync を使用し、--url オプションで Klocwork サーバーホストマシンを指定します。
    kwdeploy sync [--url http(s)://<host>:<port>]
  3. 次回デスクトップユーザーが Klocwork 解析を IDE で実行するか、Klocwork Desktop を使用して実行すると、kwfilter.conf ファイルがマシンに自動的に展開されます。Klocwork コマンドラインツールのユーザーは、kwcheck sync を実行する必要があります。

kwfilter.conf ファイルを同期すると、そのバージョンは <klocwork_install>/synced/config フォルダーに保存されます。kwinject を実行すると、次の場所で (順番に) kwfilter.conf ファイルを検索します。

~/.klocwork/synced/config

<klocwork_install>/synced/config

<klocwork_install>/config

次に、それぞれのkwfilter.conf から kwfilter.conf エントリをマージします。たとえば、実行すると、kwinject<klocwork_install>/synced/config/kwfilter.conf<klocwork_install>/config/kwfilter.confからエントリを反映します。kwinject はコンパイラ名が一致した最初のエントリを使います。

ユーザーが別のコンパイラ設定を維持している別のサーバーに接続すると、kwfilter.conf ファイルがデスクトップと同期され、ローカルコンパイラ設定の変更がサーバー上の kwfilter.conf ファイルの変更を使用して同期されます。