問題タブ [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.

0 投票する
4 に答える
13672 参照

cmake - カスタム ターゲットとしての cmake clang-tidy (またはその他のスクリプト)

プロジェクトをリントするために、clang-tidy 用のカスタム cmake ターゲットを作成しようとしています。ソース フォルダーは次のようになります。

これまでの私の計画では、カスタム コマンドを使用して、これらの両方のファイルをビルド ディレクトリにコピーすることでした。

run-clang-tidy.pyカスタムターゲットを使用して、ビルドディレクトリ(作業ディレクトリである必要があります)で呼び出したいので、次のように呼び出すことができます:

で指定されたチェックを実行する必要があります.clang-tidy

このスクリプトが機能するには、CMAKE_EXPORT_COMPILE_COMMANDSオプションも必要です。次のコマンドで設定しようとしましたが、認識されません。

への呼び出しはadd_custom_targetどのようになりますか?

0 投票する
2 に答える
4997 参照

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ますか?

0 投票する
3 に答える
19415 参照

c++ - ヘッダーファイルを修正するためにclang-tidyを取得する

私は現在 gcc でコンパイルしているプロジェクトを clang に移行する過程にあり、gcc が生成しなかったという警告がたくさんあります ( -Winconsistent-missing-override)。clang-tidyファイル内のこれらのエラーを修正するために機能しますが、データベースにコンパイルコマンドが見つからなかったため*.cpp、ファイルには触れませんhpp(予想どおり)。

ninjaプロジェクトのビルドとninja -t compdb cc cxx > .build/compile_commands.jsonコンパイルデータベースの生成に使用しています。私は実行してみました:

エラーを修正します。不平を言うヘッダーファイルに触れることを拒否します:

0 投票する
3 に答える
18466 参照

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"

0 投票する
4 に答える
18531 参照

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 ファイルからの警告を抑制しませんでした。

したがって、できれば各警告を個別に抑制して、それが実際の問題であるかどうかを判断できるようにしたいと思いますが、これが不可能な場合は、外部ヘッダー全体からの警告を抑制して生きることもできます。

お時間をいただきありがとうございます。

0 投票する
2 に答える
749 参照

boost - 大量のブースト ユニット テスト関連の警告を clang-tidy で処理する

プロジェクトを立ち上げているところです。ブーストユニットテストを使用してスケルトンテストを実施しています。残念ながら、マクロ展開から多数の警告が生成されます。個々の行番号を指定することなく、これらを無効にする方法はありますか?

これは、 // NOLINT がある場合でも発生します。

例:

0 投票する
3 に答える
8051 参照

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を実行する方法は?

おそらく回避策は、ビジュアルスタジオから各ファイルのインクルードをダンプすることでしょうか? どんな方法でも構いません。

参考のため:

clang-tidy の「モダナイズ」チェックを有効にするにはどうすればよいですか?

Visual Studio Clang-Formatプラグインにclang-formatファイルを供給する方法は?