Clang-Tidy インテグレーション
Clang-Tidy(英語) は、一般的な Clang コンパイラーに基づいた強力なオープンソースコード解析ツールです。典型的なプログラミングエラーのための広範な一連のコードチェックとそれに伴う修正が付属しています。
ReSharper は、Clang-Tidy とのシームレスな統合を提供します。これは、ファイルを編集すると、ReSharper が別のプロセスとしてバックグラウンドで Clang-Tidy を実行し、インスペクションの結果が他の ReSharper のインスペクションと一緒に表示されることを意味します。保存されていないファイルは、現在のドキュメントのテキストを一時ファイルに保存し、ディスク上のバージョンの代わりにそれを使用するように Clang-Tidy に指示することにより、透過的に処理されます。
Clang-Tidy インスペクション
Clang-Tidy チェックと ReSharper のインスペクションを区別するには、インスペクションメッセージに追加された角括弧内のチェックの名前を確認できます。
Clang-Tidy チェックからの診断に加えて、ReSharper は、Clang Static Analyzer からの診断と、Clang コンパイラー自体によって提供される警告も発行します。それらすべてに対応する構成可能な重大度レベルがあり、ニーズに合わせて調整できます。
ReSharper の組み込みインスペクションを複製する Clang-Tidy チェックの一部は、デフォルトでオフになっています。さらに、すべての静的アナライザーチェックは無効になっています。これを有効にすると、Clang-Tidy の速度が大幅に低下するためです。
ビルトインインスペクションと同様に、インスペクションコンテキストメニューを使用して迅速に Clang-Tidy チェックの重大度を変更するにしたり、コメントを介して(特定のスコープまたはグローバルに)抑制したり、すべての同様の問題を見つけて調査したりできます。特定のチェックのオンラインドキュメントページを開く追加のアクションもあります。
Clang-Tidy の修正
ReSharper を使用すると、Clang-Tidy によって提供される修正を、独自の組み込みクイックフィックスと同様に適用できます。他の一括修正と同様に、Clang-Tidy 修正は個別に適用することも、特定のスコープ (ファイル、フォルダー、プロジェクト、ソリューション) 内で適用することもできます。
デフォルトでは、ReSharper は Clang-Tidy 修正によって変更されたコードを再フォーマットして、コードスタイルを維持します。この動作は、ReSharper オプション Alt+R, O の ページの Clang-Tidy 修正を適用した後に変更されたコードを再フォーマットする設定で無効にできます。この設定を無効にすると、Clang-Tidy 修正の実行が高速化されます。
コードのクリーンアップによる Clang-Tidy 修正の適用
Clang-Tidy の修正は、コードのクリーンアップでも適用できます。組み込みのコードクリーンアッププロファイルには、利用可能なすべての Clang-Tidy 修正が含まれているわけではないため、構成するには、リストから Clang-Tidy プロファイルを選択し、その横にあるオプションボタンをクリックして、必要なすべてのチェックを選択する必要があります。このプロファイルでコードのクリーンアップを実行すると実行されます。
選択した修正は、対応するインスペクションが ReSharper オプション Alt+R, O の ページでオフになっている場合でも適用されます。一度に多くのチェックを有効にする場合は注意してください。コードクリーンアップでは、特定のファイルに対して Clang-Tidy が 1 回だけ実行されるため、複数の修正が同じコードブロックに関係する場合、変更が互いに競合する可能性があります。
Clang-Tidy の設定
ReSharper は独自の Clang-Tidy 構成を作成しないため、ユーザー提供の構成を選択できます。Clang-Tidy は、ソースファイルの最も近い親ディレクトリにある .clang-tidy
ファイルから各ソースファイルの構成を読み取ろうとします。ここでのソースファイルは (ReSharper インスペクションの残りの部分と同様に)、分析が実行される場合は .cpp
ファイル自体、分析がヘッダーファイルで実行される場合はヘッダーを含むランダムな .cpp
ファイルです。または、ReSharper オプション Alt+R, O の ページで特定の clang-tidy 構成ファイルを使用する設定を選択して、構成ファイルの場所を指定することもできます。
Clang-Tidy バイナリの -checks
コマンドラインオプションは、有効なチェックのリストを渡すために使用され、その後、Clang-Tidy 構成から読み取られたチェックオプションの値に追加されます。-checks
引数を作成するために、ReSharper は、ReSharper オプション Alt+R, O の ページの有効 / 無効な Clang-Tidy チェックのリスト設定の値を取得し、それに オプションページでオフになっているチェックの名前を追加します。
デフォルトでは、ReSharper は Clang-Tidy 15.0.0 の組み込みバイナリを使用します。ReSharper で他の Clang-Tidy バイナリ (バージョン 7 以降) を使用するように設定できます。これを行うには、ReSharper オプション Alt+R, O の ページに 2 つの追加オプションがあります。
%PATH% で検索 -
%PATH%
環境変数で指定された場所にある Clang-Tidy を使用します。カスタム - 特定の Clang-Tidy 実行可能ファイルを使用します。
必要に応じて、ステータスインジケーターのコンテキストメニューの Clang-Tidy 分析を有効にする (Control+Alt+Shift+D9) トグルを使用して、現在のドキュメントで Clang-Tidy 分析を無効にすることもできます。
Clang-Tidy 統合の制限
UTF-16 または UTF-32 エンコーディングを使用するファイルは Clang によって読み取られないため、現時点では Clang-Tidy ではサポートされていません。
場合によっては、Clang-Tidy がコード上でクラッシュし、Windows に「プロセスが動作を停止しました」というメッセージが表示されることがあります。この場合、ReSharper オプション Alt+R, O の ページで、現在のソリューションの Clang-Tidy 統合を無効にします。
カスタム Clang-tidy バイナリ (ReSharper オプション Alt+R, O の ページの %PATH% で検索およびカスタム ) を使用している場合は、バージョン 7 以降のみを使用できます。
関連ページ:
コードインスペクション
ReSharper は、サポートされているすべての言語で 2500 を超えるコードインスペクションを提供します。これらのインスペクションは、開いているすべてのファイルの設計時にコードの問題を検出してハイライトするために適用されます。また、特定の範囲内のすべてのコードの問題を検出するために適用されます。インスペクション ReSharper が提供するコードの種類を調べるには、異なる言語の ReSharper コードインスペクションの全リストをご覧ください。コードインスペクションは、以下のグループに分...
コードインスペクション設定を構成する
設計時コードインスペクションを構成する:デフォルトでは、ReSharper は、サポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にすることができます。設計時コードインスペクションが有効かどうかに関係なく、コードインスペクションは常に特定のスコープで実行できます。メインメニューからを選択するか、Alt+R O を押してから、左側のを選択します。設計時コードインスペクションを切り替えるには、コード分析を有効にするチェックボックスを使用し...
設計時にコードの問題を分析する
ReSharper は、エディターでコードファイルを開くとすぐに分析を開始し、最後まで編集を続けます。検出されたすべてのコードの問題は、重大度に従ってエディターでハイライトされます。問題のマップは、エディターウィンドウの右側のマーカーバーにも表示されます。ここでは、ファイルのステータスを即座に確認し、マークをクリックして特定のコードの問題に移動できます。デザインタイムインスペクションの機能:ReSharper によって実行されるデザインタイムコードインスペクションを説明するために、エディターに...
スコープを修正
ほとんどのクイックフィックスは、キャレットで現在の問題を修正できますが、中には (たとえば、未使用のディレクティブを削除する、フィールドを読み取り専用にする、冗長なキャストの除去など)、現在のファイル、現在のプロジェクト、ソリューション全体など、より大きな範囲で問題を自動的に見つけて修正できるものもあります。範囲内の修正を適用する:このような修正は、アクションリストの横に表示される小さな矢印で識別できます。範囲内の修正を適用する ReSharper のインスペクションでハイライトされているコード...
フォーマットルールを適用する
編集および貼り付けられたコードの自動フォーマット:エディターでコードを入力すると、セミコロンを入力するとすぐに ReSharper によって式が再フォーマットされ、閉じ括弧を入力するとすぐにコードブロックが再フォーマットされます必要に応じて、ReSharper オプション Alt+R, O のページでこれらの種類の自動フォーマットを無効にすることができます。ReSharper では、コードを貼り付けるときにフォーマットルールを自動的に適用することもできます。デフォルトでは、貼り付けられたコードは完...
コードのクリーンアップ
ReSharper を使用すると、フォーマットやその他のコードスタイル設定を一括モードで適用して、1 つ以上のファイル、プロジェクト、ソリューション全体でコードスタイル違反を即座に排除できます。コードクリーンアッププロファイル:コードのクリーンアップには、ニーズに応じてさまざまな場合に適用できるさまざまな設定(プロファイル)があります。提供時の状態で使用可能な 3 つのデフォルトプロファイルがあります。コードのフォーマットのみを適用するビルトイン: コードの整形、コードのフォーマットとコードの...