2017-02-10 7 views
0

私はWindows上でclang-tidyを使用しようとしています。これまでは成功していません。Windowsでclang-tidy MSVC2015

私がインストールした前提条件としてLLVM 3.9.1

私の通常のコンパイラは、MSVC 2015で、私のビルドシステムはQBS 1.7.2です。 QBSを使用して私はcompile_commands.jsonを生成しました。もちろん、そのファイルにはMSVC 2015 cl.exeフラグ/引数が含まれています。

{ 
    "arguments": [ 
     "C:/Programs/MVS14/VC/bin/amd64/cl.exe", 
     "/nologo", 
     "/c", 
     "/EHsc", 
     "/Zi", 
     "/MDd", 
     "/IC:\\some_ci_job_folder\\src\\some_component\\include", 
     "/IC:\\some_ci_job_folder\\src\\some_needed_component\\include", 
     "/IC:\\Programs\\Qt\\Online\\5.6\\msvc2015_64\\include", 
     "/IC:\\Programs\\Qt\\Online\\5.6\\msvc2015_64\\include\\QtCore", 
     "/IC:\\Programs\\Qt\\Online\\5.6\\msvc2015_64\\mkspecs\\win32-msvc2015", 
     "/IC:\\some_ci_job_folder\\target\\build\\win64-vc14-qt56x-debug\\some_component.win64-vc14-qt56x.ce20db24\\qt.headers", 
     "/D_MBCS", 
     "/DWIN32", 
     "/DQT_CORE_LIB", 
     "/DNOMINMAX", 
     "/DQT_DISABLE_DEPRECATED_BEFORE=0x000000", 
     "/DVERSION_ID=\"MAJOR_UNDEF.MINOR_UNDEF-REVISION_UNDEF\"", 
     "/DVERSION_MAJOR=0", 
     "/DVERSION_MINOR=0", 
     "/DVERSION_REVISION=0", 
     "/DUSES_QT", 
     "/D_DEBUG", 
     "/D__mswin__", 
     "/DUSE_RVALUE_REFS=1", 
     "/D_CRT_SECURE_NO_DEPRECATE", 
     "/D_SCL_SECURE_NO_WARNINGS", 
     "/DWINVER=0x0502", 
     "/D_WIN32_WINNT=0x0502", 
     "/D_WIN32_WINDOWS=0x0502", 
     "/TP", 
     "/FS", 
     "/Zm200", 
     "/W4", 
     "/FS", 
     "/GR", 
     "/wd4018", 
     "/wd4063", 
     "/wd4100", 
     "/wd4121", 
     "/wd4127", 
     "/wd4150", 
     "/wd4189", 
     "/wd4238", 
     "/wd4239", 
     "/wd4244", 
     "/wd4245", 
     "/wd4267", 
     "/wd4290", 
     "/wd4389", 
     "/wd4510", 
     "/wd4512", 
     "/wd4610", 
     "/wd4718", 
     "/wd4481", 
     "/FoC:\\some_ci_job_folder\\target\\build\\win64-vc14-qt56x-debug\\some_component.win64-vc14-qt56x.ce20db24\\.obj\\f27fede2220bcd32\\foo.cpp.obj", 
     "/FdC:\\some_ci_job_folder\\target\\build\\win64-vc14-qt56x-debug\\some_component.win64-vc14-qt56x.ce20db24\\.obj\\f27fede2220bcd32\\", 
     "C:\\some_ci_job_folder\\src\\some_component\\src\\foo.cpp" 
    ], 
    "directory": "C:/some_ci_job_folder/target/build/win64-vc14-qt56x-debug/some_component.win64-vc14-qt56x.ce20db24/.obj", 
    "file": "C:/some_ci_job_folder/src/some_component/src/foo.cpp" 
}, 

仕事/プロジェクトフォルダC:/some_ci_job_folder/への切り替えと

clang-tidy -p target\build\win64-vc14-qt56x-debug src\some_component\src\foo.cpp 1>clang-tidy.txt 2>&1 

実行し、次の警告およびつのエラー私を与える:

... warnings and 1 error generated. 
Error while processing C:\some_ci_job_folder\src\some_component\src\foo.cpp. 
warning: /DNOMINMAX: 'linker' input unused [clang-diagnostic-unused-command-line-argument] 
warning: /DQT_CORE_LIB: 'linker' input unused [clang-diagnostic-unused-command-line-argument] 
... more warnings about defines ... 
warning: /D_WIN32_WINDOWS=0x0502: 'linker' input unused [clang-diagnostic-unused-command-line-argument] 
warning: /D_WIN32_WINNT=0x0502: 'linker' input unused [clang-diagnostic-unused-command-line-argument] 
warning: /D__mswin__: 'linker' input unused [clang-diagnostic-unused-command-line-argument] 
warning: /EHsc: 'linker' input unused [clang-diagnostic-unused-command-line-argument] 
warning: /FS: 'linker' input unused [clang-diagnostic-unused-command-line-argument] 
warning: /FdC:\some_ci_job_folder\target\build\win64-vc14-qt56x-debug\some_component.win64-vc14-qt56x.ce20db24\.obj\f27fede2220bcd32\: 'linker' input unused [clang-diagnostic-unused-command-line-argument] 
warning: /FoC:\some_ci_job_folder\target\build\win64-vc14-qt56x-debug\some_component.win64-vc14-qt56x.ce20db24\.obj\f27fede2220bcd32\foo.cpp.obj: 'linker' input unused [clang-diagnostic-unused-command-line-argument] 
warning: /GR: 'linker' input unused [clang-diagnostic-unused-command-line-argument] 
warning: /IC:\Programs\Qt\Online\5.6\msvc2015_64\include: 'linker' input unused [clang-diagnostic-unused-command-line-argument] 
warning: /IC:\Programs\Qt\Online\5.6\msvc2015_64\include\QtCore: 'linker' input unused [clang-diagnostic-unused-command-line-argument] 
warning: /IC:\Programs\Qt\Online\5.6\msvc2015_64\mkspecs\win32-msvc2015: 'linker' input unused [clang-diagnostic-unused-command-line-argument] 
warning: /IC:\some_ci_job_folder\src\shared\some_needed_component\include: 'linker' input unused [clang-diagnostic-unused-command-line-argument] 
warning: /IC:\some_ci_job_folder\src\shared\some_component\include: 'linker' input unused [clang-diagnostic-unused-command-line-argument] 
warning: /IC:\some_ci_job_folder\target\build\win64-vc14-qt56x-debug\some_component.win64-vc14-qt56x.ce20db24\qt.headers: 'linker' input unused [clang-diagnostic-unused-command-line-argument] 
warning: /MDd: 'linker' input unused [clang-diagnostic-unused-command-line-argument] 
warning: /TP: 'linker' input unused [clang-diagnostic-unused-command-line-argument] 
warning: /W4: 'linker' input unused [clang-diagnostic-unused-command-line-argument] 
warning: /Zi: 'linker' input unused [clang-diagnostic-unused-command-line-argument] 
warning: /Zm200: 'linker' input unused [clang-diagnostic-unused-command-line-argument] 
warning: /c: 'linker' input unused [clang-diagnostic-unused-command-line-argument] 
warning: /nologo: 'linker' input unused [clang-diagnostic-unused-command-line-argument] 
warning: /wd4189: 'linker' input unused [clang-diagnostic-unused-command-line-argument] 
... more warnings ... 
warning: /wd4718: 'linker' input unused [clang-diagnostic-unused-command-line-argument] 
C:\some_ci_job_folder\src\some_component\src/foo.h:71:10: error: 'some_needed_component/bar.h' file not found [clang-diagnostic-error] 
#include "some_needed_component/bar.h" 
     ^
ここでは一つのファイルのエントリを示す抜粋です

clang-tidyの理由が(デフォルトで)clのオプションを正しく解釈しない理由は何ですか?

グーグルでは、--driver-mode=clを追加すると改善される可能性があることがわかりました。しかし

clang-tidy -p target\build\win64-vc14-qt56x-debug src\some_component\src\foo.cpp -- --driver-mode=cl 1>clang-tidy.txt 2>&1 

はまだインクルードパス引数を含めるが、私の知る限り、これらの引数を言うことができるように、単に無視される程度だから、もはや文句

1 warning and 1 error generated. 
Error while processing C:\some_ci_job_folder\src\some_component\src\foo.cpp. 
warning: unknown argument ignored in clang-cl: '-resource-dir=C:\Programs\LLVM-3.9.1\bin\..\lib\clang\3.9.1' [clang-diagnostic-unknown-argument] 
C:\some_ci_job_folder\src\some_component\src/foo.h:71:10: error: 'some_needed_component/bar.h' file not found [clang-diagnostic-error] 
#include "some_needed_component/bar.h" 
     ^

私に与えていませんか?

私はDeveloper Command Prompt for VS2015の中からclang-tidyを実行します。これまでのところ、これが必要かどうかは分かりません。

どのようなアイデア...どのように問題を解決するには、パス引数の評価をデバッグする方法...?

答えて

2

私はCppcheck開発者です。

clang-tidyがCppcheck GUIに統合されました。

Cppcheck GUIを使用して、コンパイルデータベースまたはビジュアルスタジオソリューションでclang-tidyを実行できます。 CppcheckのGUIは、独自のコンパイルデータベースパーサを使用していますが、おそらくクライントティッドの組み込みパーサとは動作が異なります。

無料のオープンソース(GPL)ツールです。ここからダウンロードすることができます:http://cppcheck.sf.net/clangtidy/index.html

はそれを試して気軽に、私たちが修正できるものがあるかどうかを教えすることを躊躇しない:

http://cppcheck.sf.netは、ここではいくつかのスクリーンショットです。

関連する問題