フォーマットルールを構成する
フォーマットルールは非常に高いレベルの詳細に設定できます。例: 特定の演算子の周囲に空白を配置するか、入れ子になった using
文をインデントするかを定義できます。
オプションでコードフォーマットルールを構成する
メインメニューから Alt+R O を押します。
を選択するか、ページを使用して、すべての言語で適用されるオプションを確認し、設定します。
ページを使用して、言語固有のフォーマットを構成します。これらのページでは、下部にあるプレビュー領域を使用して、ReSharper がコードに特定の設定を適用する方法を表示できます。
オプションダイアログで保存をクリックして変更を適用し、ReSharper に変更を保存する場所を選択させるか、保存先セレクターからこのレイヤーを選択して特定の設定レイヤーに変更を保存します。詳細については、「resharper 設定の管理と共有」を参照してください。
選択したコードのフォーマットルールを構成する
設定ページを掘り下げる代わりに、コードのブロックを選択し、そのブロックに適用できるフォーマット規則のみを構成できます。変更された設定が、エディターで選択したブロックのコードにどのように影響するかを確認できます。
エディターで、フォーマットするコードのブロックを選択します。
Alt+Enter を押して、
を選択します。開いたダイアログに、選択したコードブロックに影響を与えるすべての構文スタイルとフォーマット規則が表示されます。コードブロック自体は点線のフレームで囲まれます。
フォーマットルールを変更すると、選択したブロックのコードにどのように影響するかがわかります。
ダイアログで保存をクリックして変更を適用し、ReSharper に変更を保存する場所を選択させるか、保存先セレクターからこのレイヤーを選択して特定の設定レイヤーに変更を保存します。詳細については、「resharper 設定の管理と共有」を参照してください。
保存先セレクターで .editorconfig を選択して、構成済みのフォーマットルールを EditorConfig にエクスポートすることも選択できることに注意してください。
必要に応じて、「コメントとして保存」をクリックします。こうすることで、変更内容は選択したブロックの前後にコメントとして保存されます。これにより、設定を変更せずに、必要なフォーマットルールをローカルでオーバーライドできます。
ReSharper はダイアログを閉じ、変更されたフォーマットルールをコードブロックに適用します。
既存のコードから書式ルールを学ぶ
個々のフォーマット設定を微調整する別の方法は、既存のコードサンプルからフォーマットルールを学習することです。これは、選択したブロック、現在のファイル、ファイルのセット、1 つ以上のプロジェクト、ソリューション全体です。ReSharper は、選択したサンプルを分析し、現在の設定とは異なるフォーマットルールを一覧表示します。その後、検出されたルールを確認し、必要に応じて変更し、目的の設定レイヤーまたは .editorconfig または .clang-format 形式の構成ファイルに保存できます。
フォーマット設定を分析するスコープを選択します。
エディターで選択を行い、選択範囲のフォーマット設定を分析します。
ファイル内の任意の場所にキャレットを配置して、ファイル内のフォーマットを分析します。
ソリューションエクスプローラーで 1 つ以上のアイテムを選択して、これらのアイテムとその子アイテムにあるファイルのフォーマット設定を分析します。
以下のいずれか 1 つを実行します:
メインメニューから
を選択します。コードサンプルが選択項目の場合は、Alt+Enter を押して
を選択します。
現在の設定と異なる規則を確認してください。
ダイアログで保存をクリックして変更を適用し、ReSharper に変更を保存する場所を選択させるか、保存先セレクターからこのレイヤーを選択して特定の設定レイヤーに変更を保存します。詳細については、「resharper 設定の管理と共有」を参照してください。
コードサンプルが選択されている場合は、必要に応じてコメントとして保存をクリックします。こうすることで、変更内容は選択したブロックの前後にコメントとして保存されます。これにより、設定を変更せずに、必要なフォーマットルールをローカルでオーバーライドできます。
コメントを使用してフォーマッターを構成する
ReSharper では、実際にルールを変更することなく、設定済みのフォーマットルールから逸脱することができます。コードの特定の部分でフォーマッタを完全に無効にすることもできます。
フォーマッタは、C#、C++、JavaScript、TypeScript、HTML、Protobuf のコメントで設定できます。
フォーマッタを無効にするには、次のコメントを使用します。
// @formatter:off
— この行の後のフォーマッタを無効にする// @formatter:on
— この行の後にフォーマッタを有効にする
フォーマッタを無効にしすぎると、個々のフォーマットルールをコメントで変更できます。
コメントを使用して個々の書式ルールを変更する
調整するフォーマットルールの名前を見つけます。ReSharper オプション Alt+R, O の ページで調べるか、、目的のルールが適用されるコードブロックを選択し、Alt+Enter を押して、選択のフォーマット | 構成を選択することもできます。表示されるダイアログで、選択範囲に影響するすべてのルールを調べ、ルールを変更して変更のライブプレビューを確認することもできます。このダイアログで、コメントとして保存をクリックすると、変更されたすべてのルールに対して必要なコメントが ReSharper によって生成されます。
ルールの名前がわかっている場合は、EditorConfig プロパティのインデックスでその ID を検索できます。ブラウザーで検索を使用します。例: セミコロンの前のスペースをトリガーするルールを検索する場合は、セミコロンの前を検索すると、ID:
space_before_semicolon
が見つかります。インデックスの Web ページでルールの ID を見つけたら、説明リンクをクリックして、このルールに許可されている値を確認します。
space_before_semicolon
の例に従って、true
またはfalse
を受け入れることができます。ルールを変更するコードの前に、次のコメントを追加します。
// @formatter:<rule_ID> <value>例: セミコロンの前のスペースを有効にするには、次を追加します。
// @formatter:space_before_semicolon true.
ルールの新しい値は、ファイルの終わりまで適用されます。オプションで構成された値に戻りたい場合は、次のコメントを追加してください。
// @formatter:<rule_ID> restore例:
// @formatter:space_before_semicolon restore.
フォーマットルールを保存および共有する
レイヤーベースの設定のメカニズムを使用して、コードのフォーマットを保存します。とりわけ、このメカニズムにより、さまざまなソリューションのさまざまな設定を維持したり、これらの設定を VCS に保持したり、チームメンバーと自動的に共有することができます。
すべての言語の場合は EditorConfig で、C++、JavaScript、TypeScript の場合は Clang 形式を使用して、フォーマット設定を構成することもできます。これらの設定は、ソリューション階層のさまざまなレベルの .editorconfig、.clang-format、_clang-format ファイルに保存できます。ファイルは通常 VCS に置かれるため、そこで定義された設定はプロジェクトチーム間で共有されます。
ReSharper を使用すると、EditorConfig を使用して、ReSharper のオプションダイアログで使用できるフォーマット設定を定義できます。サポートされている EditorConfig プロパティの名前と説明は、EditorConfig リファレンスにあります。
Clang-Format に関しては、ReSharper はサポートされている Clang-Format オプションのみを適用します。
.editorconfig ファイルに定義されているフォーマットプロパティは、この .editorconfig ファイルが適用される範囲の ReSharper 設定で定義されているものと同じプロパティを上書きすることに注意してください。Clang-Format で定義されたフォーマットプロパティは、ReSharper 設定と EditorConfig 設定の両方を上書きします。
フォーマットオプションを共有するときに知っておくべきもう 1 つの重要な点は、インデントスタイル (タブ / スペース) とサイズがデフォルトで Visual Studio オプションから取得されることです。特定の言語のこれらの設定を共有する場合は、ReSharper オプション Alt+R, O の ページでインデントスタイルとサイズを Visual Studio から使用するチェックボックスをオフにして、変更を共有設定レイヤーに保存します。
フォーマットのトラブルシューティング
独自の設定、Visual Studio 設定、自動検出設定、EditorConfig、Clang-Format など、フォーマット設定を構成する方法は多数あります。これにより構成が非常に柔軟になりますが、コードの再フォーマット後に予期しない結果が得られた場合、フォーマット設定が実際にどこから来ているのかを理解するのが難しい場合があります。
現在のファイルのフォーマットに影響する設定と構成ファイルを調べるには、メニューから
を選択します。ここでは、現在開いているファイルのコードスタイル設定の起源を調べることができます。
インデントのソースとその値。
インデント設定の自動検出のステータス。
現在のファイルに影響する EditorConfig サポートとすべての .editorconfig ファイルのステータス。
現在のファイルに影響を与える StyleCop サポートおよび StyleCop ファイル (RuleSet および Settings.StyleCop) のステータス。
関連ページ:
EditorConfig を使用する
ReSharper は、EditorConfig 形式で定義されたコード形式スタイル、コード構文スタイル、C# の命名スタイル、コードインスペクション重大度レベルをサポートします。Matthell は、ReSharper が EditorConfig を使用してフォーマットルールの設定全体をどのように維持するのをヘルプいるかを示しています。EditorConfig とは何ですか? ReSharper はどのようにそれを拡張しますか? :EditorConfig は、同じコードで作業しているチームメ...
ReSharper 設定の管理と共有
ReSharper は、階層化された設定のメカニズムを使用して環境設定を保存するため、次の利点があります。さまざまなソリューションで異なる設定を行うことができます。環境設定のさまざまなサブセットを別の場所に保存し、特定のソリューションで作業するときに環境設定を組み合わせることができます。例: 記号のアイコンとチーム設定のコード形式を個人設定で保存し、これらの設定を自動的に組み合わせることができます。設定の特定のサブセットを VCS に保持することにより、チーム内の設定を同期できます。ReShar...
Clang 形式の使用
C++ ファイル (および部分的に JavaScript および TypeScript ファイル) では、ReSharper は Clang 形式で定義されたフォーマットスタイルをサポートします。デフォルトでは、Clang-Format 構成ファイルは、フォーマットスタイル設定のソースとして自動的に使用されます。Clang フォーマットとは何ですか ? ReSharper はどのようにサポートしていますか ?:Clang-Format は、広く使用されている C++ コードフォーマッタです。YAM...
フォーマットルールを適用する
編集および貼り付けられたコードの自動フォーマット:エディターでコードを入力すると、セミコロンを入力するとすぐに ReSharper によって式が再フォーマットされ、閉じ括弧を入力するとすぐにコードブロックが再フォーマットされます必要に応じて、ReSharper オプション Alt+R, O のページでこれらの種類の自動フォーマットを無効にすることができます。ReSharper では、コードを貼り付けるときにフォーマットルールを自動的に適用することもできます。デフォルトでは、貼り付けられたコードは完...
EditorConfig プロパティのインデックス
このページには、コード形式ルール、コードインスペクション重大度レベル、およびコード構文スタイルルールの構成に使用できるカスタム ReSharperEditorConfig プロパティがリストされています。一部のプロパティは 1 つの言語に適用され、他のプロパティは一度に複数の言語に適用されることに注意してください。ただし、各多言語プロパティには、特定の言語に対してそれをオーバーライドできるプロパティがあります (例: および)。波括弧レイアウト - アクセサー宣言 (C#) コード本体 - プロパテ...
仮想フォーマッターを使用する
適切にフォーマットされたコードは操作が簡単ですが、コードのフォーマットが好みに合わないシナリオがいくつかありますが、コードを再フォーマットすることはできません。異常な形式のサードパーティソースを読んでいます。個人的なフォーマットは、取り組んでいるチーム共有プロジェクトのフォーマット規則と矛盾しています。変更ごとにレビューが必要になるため、ソースコードへの不必要な変更は避けたいと考えています。このようなシナリオでは、Virtual Formatter が便利です。実際にフォーマットを変更することな...