ReSharper 2020.2 ヘルプ

Clang-Tidy 統合

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

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

Clang-Tidy インスペクション

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

Clang-Tidy checks in ReSharper

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

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

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

ReSharper: Clang-Tidy inspection menu

Clang-Tidy の修正

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

ReSharper: A quick fix for Clang-Tidy inspection

デフォルトでは、ReSharper は、Clang-Tidy の修正によって変更されたコードを再フォーマットして、コードスタイルを維持します。この動作は、ReSharper オプション(Alt+R O)のコード編集 | C++ | Clang-Tidy ページの Clang-Tidy 修正を適用した後に変更されたコードを再フォーマットする設定を介して無効にできます。この設定を無効にすると、Clang-Tidy 修正の実行が高速化されます。

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

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

ReSharper: Applying Clang-Tidy fixes with code cleanup

ReSharper オプション(Alt+R O)のコードインスペクション | インスペクション重大度ページで対応するインスペクションがオフになっている場合でも、選択された修正が適用されます。一度に多くのチェックを有効にする場合は注意してください。コードクリーンアップは、指定されたファイルに対して Clang-Tidy を 1 回だけ実行します。

Clang-Tidy の設定

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

Clang-Tidy バイナリの -checks コマンドラインオプションは、有効なチェックのリストを渡すために使用され、Clang-Tidy 構成から読み取られたチェックオプションの値に追加されます。 -checks 引数を作成するために、ReSharper は ReSharper オプション(Alt+R O)のコード編集 | C++ | Clang-Tidy ページの有効 / 無効 Clang-Tidy チェックのリスト設定の値を取得し、それにコードインスペクション | インスペクション重大度オプションページでオフになっているチェックの名前を追加します。

デフォルトでは、ReSharper は Clang-Tidy 10 の組み込みバイナリを使用します。ReSharper に他の Clang-Tidy バイナリ(バージョン 7 以降)を使用させることができます。そのためには、ReSharper オプション(Alt+R O)のコード編集 | C++ | Clang-Tidy ページに 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)のコード編集 | C++ | Clang-Tidy ページで現在のソリューションの Clang-Tidy 統合を無効にします。

  • カスタム Clang-tidy バイナリ(ReSharper オプションのコード編集 | C++ | Clang-Tidy ページ(Alt+R O)の %PATH% で検索およびカスタム)を使用している場合は、バージョン 7 以降のみを使用できます。

最終更新日 :

関連ページ:

コードインスペクション

ReSharper はサポートされているすべての言語で 2500 以上のインスペクションを提供します。これらのインスペクションは、開いているすべてのファイルで設計時にコードの課題を検出してハイライトするため、および / または特定の範囲内ですべてのコードの課題を見つけるために使用されます。インスペク...

コードインスペクション設定の構成

コード注釈を使用して、ReSharper がコードをインスペクションする方法をカスタマイズすることもできます。設計時コードインスペクションを構成する :デフォルトでは、ReSharper は、サポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、...

設計時にコードの課題を検出する

ReSharper は、エディターでコードファイルを開くとすぐに分析を開始し、最後まで編集を続けます。検出されたすべてのコードの課題は、重大度に従ってエディターでハイライトされます。課題のマップは、エディターウィンドウの右側のマーカーバーにも表示されます。ここでは、ファイルのステータスを即座に確認し...

スコープの修正

ほとんどのクイックフィックスは、キャレットで現在の課題を修正できますが、中には (たとえば、未使用のディレクティブを削除する、フィールドを読み取り専用にする、冗長なキャストの除去など)、現在のファイル、現在のプロジェクト、またはソリューション全体など、より大きな範囲で課題を自動的に見つけて修正でき...

コードフォーマットルールの管理と適用

ReSharper | 編集 | コードの再フォーマットコードスタイルの重要な点は、コードの書式設定方法、つまり、空白と空白行を使用してコードブロックを配置および分離する方法、インデントにタブを使用するかどうか、および使用する方法。ReSharper コードのフォーマットルールの豊富なセットに...

C++ のコードスタイル支援

ReSharper はあなたのコードをきちんときれいに保つための多くの機能を提供します。ReSharper の他の機能の大部分と密接に連携しているため、特定のコードスタイルに従ってコードを生成したり既存のコードベースを変更したりできます。命名標準、フォーマット規則、およびその他のさまざまな小さな要素...