JetBrains Rider 2024.1 ヘルプ

Clang-Tidy インテグレーション

Clang-Tidy(英語) は、一般的な Clang コンパイラーに基づいた強力なオープンソースコード解析ツールです。典型的なプログラミングエラーのための広範な一連のコードチェックとそれに伴う修正が付属しています。

JetBrains Rider は、Clang-Tidy とのシームレスな統合を提供します。これは、ファイルを編集すると、JetBrains Rider が別のプロセスとしてバックグラウンドで Clang-Tidy を実行し、インスペクションの結果が他の JetBrains Rider のインスペクションと一緒に表示されることを意味します。保存されていないファイルは、現在のドキュメントのテキストを一時ファイルに保存し、ディスク上のバージョンの代わりにそれを使用するように Clang-Tidy に指示することにより、透過的に処理されます。

Clang-Tidy インスペクション

Clang-Tidy チェックと JetBrains Rider のインスペクションを区別するには、インスペクションメッセージに追加された角括弧内のチェックの名前を確認できます。

Clang-Tidy checks in JetBrains Rider

Clang-Tidy チェックからの診断に加えて、JetBrains Rider は、Clang Static Analyzer からの診断と、Clang コンパイラー自体によって提供される警告も発行します。それらすべてに対応する構成可能な重大度レベルがあり、ニーズに合わせて調整できます

JetBrains Rider の組み込みインスペクションを複製する Clang-Tidy チェックの一部は、デフォルトでオフになっています。さらに、すべての静的アナライザーチェックは無効になっています。これを有効にすると、Clang-Tidy の速度が大幅に低下するためです。

ビルトインインスペクションと同様に、インスペクションコンテキストメニューを使用して迅速に Clang-Tidy チェックの重大度を変更するにしたり、コメントを介して(特定のスコープまたはグローバルに)抑制したり、すべての同様の問題を見つけて調査したりできます。特定のチェックのオンラインドキュメントページを開く追加のアクションもあります。

JetBrains Rider: Clang-Tidy inspection menu

Clang-Tidy の修正

JetBrains Rider を使用すると、Clang-Tidy によって提供される修正を、独自の組み込みクイックフィックスと同様に適用できます。他の一括修正と同様に、Clang-Tidy 修正は個別に適用することも、特定のスコープ (ファイル、フォルダー、プロジェクト、ソリューション) 内で適用することもできます。

JetBrains Rider: A quick fix for Clang-Tidy inspection

デフォルトでは、JetBrains Rider は Clang-Tidy 修正によって変更されたコードを再フォーマットして、コードスタイルを維持します。この動作は、JetBrains Rider 設定 Ctrl+Alt+S言語 & フレームワーク | C++ | Clang-Tidy ページの Clang-Tidy 修正を適用した後に変更されたコードを再フォーマットする設定で無効にすることができます。この設定を無効にすると、Clang-Tidy 修正の実行が高速化されます。

コードのクリーンアップによる Clang-Tidy 修正の適用

Clang-Tidy の修正は、コードのクリーンアップでも適用できます。組み込みのコードクリーンアッププロファイルには、利用可能なすべての Clang-Tidy 修正が含まれているわけではないため、構成するには、リストから Clang-Tidy プロファイルを選択し、その横にあるオプションボタンをクリックして、必要なすべてのチェックを選択する必要があります。このプロファイルでコードのクリーンアップを実行すると実行されます。

JetBrains Rider: Applying Clang-Tidy fixes with code cleanup

選択した修正は、対応するインスペクションが JetBrains Rider 設定 Ctrl+Alt+Sエディター | インスペクション設定 | インスペクション重大度ページでオフになっている場合でも適用されます。一度に多くのチェックを有効にする場合は注意してください — コードのクリーンアップは、特定のファイルに対して Clang-Tidy を 1 回だけ実行するため、複数の修正が同じコードブロックに触れると、変更が互いに競合する可能性があります。

Clang-Tidy の設定

JetBrains Rider は独自の Clang-Tidy 構成を作成しないため、ユーザー提供の構成を選択できます。Clang-Tidy は、ソースファイルの最も近い親ディレクトリにある .clang-tidy ファイルから各ソースファイルの構成を読み取ろうとします。ここでのソースファイル (残りの JetBrains Rider インスペクションと同様) は、分析が実行される場合は .cpp ファイル自体であり、ヘッダーファイルで分析が実行される場合はヘッダーを含むランダムな .cpp ファイルです。または、JetBrains Rider 設定 Ctrl+Alt+S言語 & フレームワーク | C++ | Clang-Tidy ページで特定の clang-tidy 構成ファイルを使用する設定を選択して、構成ファイルの場所を指定することもできます。

Clang-Tidy バイナリの -checks コマンドラインオプションは、有効なチェックのリストを渡すために使用されます。このリストは、Clang-Tidy 構成から読み取られたチェックオプションの値に追加されます。-checks 引数を作成するために、JetBrains Rider は JetBrains Rider 設定 Ctrl+Alt+S言語 & フレームワーク | C++ | Clang-Tidy ページで有効 / 無効な Clang-Tidy チェックのリスト設定の値を取得し、エディター | インスペクション設定 | インスペクション重大度オプションページでオフになっているチェックの名前をそれに追加します。

デフォルトでは、JetBrains Rider は Clang-Tidy 15.0.0 の組み込みバイナリを使用します。JetBrains Rider に他の Clang-Tidy バイナリ (バージョン 7 以降) を使用させることができます。これを行うには、JetBrains Rider 設定 Ctrl+Alt+S言語 & フレームワーク | C++ | Clang-Tidy ページに 2 つの追加オプションがあります。

  • %PATH% で検索 - %PATH% 環境変数で指定された場所にある Clang-Tidy を使用します。

  • カスタム - 特定の Clang-Tidy 実行可能ファイルを使用します。

必要に応じて、ステータスインジケーターのコンテキストメニューの Clang-Tidy 分析を有効にする () トグルを使用して、現在のドキュメントで Clang-Tidy 分析を無効にすることもできます。

Clang-Tidy 統合の制限

  • UTF-16 または UTF-32 エンコーディングを使用するファイルは Clang によって読み取られないため、現時点では Clang-Tidy ではサポートされていません。

  • Clang-Tidy がコードでクラッシュする場合があり、Windows は「プロセスが動作を停止しました」というメッセージを表示します。この場合、JetBrains Rider 設定 Ctrl+Alt+S言語 & フレームワーク | C++ | Clang-Tidy ページで、現在のソリューションの Clang-Tidy 統合を無効にします。

  • カスタム Clang-tidy バイナリ ( JetBrains Rider 設定 Ctrl+Alt+S言語 & フレームワーク | C++ | Clang-Tidy ページの %PATH% で検索およびカスタム ) を使用している場合は、バージョン 7 以降のみを使用できます。

関連ページ:

コードインスペクション

JetBrains Rider は、サポートされているすべての言語で 2500 を超えるコードインスペクションを提供します。これらのインスペクションは、開いているすべてのファイルの設計時にコードの問題を検出してハイライトするために適用されます。また、特定の範囲内のすべてのコードの問題を検出するために適用されます。インスペクション JetBrains Rider が提供するコードの種類を調べるには、異なる言語の JetBrains Rider コードインスペクションの全リストをご覧ください。コードイ...

C++ のコードインスペクション

C++ では、JetBrains Rider 2024.1 は 2 種類のコードインスペクションを提供します。333 インスペクションは、壊れた構文、未解決のシンボル、コンパイラーエラーなどのエラーを検出します (これらのいずれも構成または無効にすることはできませんインスペクション)。また、1622 独自コードインスペクションは、いずれも無効にしたり、重大度レベルを変更したりできます。これらのコードインスペクションは、開いているすべてのファイルの設計時にコードの問題を検出するのに役立ち、さらに特定のス...

コードインスペクション設定を構成する

設計時コードインスペクションを構成する:デフォルトでは、JetBrains Rider はサポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にすることができます。設計時コードインスペクションが有効かどうかにかかわらず、コードインスペクションを特定の範囲でいつでも実行できます。「鉛筆」ウィジェットを使用して、エディターから直接インスペクション設定をすばやく調整するか、設定でより詳細な構成を行うことができます。を押すか、メニューから(W...

設計時にコードの問題を分析する

JetBrains Rider は、エディターでコードファイルを開くとすぐに、コードファイルが閉じられるまで分析を開始します。検出されたすべてのコードの問題は、重大度に応じてエディターでハイライトされます。問題のマップは、エディターウィンドウの右側のエラーストライプにも表示されます。ここでは、ファイルのステータスを即座に確認し、マークをクリックして特定のコードの問題に移動できます。デザインタイムインスペクションの機能:デザイン時のインスペクション機能は、Rider エディターの基本機能への主要...

スコープを修正

ほとんどのクイックフィックスは、キャレットで現在の問題を修正できますが、中には (たとえば、未使用のディレクティブを削除する、フィールドを読み取り専用にする、冗長なキャストの除去など)、現在のファイル、現在のプロジェクト、ソリューション全体など、より大きな範囲で問題を自動的に見つけて修正できるものもあります。範囲内の修正を適用する:このような修正は、アクションリストの横に表示される小さな矢印で識別できます。範囲内の修正を適用する JetBrains Rider のインスペクションでハイライトされ...

フォーマットルールを適用する

編集および貼り付けられたコードの自動フォーマット:エディターでコードを入力すると、JetBrains Rider はセミコロンを入力するとすぐに式を再フォーマットし、閉じ括弧を入力するとすぐにコードのブロックを再フォーマットします。必要に応じて、JetBrains Rider 設定のページでこれらの種類の自動フォーマットを無効にすることができます。JetBrains Rider では、コードを貼り付けるときにフォーマット規則を自動的に適用することもできます。デフォルトでは、貼り付けられたコー...