問題タブ [clang-tidy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cmake - カスタム ターゲットとしての cmake clang-tidy (またはその他のスクリプト)
プロジェクトをリントするために、clang-tidy 用のカスタム cmake ターゲットを作成しようとしています。ソース フォルダーは次のようになります。
これまでの私の計画では、カスタム コマンドを使用して、これらの両方のファイルをビルド ディレクトリにコピーすることでした。
run-clang-tidy.py
カスタムターゲットを使用して、ビルドディレクトリ(作業ディレクトリである必要があります)で呼び出したいので、次のように呼び出すことができます:
で指定されたチェックを実行する必要があります.clang-tidy
。
このスクリプトが機能するには、CMAKE_EXPORT_COMPILE_COMMANDS
オプションも必要です。次のコマンドで設定しようとしましたが、認識されません。
への呼び出しはadd_custom_target
どのようになりますか?
clang - clang-tidy の「モダナイズ」チェックを有効にするにはどうすればよいですか?
ClangOnWinをインストールしたばかりで、clang-tidy
の「モダナイズ」チェックを機能させようとしています。残念ながら、clang-tidy
それらについて知っているようには見えません:clang-tidy -list-checks foo.cpp -- | grep modernize
出力を生成しません。
「モダナイズ」チェックはこちらにリストされていますが、そのページには Clang 3.8 が記載されているようで、インストールしたバージョンは 3.7 です。ただし、バージョン 3.7 がLLVM ダウンロード ページにリストされている現在のバージョンです。
clang-tidy
さまざまなセキュリティチェックについて知っているので、正しくインストールされていると思います。たとえば、次のようにclang-tidy -list-checks foo.cpp -- | grep security
なります。
modernize-use-override
やなどのチェックを有効にするために何か特別なことをする必要がありmodernize-use-nullptr
ますか?
c++ - ヘッダーファイルを修正するためにclang-tidyを取得する
私は現在 gcc でコンパイルしているプロジェクトを clang に移行する過程にあり、gcc が生成しなかったという警告がたくさんあります ( -Winconsistent-missing-override
)。clang-tidy
ファイル内のこれらのエラーを修正するために機能しますが、データベースにコンパイルコマンドが見つからなかったため*.cpp
、ファイルには触れませんhpp
(予想どおり)。
ninja
プロジェクトのビルドとninja -t compdb cc cxx > .build/compile_commands.json
コンパイルデータベースの生成に使用しています。私は実行してみました:
エラーを修正します。不平を言うヘッダーファイルに触れることを拒否します:
c++ - Clang-Tidy がヘッダー ファイルを見つけられない
ここでclangとclang-tidyを初めて使用します。
このタイプの構造を持つプロジェクトがあります。
project/
- build/
- cmake/
- component1/
- src/
- someFile.cpp
- someFile2.cpp
- someFile.hpp
- someFile2.hpp
- component2/
- etc...
-
project/component1/
このコマンドですべてのファイルを確認するために clang-tidy を使用すると、次のようになります。clang-tidy project/component1/src/* -checks=-*,clang-analyzer-*,-clang-analyzer-alpha*
次のようなエラーがスローされます。
$HOME/project/component1/src/someFile.cpp:18:10: error: 'project/component1/someFile.hpp' file not found [clang-diagnostic-error]
\#include "component1/someFile.hpp"
suppress-warnings - clang-tidy: 警告を抑制するには?
clang-tidy
最近、llvmのツールを試し始めました。現在、サードパーティのライブラリ コードからの誤った警告を抑制しようとしています。このために、コマンドラインオプションを使用したい
-header-filter=<string>
また-line-filter=<string>
しかし、これまでのところ成功していません。時間が限られている人のために、最初にここに質問を置き、後で私がすでに試したことを説明します.
質問
clang-tidy
特定の行やファイルからの警告を抑制するには、ツールにどのオプションを指定する必要がありますか?
これが不可能な場合
外部ヘッダー ファイルからの警告を抑制するために機能するオプションはどれですか?
これまでに行ったこと
私の最初のclang-tidyへの呼び出しは次のようになります
抑制したい生成された警告の最初の行は次のようになります
gmock の人から、これは誤検知だと言われたので、抑制したいと思います。まずは-line-filter=<string>
オプションを使ってみました。ドキュメントには次のように記載されています。
指定された行の警告は除外されると想定しました。しかし、ドキュメントには、それらがフィルターで除外されているか、除外されているかは記載されていません。いくつかいじった後、コンテンツを含む.jsonファイルを作成しました
コマンドラインを次のように変更しました
ファイルの内容を引数に書き込みます。これにより、警告が抑制されますが、この警告だけでなく、ModuleListsFileManipulator_fixtures.cpp ファイルからのすべての警告も抑制されます。もっといろいろ試してみましたが、うまくいきませんでした。
-header-filter=<string>
ということでオプションをつけてみました。ここで、ドキュメントには、診断が表示されるすべてのヘッダー ファイルに一致する正規表現を指定する必要があると記載されています。わかりました、分析した .cpp ファイルと同じフォルダーにあるすべてのものに一致する正規表現を使用しましょう。私はそれを受け入れることができますが、外部ヘッダーを間違って使用した結果として生じる警告が削除される場合があります。
ここで、正規表現が完全な (絶対) ファイル名と一致する必要があるのか、それともファイル名の一部のみと一致する必要があるのかがわかりませんでした。私は試した
これは、CodeAssistant フォルダー内のすべての絶対ヘッダー ファイル名に一致しますが、gmock-spec-builders.h ファイルからの警告を抑制しませんでした。
したがって、できれば各警告を個別に抑制して、それが実際の問題であるかどうかを判断できるようにしたいと思いますが、これが不可能な場合は、外部ヘッダー全体からの警告を抑制して生きることもできます。
お時間をいただきありがとうございます。
boost - 大量のブースト ユニット テスト関連の警告を clang-tidy で処理する
プロジェクトを立ち上げているところです。ブーストユニットテストを使用してスケルトンテストを実施しています。残念ながら、マクロ展開から多数の警告が生成されます。個々の行番号を指定することなく、これらを無効にする方法はありますか?
これは、 // NOLINT がある場合でも発生します。
例:
c++ - ビジュアルスタジオでclang-tidy modernizeを使用する方法
Visual Studio 2015 C++ プロジェクトのインクルード パスと設定を利用して、Visual Studio 内またはコマンド ラインからファイルに clang モダナイゼーションを適用しようとしています。
次のように、clang-tidy 設定ファイルを作成しました。
(cygwin)コマンドラインから、単一のファイルで動作することを確認しました:clang-tidy.exe -explain-config
リスト(とりわけ)
インクルードを手動で設定することで、個々のファイルで実行
できます。clang-tidy.exe someFile.cpp -- -Ic:/abc -I. -IIncludes
Visual Studio のclang-format VS プラグイン{ BasedOnStyle: "LLVM", IndentWidth: 20 }
をインストールし、VS プラグインによって取得される.clang-format ファイルの例を作成しました。次に、単純に clang-tidy 構成で clang-format をフィードしようとしましたが、当然のことながら、まったく機能しません。
要約すると、ファイルとビジュアルスタジオプロジェクトでclang-tidyを実行する方法は?
おそらく回避策は、ビジュアルスタジオから各ファイルのインクルードをダンプすることでしょうか? どんな方法でも構いません。
参考のため: