ReSharper 2024.1 ヘルプ

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

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

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

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

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

コードスタイルの重要な側面は、コードのフォーマット方法、つまり、空白、タブ、改行を使用してコード要素を配置する方法、インデントにタブを使用するかどうかと方法、長い行を折り返すかどうかと方法などです。オン。

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

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

個々のフォーマット設定を微調整する別の方法は、既存のコードサンプルからフォーマットルールを学習することです。これは、選択したブロック、現在のファイル、ファイルのセット、1 つ以上のプロジェクト、ソリューション全体です。ReSharper は、選択したサンプルを分析し、現在の設定とは異なるフォーマットルールを一覧表示します。その後、検出されたルールを確認し、必要に応じて変更し、目的の設定レイヤーまたは .editorconfig または .clang-format 形式の構成ファイルに保存できます。

詳細は、既存のコードから書式ルールを学ぶを参照してください。

ネーミングスタイル

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 つのルールに複数のスタイルがある場合、対応するシンボル名がこれらのスタイルの少なくとも 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 プロジェクトで作業しているときは、ReSharper オプション Alt+R, Oコード編集 | 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 ファイルの IncludeBlocksIncludeCategoriesIncludeIsMainRegexSortIncludes 設定が、clang 形式と同じ方法で #include ディレクティブのソートに使用されます。

インクルードの並べ替えは、コードのクリーンアップでも適用できます。

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

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

ファイルヘッダースタイル

コピーライト表示やその他の識別メッセージにファイルヘッダーを使用するのが一般的です。ReSharper を使用すると、デフォルトのヘッダーテキストを構成し、それをソースファイルに自動的に挿入したり、それを使用して既存のファイルヘッダーを置き換えたりすることができます。

ReSharper オプションまたは .editorconfig ファイル内 でファイルヘッダースタイルを構成し、それをファイルテンプレートで作成された新しいファイルに追加し、コードクリーンアップを使用して既存のファイルにファイルヘッダーを挿入または置換できます。

異なるチームメンバーが作成および編集したファイルが同じヘッダースタイルを持つようにするには、ファイルヘッダー設定をチームと共有します

関連ページ:

スコープを修正

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

コードのクリーンアップ

ReSharper を使用すると、フォーマットやその他のコードスタイル設定を一括モードで適用して、1 つ以上のファイル、プロジェクト、ソリューション全体でコードスタイル違反を即座に排除できます。コードクリーンアッププロファイル:コードのクリーンアップには、ニーズに応じてさまざまな場合に適用できるさまざまな設定(プロファイル)があります。提供時の状態で使用可能な 3 つのデフォルトプロファイルがあります。コードのフォーマットのみを適用するビルトイン: コードの整形、コードのフォーマットとコードの...

ReSharper 設定の管理と共有

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

フォーマットルールを構成する

フォーマットルールは非常に高いレベルの詳細に設定できます。例: 特定の演算子の周囲に空白を配置するか、入れ子になった文をインデントするかを定義できます。オプションでコードフォーマットルールを構成するメインメニューからを選択するか、Alt+R O を押します。ページを使用して、すべての言語で適用されるオプションを確認し、設定します。ページを使用して、言語固有のフォーマットを構成します。これらのページでは、下部にあるプレビュー領域を使用して、ReSharper がコードに特定の設定を適用する方法を表示...

コード補完 (IntelliSense)

ReSharper は、高度な機能を備えた Visual Studio のネイティブコード補完(IntelliSense)を補完し、拡張します。例: あなたの入力に基づいて提案のリストを絞り込み、選択した型と拡張メソッドを自動的にインポートし、メソッド名を補完するときに括弧を追加し、型に応じて変数とフィールド名を提案するなど。ReSharper のコード補完の機能に慣れ親しむために、いくつかの実装の基本があります: デフォルトでは、ReSharper は Visual Studio のネイティブの...

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

編集および貼り付けられたコードの自動フォーマット:エディターでコードを入力すると、セミコロンを入力するとすぐに ReSharper によって式が再フォーマットされ、閉じ括弧を入力するとすぐにコードブロックが再フォーマットされます必要に応じて、ReSharper オプション Alt+R, O のページでこれらの種類の自動フォーマットを無効にすることができます。ReSharper では、コードを貼り付けるときにフォーマットルールを自動的に適用することもできます。デフォルトでは、貼り付けられたコードは完...