ReSharper 2020.2 ヘルプ

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

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

他の言語と同様に、スコープを修正またはコードのクリーンアップを使用して、1 つのコマンドですべての C++ コードスタイル設定を目的の範囲に適用できます。

ビルトインコードクリーンアッププロファイルには C++ 固有のタスクが含まれていないため、新しいカスタムプロファイルを作成して有効にする必要があります。

コード書式設定ルールの管理と適用

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

ReSharper コードのフォーマットルールの豊富なセットには、デフォルトの Visual Studio フォーマットオプションと多数のベストプラクティスを考慮したデフォルト設定があります。書式設定ルールのすべての詳細を構成し、コードにルールを適用できます。これらのルールは、ReSharper がコード補完およびコード生成機能を使用して新しいコードを生成し、コードテンプレートを適用し、リファクタリングを実行するときに適用されます。書式設定ルールは、現在の選択範囲、現在のファイル、またはソリューション全体までのより大きなスコープの既存のコードにも適用できます。

ReSharper は、共有設定のメカニズムを使用してフォーマット設定を保存します。コード編集 | C++ | スタイルの書式設定グループのオプションページでフォーマットルール設定できます。また、EditorConfig およびクラン形式ファイルにフォーマット設定を保存して共有することもできます。

オプションページを掘り下げる代わりに、コードのブロックを選択し、Alt+Enter を押してフォーマット | 構成を選択し、このブロック適用可能なフォーマットルール構成して、このブロックでの変更を確認できます。

個別の書式設定を調整する別の方法は、既存のコードサンプルから書式ルールを学習することです。これは、選択されたブロック、現在のファイル、ファイルのセット、1 つ以上のプロジェクト、またはソリューション全体です。ReSharper は、選択したサンプルを分析し、現在の設定とは異なるフォーマットルールをリストします。その後、検出されたルールを確認し、必要に応じて変更し、目的の設定レイヤーに保存できます。
詳細については、既存のコードのフォーマットルールを使用するを参照してください。

ネーミングスタイル

ReSharper は、コード内のシンボルの命名スタイルを定義、制御、および適用できます。命名スタイルは、一連の制約として特定の識別子をターゲットとする一連の規則として実装されます。各ルールには、接尾辞、接頭辞、複合語の大文字の使用などを定義する 1 つ以上の関連付けられたスタイルを含めることができます。

これらのルールは、ReSharper がコード補完およびコード生成機能を使用して新しいコードを生成し、コードテンプレートを適用し、リファクタリングを実行するときに考慮されます。ReSharper は、命名規則の違反を検出して修正するのにも役立ちます。必要に応じて、命名規則の自動チェックを構成または無効にできます。

ReSharper オプション(Alt+R O)のコード編集 | C++ | ネーミングスタイルページで、ルールセットを定義済みの命名スタイルスキーム(STL、Google、LLVM、CamelCase、Microsoft)のいずれかにリセットできます。これらのスキームをそのまま使用するか、事前定義されたルールセットに基づいて独自のルールセットを構成できます

命名ルールセットをカスタマイズする

  1. メインメニューから ReSharper | オプションを選択するか、Alt+R O を押してから、左側のコード編集 | C++ | ネーミングスタイルを選択します。

  2. ページの右上隅にあるスキームにリセットセレクターを使用して、ルールセットの基礎となる命名スタイル体系を選択します。

  3. 命名規則が設定されている識別子とその他の項目のリストが表示されます。

  4. アイテムのルールを変更するには、それを選択して編集 ThemedIcon EditorOptionsPage Screen Gray png をクリックするか、単にダブルクリックします。リストにない項目にルールを追加するには、追加 ThemedIcon AddedParameter Screen Gray png をクリックします。

  5. 開いたダイアログで、新規または変更したルールを設定できます。

    ReSharper: Configuring a C++ naming rule

  6. ダイアログの左側で、ルールの説明を指定できます。これは、ルールが適用される識別子の種類を理解できます。左側の他のコントロールを使用すると、種類、指定子、およびアクセス可能性によって、ルールの適用を特定の識別子に制限できます。
    指定子にはトライステートチェックボックスが設定されていることに注意してください。チェックマークはこの指定子のみを意味し、クリアはこの指定子なしのみを意味し、四角はこの指定子の有無を意味します。上の図は、public static 関数に適用されるルールを示しています。

  7. ダイアログの右側で、ルールのスタイルを設定できます。少なくとも 1 つのスタイルが必要です。この規則に他のスタイルを許可したい場合は、追加 ThemedIcon AddedParameter Screen Gray png をクリックしてください。単一の規則に複数のスタイルがある場合、対応するシンボル名がこれらのスタイルの少なくとも 1 つに一致すると、ReSharper はコードスタイル違反を検出しません。それ以外の場合、ReSharper はコードスタイル違反を検出し、デフォルトスタイル(リストの最初のスタイル)に従ってシンボルの名前を変更することを提案します。デフォルトのスタイルを変更するには、上へ移動 ThemedIcon Up Screen Gray png ボタンと下へ移動 ThemedIcon Down Screen Gray png ボタンを使用します。

  8. 特定のスタイルを設定するには、リストでスタイルを選択し、接頭辞、接尾辞を設定して、命名スタイルを選択します。

  9. 不要なスタイルを削除するには、リスト内でスタイルを選択し、除去 ThemedIcon Delete Screen Gray png をクリックします。

  10. 必要に応じて、ReSharper が他のコードスタイルの違反を検出できるように、このルールに関連するコードスタイルの違反の検出を無効にすることができます。そうするには、インスペクションを使用可能にするチェックボックスをオフにします。

  11. 設定をクリックして、ルール設定の編集ダイアログを閉じます。

  12. ネーミングスタイル設定ページに戻ったら、上へ移動ThemedIcon Up Screen Gray png、および下へ移動 ThemedIcon Down Screen Gray png ボタンを使用してルールの優先順位を変更します - 複数のルールが特定の識別子の種類に一致する場合は、リストの上位にあるルールが適用されます。つまり、制限が多いルールは制限が少ないルールよりも上位に配置する必要があります。例:関数パブリック静的関数の両方の規則が public static 関数に適用されるため、パブリック静的関数規則はリストの上位に配置されます。

    ReSharper: Naming style settings for C++

  13. オプションダイアログで保存をクリックして変更を適用し、ReSharper に保存場所を選択させるか、次へ保存リストを使用して変更を特定の設定レイヤーに保存します。詳細については、ReSharper 設定の管理と共有を参照してください。

UE4 プロジェクトで作業する場合、ReSharper は自動的に Unreal Engine コーディング標準(英語)に対応する命名規則セットを適用しますが、これは構成可能ではありません。つまり、UE4 プロジェクトで作業しているときは、コード編集 | C++ | ネーミングスタイル設定ページで設定されたルールは無視されます。Unreal Engine コーディング標準の代わりに設定済みのルールセットを使用したい場合は、対応するインスペクションを無効にすることができます。

ReSharper: Applying UE4 naming conventions

cv 修飾子の配置

ReSharper を使用すると、cv-qualifiers生成コードに配置できます。ReSharper オプションのコード編集 | C++ | コードスタイルページでは、型指定子の前後に cv 修飾子を置くかどうか、および const および volatile 修飾子の順序を指定できます。

ディレクティブスタイルを含める

ReSharper オプションのコード編集 | C++ | コードスタイルページでは、生成コードの include ディレクティブでパス区切り文字としてスラッシュを使用するかバックスラッシュを使用するかを指定できます。ヘッダーファイルで前方宣言を生成するかどうかを指定することもできます。

インクルードのソート

ReSharper では、#include ディレクティブをソートし、既存のグループを再配置し、空白行で区切られた新しいグループを作成できます。

キャレットが #include ディレクティブ上にある場合、#include ディレクティブを並べ替えるサブメニューには 3 つのコンテキストアクションがあります。

#include ディレクティブを並べ替える
#include ディレクティブの並べ替えと再グループ化 このアクションは、すべての #include グループを 1 つにマージしてから、それをソートし、構成された設定に従って新しいグループに分割します。
ReSharper C++: Sort and regroup #include directives
各 #include グループを個別に並べ替える このアクションは、各グループ内の #include ディレクティブを個別にソートし、既存のグループ化を変更しません。
ReSharper C++: Sort each #include group separately
現在の #include グループのみを並べ替える このアクションは、キャレットがオンになっているグループをソートします。

ReSharper オプション(Alt+R O)のコード編集 | C++ | #include の順序ページで順序ルールを構成できます。

ReSharper は、.clang-format ファイルからのソート設定のインポートをサポートしています。ReSharper オプション(Alt+R O)のコード編集 | 一般的なフォーマッタスタイルページで .clang-format スタイルのコードスタイルフォームを読み取るがチェックされている場合、.clang-format ファイルからの IncludeBlocksIncludeCategoriesIncludeIsMainRegex、および SortIncludes 設定は、clang 形式と同じ方法で #include ディレクティブをソートするために使用されます。

インクルードのソートはコードのクリーンアップでも適用できます。

デフォルトのポインタ初期化子のスタイル

0 , nullptr または NULL をポインター初期化子の優先初期化子として指定できます(例: const char *foo = nullptr)。ReSharper オプションのコード編集 | C++ | コードスタイルページで設定を変更できます。

ファイルヘッダスタイル

著作権通知やその他の識別メッセージにファイルヘッダーを使用するのが一般的です。ReSharper を使用すると、デフォルトのヘッダーテキストを設定し、ソリューションのコードファイルに自動的に挿入することができます。

構成されたファイルヘッダーは、ファイルテンプレートを使用して作成した場合、新しいファイルに挿入できます。そのためには、テンプレートパラメーターを追加し、それに 「ファイルヘッダー」マクロを関連付ける必要があります。

ファイルヘッダーを既存のファイルに適用する場合は、コードクリーンアップで実行できます。

最終更新日 :

関連ページ:

スコープの修正

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

コードのクリーンアップ

ReSharper | 編集 | コードのクリーンアップ ...コマンドラインユーティリティを使用してコードのクリーンアップを実行することもできます。ReSharper を使用すると、フォーマットやその他のコードスタイル設定を一括モードで適用して、1 つ以上のファイル、プロジェクト、またはソリ...

ReSharper 設定の管理と共有

ReSharper は、階層化された設定のメカニズムを使用して環境設定を保存するため、次の利点があります。さまざまなソリューションで異なる設定を行うことができます。環境設定のさまざまなサブセットを別の場所に保存し、特定のソリューションで作業するときに環境設定を組み合わせることができます。例:記号のア...

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

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

コード生成

ReSharper は、定型コードを生成するさまざまな方法を提供します。例:宣言されていないコードシンボルを使用し、これらのシンボルを用途に基づいて自動的に生成したり、型メンバーを生成したりすることができます。現在のファイルで設計時コードインスペクションが有効になっている場合、ReSharper は...

EditorConfig を使用する

どのフォーマットスタイルの設定がファイルフォーマット情報ウィンドウ(ReSharper | Windows | ファイルフォーマット情報)の現在のファイルに影響するかを見ることができます。ReSharper は、EditorConfig形式で定義されたコード形式スタイル、コード構文スタイル、C#