ReSharper 2019.3ヘルプ

クイックフィックスの例

クイックフィックスは、さまざまな状況で利用できますが、リストアップするには大きすぎます。ReSharperは、サポートされているすべての言語で合計1200を超えるクイックフィックスを提供します。ここでは、状況の小さな選択を使用して使用する方法を示します:

型のミスマッチ

式の型を、式コンテキストに適用可能な型に暗黙的にキャストできない場合、ReSharperはこのエラーを検出し、エディターで強調表示します。ハイライトされたエラーにキャレットを配置して Alt+Enterを押すと、次のリストからクイックフィックスを選択できます。

ReSharper: Type mismatch quick-fix

提案されているクイックフィックスを適用した場合の影響を下の表に示します。

クイックフィックス

効果

stringにキャスト

ReSharper: Type mismatch quick-fix

stringに安全にキャスト

ReSharper: Type mismatch quick-fix

o のタイプを stringに変更

ReSharper: Type mismatch quick-fix

s のタイプを objectに変更

ReSharper: Type mismatch quick-fix

ToString()を呼び出す

ReSharper: Type mismatch quick-fix

未定義の変数

ReSharperがコード内で未定義の変数を検出すると、エラーが強調表示されます。強調表示されたエラーでキャレットを配置し、Alt+Enter を押すと、以下のクイックフィックスのリストが表示されます。

ReSharper: Undefined variable quick-fix

提案されているクイックフィックスを適用した場合の影響を下の表に示します。

クイックフィックス

効果

ローカル変数 sを作成する

新しいローカル変数 s が作成され、目的のタイプを選択することができます。

包含メソッドにパラメーター s を作成する

新しいパラメータがメソッドシグネチャーに追加されます。

ReSharper: Undefined variable quick-fix

その他を作成

対応するクラスのフィールドまたはプロパティを作成することを選択できるサブメニューを開きます。例:フィールドの作成を選択すると、現在のクラスに新しいプライベートフィールド s が作成されます。新しいフィールドの正しいタイプを選択するのに役立つ次の提案が表示されます。

ReSharper: Undefined variable quick-fix

すべての sを変更

すべてを変更を選択すると、次の提案が表示されます。

ReSharper: Undefined variable quick-fix

新しい名前は一度だけ入力してください。ReSharperは未定義変数の他のすべての発生を変更します:

ReSharper: Undefined variable quick-fix

未定義のメソッド呼び出し

ReSharperがコード内の未定義メソッドへの呼び出しを検出すると、エラーが強調表示されます。強調表示されたエラーでキャレットを位置付けて Alt+Enterを押すと、ReSharperは以下のクイックフィックスのリストを表示します。

ReSharper: Undefined method call quick-fix

クイックフィックスを適用すると、コードは次の表のように変更されます。

クイックフィックス

効果

メソッド ResolveManagedReferenceを作成する

このクイックフィックスでは、メソッドコールから派生したシグネチャーを使用して新しいメソッドを宣言し、トップダウンプログラミングを好む開発者に役立ちます。この例では、ReSharperは戻り値の型を正しく推測して次の宣言を作成します。

ReSharper: Undefined method call quick-fix

ReSharperはまた、新しいメソッドのパラメータの適用可能な型と名前を提案します:

ReSharper: Undefined method call quick-fix

その他を作成

このサブメニューには、補助コードの作成を含むその他のクイックフィックスが含まれています。例:

  • 包含メソッドにパラメータ ResolveManagedReference を作成し、階層を更新します。
    このクイックフィックスは、未解決のシンボルから現在のメソッドに新しいパラメーターを作成し、メソッドが持つ可能性のあるベースメンバーと継承にこのパラメーターを導入します。

  • 包含メソッドにパラメータ ResolveManagedReference を作成します
    このクイックフィックスは、未解決のシンボルから現在のメソッドに新しいパラメーターを作成しますが、そのベースメソッドまたは継承を更新しません。

すべての ResolveManagedReferenceを変更

未定義の変数に対応するクイックフィックスと同様に、このクイックフィックスを使用すると、シンボル someMethodのすべての出現をすばやく置き換えることができます。

忘れられたメソッドの戻り

メソッドが値を返すことが期待されているが、return ステートメントを提供するのを忘れた場合、ReSharperは、問題のあるメソッドの終了括弧を強調表示することにより、それについて警告します。ハイライトされたエラーにキャレットを配置して Alt+Enter を押すと、次のクイックフィックスが表示されます。

ReSharper: Forgotten method return quick-fix

クイックフィックス

効果

return ステートメントを追加します

クイックフィックスが適用された後、ReSharperは nullを返す return ステートメントを追加します。

メソッドがvoidを返すようにする

クイックフィックスが適用された後、ReSharperはメソッドの初期戻り型を voidに置き換えます。

Usingディレクティブがありません

ファイルに対応するusingディレクティブを書き忘れたために解決できないタイプ名がコードに含まれているときはいつでも、小さなポップアップがタイプをインポートすることを提案します。

ReSharper: Namespace import quick-fix

Alt+Enterを押すと、適切なusingディレクティブが挿入されます。名前が一致する複数のタイプがある場合は、使用するタイプを選択するよう求められます(詳細はインポートする名前空間を参照)。

ポップアップが表示されたときに、何らかの理由で必要な名前空間をインポートしないことを選択した場合、またはReSharperオプションのコード・インスペクション | 設定ページでポップアップを使用して「名前空間をインポート」アクションを表示するチェックボックスをオフにした場合は、キャレットをインポートされていない型に置き、Alt+Enter を押して対応するクイックフィックスを選択することで、いつでも型をインポートできます。

ReSharper: quick-fixes for missing namespace import

たとえば、MyFramework.MyCollections.Listなど、システムタイプに似たソリューションがソリューションにある場合など、いくつかのシンボルを提案しないこともできますが、実際には使用していません。そのようなシンボルを提案から除外するには、ReSharperオプション(Alt+R,,O)のコード・インスペクション | 設定 | 自動インポートページのインポートおよび補完から除外リストに追加します。エントリの形式は Fully.Qualified.Name , Fully.Qualified.Name.Prefix*または *Fully.Qualified.Name.Suffixです。ジェネリック型は List`1として指定されます。

不足している非同期修飾子

await 演算子を含むが非同期として定義されていないメソッドがある場合、ReSharperはそのような不一致を検出し、対応するクイックフィックスを使用してこの問題を修正します。

次の前で改ページ:

ReSharper: Missing async modifier quick-fix

クイックフィックスの適用:

ReSharper: Missing async modifier quick-fix

次の後で改ページ:

ReSharper: Missing async modifier quick-fix

ループをLINQ式に変換する

C# 3.0とLINQを使用することで、開発者はその意図をコンパイラに直接記述することで、データ集約型コードをより簡単に記述することができます。ReSharperは、LINQ構文を使用して書き換え可能なコードを検出し、自動的に変換を実行します。

次の前で改ページ:

ReSharper: Converting a loop to a LINQ expression quick-fix

クイックフィックスの適用:

ReSharper: Converting a loop to a LINQ expression quick-fix

次の後で改ページ:

ReSharper: Converting a loop to a LINQ expression quick-fix

メソッドのパラメータと戻り値でIEnumerableに移行する

ReSharperは、コードベースをスキャンして、Array , ListArrayListなどのより具体的なタイプではなく、IEnumerable を安全に返し受け入れられるメソッドを検出します。

次の前で改ページ:

ReSharper: Migrating to IEnumerable in method parameters and returns

クイックフィックスの適用:

ReSharper: Migrating to IEnumerable in method parameters and returns

次の後で改ページ:

ReSharper: Migrating to IEnumerable in method parameters and returns

代入文をオブジェクトイニシャライザに変換する

ReSharperは、代入文をオブジェクトイニシャライザに変換するコンテキストアクションとクイックフィックスの両方を提供します。コンテキストアクションを使用すると、フィールドの割り当てを1つずつイニシャライザに追加できますが、クイックフィックスではすべてを一度に追加できます。クイックフィックスの仕組みは次のとおりです。

次の前で改ページ:

ReSharper: Converting assignment statements to object initializers

クイックフィックスの適用:

ReSharper: Converting assignment statements to object initializers

次の後で改ページ:

ReSharper: Converting assignment statements to object initializers

静的メソッド呼び出しを拡張メソッド呼び出しに変換する

ReSharperは、従来のC#静的メソッドとして拡張メソッドを呼び出すと、標準の拡張メソッド呼び出しの習慣にすばやく準拠できます。

次の前で改ページ:

ReSharper: Converting static method invocation to extension method call

クイックフィックスの適用:

ReSharper: Converting static method invocation to extension method call

次の後で改ページ:

ReSharper: Converting static method invocation to extension method call

匿名メソッドをラムダ式に変換する

ReSharperは、匿名メソッドをラムダ式に変換することを提案しています。逆の機能はコンテキストアクションとして提供されます。

次の前で改ページ:

ReSharper: Converting anonymous method to lambda expression

クイックフィックスの適用:

ReSharper: Converting anonymous method to lambda expression

次の後で改ページ:

ReSharper: Converting anonymous method to lambda expression

自動プロパティに変換する

ReSharperを使用すると、従来のプライベートフィールドベースのプロパティをC# 3.0で実装された自動プロパティに素早く変換できます。詳細は、自動プロパティを使用するを参照してください。

次の前で改ページ:

ReSharper: Converting to auto-property

クイックフィックスの適用:

ReSharper: Converting to auto-property

次の後で改ページ:

ReSharper: Converting to auto-property

型パラメータを不変にする

型パラメータの使用箇所がその分散に違反するとき、ReSharperはパラメータを不変にすることを提案します:

次の前で改ページ:

ReSharper: Making type parameter invariant

クイックフィックスの適用:

ReSharper: Making type parameter invariant

次の後で改ページ:

ReSharper: Making type parameter invariant
最終更新日: 2020年1月24日