コンテキストアクション
コンテキストアクションは、エディターで直接利用できるコード変換ヘルパーです。クイックフィックスとは対照的に、コンテキストアクションは問題の解決やコードの改善を目的としているためはなく、アクセス修飾子の変更、null をチェックするコードの生成、'foreach' の 'for' への変換などの小さな変更をすばやく導入できます。
ReSharper は、サポートされているすべての言語で数百のコンテキストアクションを提供します。完全なリストは、ReSharper オプション Alt+R, O の ページとコンテキストアクションのリストにあります。
コンテキストアクションを適用する
現在のキャレット位置でコンテキストアクションが使用可能になるとすぐに、ReSharper は対応するアクションインジケーター をキャレットの左側に表示します。しかし時々、ReSharper は現在のキャレットポジションのために文脈上利用可能ないくつかの機能を提供します。この場合、最も優先度の高いアクションに対応するアクションインジケータが表示され、その他のすべてのアクションは、アクションインジケータをクリックするか、Alt+Enter を押してアクションリストを展開したときにのみ表示されます。コンテキストアクションは最も優先順位が低いため、アクションリストの一番下に表示されることがよくあります。
ほとんどの場合、コンテキストアクションはすぐに適用されます。ただし、一部のアクションでは、コードをどの程度正確に変換するかを選択するためにユーザーの操作が必要です。このような場合、ホットスポットセッションがエディターにデプロイされ、提案された値の 1 つを選択するか、アクティブな入力位置に独自の値を指定できます。
例: 'foreach' を介してコレクションを反復するコンテキストアクションを適用すると、次のようになります。
foreach
ステートメントを作成した後、ホットスポットセッションを使用すると、生成されたステートメントの編集可能なパラメーターを補完させることができます。
ホットスポットセッションを完了するには:
ReSharper が現在のパラメーターの値を提案している場合は、Up と Down の矢印キーを使用して推奨値のリストを移動するか、目的の値を入力してください。
Tab または Enter を押して値を受け入れ、次のパラメーターの入力位置に移動します。これが最後のパラメーターである場合、ホットスポットセッションは完了し、キャレットはセッション用に定義された終了位置に移動します。
Shift+Tab を押すと、入力フォーカスが前のパラメーターの入力位置に移動します。
Esc を押してホットスポットセッションを終了します。この場合、すべてのセッションパラメーターはデフォルト値で初期化されます。
コンテキストアクションを構成する
デフォルトでは、ほとんどのコンテキストアクションが有効になっていますが、役に立たないと思われるアクションは簡単に無効にすることができます。
メインメニューから Alt+R O を押します。
を選択するか、オプションダイアログの検索フィールドを使用して、特定のコンテキストアクションを見つけます。
または、
ページを開き、無効にするコンテキストアクションを探します。コンテキストアクションの横にあるチェックボックスをオフにして、無効にします。
オプションダイアログで保存をクリックして変更を適用し、ReSharper に変更を保存する場所を選択させるか、保存先セレクターからこのレイヤーを選択して特定の設定レイヤーに変更を保存します。詳細については、「resharper 設定の管理と共有」を参照してください。
より広い範囲でコンテキストアクションを適用する
コンテキストアクションの中には、現在のファイル、現在のプロジェクト、ソリューション全体で、より広い範囲の類似したコード項目を自動的に検索および変更できるものがあります。これらのコンテキストアクションは、スコープを修正と同じように機能します。例: すべてのタイプを現在のファイルから新しい一致するファイルに移動できます:
広い範囲に適用できるコンテキストアクションの完全なリストは次のとおりです。
C#
別のアクセサーを追加する
switch セクションステートメントにブロック波括弧を追加する
波括弧の追加
分解パターンコンポーネント名を追加
匿名プロパティの明示的な名前を追加する
引数に名前を追加
タプルコンポーネント名を追加
「#pragma」ディレクティブに警告説明コメントを追加します
'set' と 'init' アクセサーを変更します
匿名型をタプルに変換する
配列の作成またはコレクションの初期化をコレクション式に変換する
コレクションの初期化子を 'Add' メソッド呼び出しに変換する
明示的な実装から明示的な実装への変換
式の本文メンバーを文の本文に変換する
式を「StringBuilder」に変換します
式を「StringBuilder」呼び出しに変換する
暗黙的インターフェースから明示的インターフェースへの変換を変換する
整数リテラルをバイナリ形式に変換する
整数リテラルを 16 進形式に変換します
整数リテラルを 10 進形式に変換する
メンバー値チェック式を再帰パターンに変換する
複数行の文字列を個別の 'AppendLine' 呼び出しに変換します
not null チェックをオブジェクトパターンチェックに変換する
オブジェクト初期化子を代入文に変換する
オブジェクト初期化子をコンストラクター呼び出しに変換します
文字列補間を 'string.Format' 呼び出しに変換する
'switch' 式を条件付きに変換しますか? : 式
'switch' 式を 'if' ステートメントに変換します
'switch' 式を 'switch' ステートメントに変換します
'switch' ステートメントを 'if' ステートメントに変換します
'switch' ステートメントを 'switch' 式に変換する
配列作成式に変換する
コレクション初期化子に変換する
個別の「Append」呼び出しと「AppendLine」呼び出しに変換します
'using' ステートメントに変換する
逐語的に生の文字列補間に変換する
逐語的に生の文字列リテラルに変換する
'with' 式を一時変数のミューテーションに変換する
'params' パラメーター引数から明示的な配列作成を作成します
一次コンストラクターの明示的なコンストラクター宣言を作成します
プライマリコンストラクターのパラメーターの明示的なフィールド宣言を作成する
位置パラメーターの明示的なプロパティ宣言を作成します
コメントの削除
型、静的メンバー、または名前空間への参照を完全修飾する
メンバーアクセスをオブジェクトパターンに含める
インライン一時変数
エイリアスを使用したインライン化
変数を条件式にインライン化する
整数リテラルに桁区切りを挿入する
実数リテラルに桁区切りを挿入する
ジェネリクスメソッド呼び出し型引数を挿入する
ラムダ式パラメーターの署名を挿入する
ラムダ式の戻り値の型指定を挿入
デフォルトリテラルの後に型指定を挿入する
拡張メソッドを通常の静的メソッドとして呼び出す
属性を単一のセクションに結合する
ローカル変数宣言と代入を結合する
順次検査を null 伝播式にマージする
順次 null/ パターンチェックを単一のパターンチェックにマージします
#nullableenable に移行します
コンストラクター内の代入を初期化子に移動する
名前を一致させるためにタイプを別のファイルに移動する
static using ディレクティブを使用してインポートされた静的メンバーを修飾します
#region、#endregion ディレクティブを削除
引数名の除去
分解パターンのコンポーネント名を削除
数値リテラルから桁区切り記号を削除する
余分な括弧を削除する
( コードの構文スタイル: オプションの括弧を参照)
タプルコンポーネント名を削除
「?:」を null 伝播式で置き換える
配列初期化子を式で置き換える
自動実装されたプロパティアクセサーを明示的に実装されたアクセサーに置き換える
自動プロパティをプロパティおよびバッキングフィールドに置き換える
自動プロパティをプロパティと「フィールド」キーワードに置き換えます
明示的な型指定を 'var' に置き換える
「field」キーワードを明示的なフィールド宣言に置き換えます
null 伝播式を '?:' 条件演算子で置き換えます
個別の宣言宣言を単一の宣言に置き換える
'var' を明示的な型宣言で置き換える
アクセス式に置き換える
'using' ディレクティブを並べ替える
作成したタイプを指定します
enum メンバー値を指定する
'および' パターンを複数の 'is' 式またはガード式に分割する
属性を別々のセクションに分割する
ネストされたパターンに分割
リストパターンを複数の連続したチェックに分割する
null 伝播式を順次チェックに分割する
'または' パターンを複数の 'is' 式または 'switch' ケースに分割する
再帰パターンをいくつかの連続したチェックに分割します
「var」パターンを別の変数宣言に分割する
ブロックスコープの名前空間へ
ファイルスコープの名前空間へ
名前付きプロパティパターン
へ'ConfigureAwait(false)' 呼び出しを使用します
明示的破棄宣言を使用する
暗黙の破棄宣言を使用する
'nameof' 式を使用してエンティティの名前をキャプチャーします
割り当て /.Add() メソッド呼び出しの代わりにオブジェクト / コレクション初期化子を使用する
位置分解パターンを使用する
分解宣言 / パターンで別々の宣言を使用する
文字列補間を使用する
ターゲットタイプの新しいを使用する
複数の変数を持つ宣言を分解するには、「var (...)」構文を使用します
TypeScript
名前を一致させるためにタイプを別のファイルに移動する
VB.NET
文字列補間を使用する
コンテキストアクションのリスト
以下のリンクを使用して、特定の言語で使用できるコンテキストアクションの完全なリストを表示します。
この機能は、次の言語とテクノロジーでサポートされています。
ここで説明する手順と例では、C# の機能の使用について説明します。他の言語の詳細については、言語別 ReSharper セクションの対応するトピックを参照してください。
関連ページ:
コードの問題のクイックフィックス
ReSharper を使用すると、設計時に検出されたほとんどのコード問題を即座に修復できます。ハイライトされたコードの問題でを押して、問題を解決したり最適以下のコードを改善したりするための適切な方法を選択するのと同じくらい簡単です。クイックフィックスの適用:クイックフィックスは、ハイライトされたコードの問題の左側にアクションインジケーターとして視覚的に表示されます。これらのインジケーターは、コードの問題にキャレットを置くと表示されます。次のインジケーターは、簡単な修正を意味します。エラー重大
アクションインジケーターとアクションリスト
ReSharper が Visual Studio テキストエディターに追加する最も注目すべきものの中には、アクションインジケータとアクションリストがあります。これらは、ReSharper でサポートされているすべてのファイル(C#、VB.NET、XML、CSS、JavaScript、ASP.NET など)に表示され、使用可能なアクションについて通知し、適用できます。アクションインジケータ:アクションインジケーターは、設定に応じて、アクションバー、テキストエディターの左マージンおよび / また...
ReSharper 設定の管理と共有
ReSharper は、階層化された設定のメカニズムを使用して環境設定を保存するため、次の利点があります。さまざまなソリューションで異なる設定を行うことができます。環境設定のさまざまなサブセットを別の場所に保存し、特定のソリューションで作業するときに環境設定を組み合わせることができます。例: 記号のアイコンとチーム設定のコード形式を個人設定で保存し、これらの設定を自動的に組み合わせることができます。設定の特定のサブセットを VCS に保持することにより、チーム内の設定を同期できます。ReShar...
スコープを修正
ほとんどのクイックフィックスは、キャレットで現在の問題を修正できますが、中には (たとえば、未使用のディレクティブを削除する、フィールドを読み取り専用にする、冗長なキャストの除去など)、現在のファイル、現在のプロジェクト、ソリューション全体など、より大きな範囲で問題を自動的に見つけて修正できるものもあります。範囲内の修正を適用する:このような修正は、アクションリストの横に表示される小さな矢印で識別できます。範囲内の修正を適用する ReSharper のインスペクションでハイライトされているコード...
#region ブロックを追加および削除する
ReSharper は、コード内のブロックを迅速に追加、移動、削除できます。エディターでリージョンを管理する:エディター内で、現在の選択範囲をリージョンですばやく囲むことができます。ReSharper はおよびディレクティブを追加し、領域名を入力できる位置にキャレットを配置します。コード要素を移動する機能を使用して、リージョンをさまざまな方法で移動することもできます。ディレクティブとディレクティブを上下に移動して、領域に隣接する要素が含まれるようにしたり、要素が領域から外されるようにしたりでき...
ASP.NET MVC 特有の機能
ReSharper には、一般的な ASP.NET 機能に加えて、ASP.NET MVC での作業をより簡単にサポートする特殊機能があります。構文のハイライト:ASP.NET MVC メソッド呼び出しとパラメーターの特別な構文のハイライト: コード補完:文字列リテラルでアクションとコントローラーを参照するための専用コード補完: ナビゲーションと検索:さまざまなナビゲーション機能がアクションとコントローラーでも機能します。コード生成:使用箇所から新しいコントローラーとアクションを作成する: 最終...