クイックフィックス

ReSharper は C#、VB.NET、XAML、ASP.NET その他のサポート対象言語で検出した問題のあるコードのほとんどを即座に修正できる 1200 個以上のクイックフィックスを提供しています。 クイックフィックスを適用するには、ハイライト表示された問題コードの上でAlt+Enterを押し、問題を解決したりコードを改善したりするための最適な方法を選択するだけです。

ReSharperでの問題コードのクイックフィックス

クイックフィックスを適用

クイックフィックスは多くの場合、赤(エラー)か黄色(警告、提案、ヒント)の電球で示され、キャレットをハイライト箇所に置いた時にハイライトされたコード行の左側に現れます。 電球をクリックするか、Alt+Enterを押すと、該当エラーに対して適用可能なクイックフィックスのリストを確認できます。 その後、リストから適切なクイックフィックスを選択すると、問題が最適な方法で解決されます。

広範囲にわたるReSharperクイックフィックスの適用(ファイル、プロジェクト、ソリューション)

範囲内での修正

一部のクイックフィックス(Remove unused directives(未使用のディレクティブの削除)Make field read-only(フィールドを読み取り専用にする)Remove redundant cast(不要なキャストの削除)など)は 現在のファイル内、現在のプロジェクト内やソリューション全体など より広い範囲で自動的に問題を発見し、修正できます。

そのような修正は、隣に表示された小さな矢印で確認できます。 この矢印をクリックするか、キーボードの右矢印キーを押すと、変更を適用する場所を選べます。

ReSharperの未解決シンボル用クイックフィックス

未解決シンボルの修正

ReSharperは未解決シンボルに起因する各種エラーに対し、次のようなさまざまなクイックフィックスをご提供しています:

  • あるシンボルがソリューション内のどこかで参照されている名前空間にある場合、ReSharperはファイル内に不足しているすべての名前空間をインポートするように提案するポップアップを表示します。
  • Create...クイックフィックスを使うと、使用されている文脈に応じてさまざまなシンボルの宣言を生成することができます。
  • その他、Find this type on nuget.org...を使って 問題を解決することもできます。 この操作を行うと、不足しているNuGetパッケージの検出とインストールを支援するNuGetブラウザが開きます。
ReSharperでの問題コードのクイックフィックス

対話型クイックフィックス

コード内に新しいシンボルを作成するクイックフィックスは、以下の例のように、しばしば対話型となっています。この例では、強制的に事前に列挙をList<>変数に変えることで、複数回列挙されているIEnumerableを修正するのを支援しています。

ReSharperが必須入力フィールドを赤い枠でハイライト表示している場合、提案された値を受け入れるか、それを修正してから、TabEnterを押して次の入力位置に移動したり、Shift+Tabを押して前の入力位置に移動できます。 最後の入力フィールドが完成すると、キャレットは通常モードに戻ります。

ReSharperのクイックフィックスとコンテキストアクション

クイックフィックスとコンテキストアクションの比較

ReSharperのドロップダウンリストには、コンテキストアクションと共にクイックフィックスも表示されます。

これら2つの違いは単純です。クイックフィックスはハイライト表示されたコードの問題にのみ表示され、それを修正することを目的とする一方、コンテキストアクションは常にAlt+Enterドロップダウンで利用できるミニリファクタリングです。

検索パターンに一致したコードのハイライト表示と置換パターンによる置換

カスタムクイックフィックス

ReSharperは特定パターンに一致するコードを検出し、それを必要に応じて別のパターンに一致するコードに置換するStructural Search and Replace機能を提供しています。 さらに 素晴らしいことに、ReSharperは検索パターンを継続的に監視し、パターンに一致する コードをハイライト表示し、 置換パターンに従ってコードを置換するクイックフィックスを 提供します。

ReSharperでの問題コードのクイックフィックス

C#:文字列補間の使用

これまで、String.Formatや、複合書式に対応した他のメソッドの使用が、C#変数の値を文字列リテラルに埋め込むための唯一の方法でした。 C# 6.0からは、文字列補間を使用して、これをより可読性に優れた方法で実行できるようになりました。 ReSharperのクイックフィックスを使えば、わずか数回のキー入力で、複合書式を文字列補間に置換できます。

ReSharperでの問題コードのクイックフィックス

C#:潜在的なNullReferenceExceptionの解決

ReSharperはnullになり、実行時にSystem.NullReferenceExceptionの原因となり得るオブジェクトに対するメソッドの呼び出しを検出した場合、2種類のクイックフィックスを提案します。 従来の修正方法は、呼び出し部分の前にnullチェック用のルーチンを追加します。 一方、このシナリオに対処できるようC# 6.0で導入されたnull条件演算子「.?」を使うと、より簡潔にこのような 呼び出しを処理できます。

ReSharperでの問題コードのクイックフィックス

C#:foreachをLINQ式に変換

C#のLINQ構文をご希望の場合、ReSharperを使って既存のコードベースに、LINQ式に変換可能なループがあるかどうかを確認してから、クイックフィックスを使って素早く安全に変換を実行できます。

ReSharperでの問題コードのクイックフィックス

C#:冗長な配列の生成を削除

あるC#のメソッドがparamsキーワードを使用した可変長引数を取る場合、引数の配列はコンパイラによって生成されるため、メソッドを呼び出す際に引数の配列を作成する必要はありません。

さらに興味深いことに、ReSharperは、冗長な修飾子、引数、キャスト、条件チェック、未使用の割り当て、到達できないコードなど、冗長なコードをすべて削除するクイックフィックスを提案いたします。

ReSharperでの問題コードのクイックフィックス

C#:省略可能なパラメータの導入

オーバーロードされた関数の唯一の目的が、複数の引数にデフォルト値をセットして「implementation」関数を呼び出すことだった場合、ReSharperはこのオーバーロードを削除し、「implementation」関数で省略可能なパラメータを使用できるようにします。

ReSharperでの問題コードのクイックフィックス

C#:foreachループ内での明示的なキャストの使用

設計上、foreachは派生型への暗黙的な変換を許しています。 これは使い勝手が良い一方で、実行時にSystem.InvalidCastExceptionを引き起こす原因にもなります。 ReSharperがここで提案するクイックフィックスは、キャストを明示的にするものです。 それでもまだ安全とは言えませんが、少なくとも暗黙的ではなくなります。

ReSharperでの問題コードのクイックフィックス

VB.NET:文字列比較方法の指定

クイックフィックスの多くが複数の言語に対応しています。 ここで、C#とVB.NETの両方に適用可能なクイックフィックスの例を示します。2つの文字列の比較方法を明確にするために、ReSharperは、等値演算子の比較をString.Equals()に置き換えることを提案しています。これは、大文字と小文字を区別し、比較を確実にカルチャ対応にします。

ReSharperでの問題コードのクイックフィックス

TypeScript:型ガードの追加

TypeScriptの共用体型は時として扱いにくいものです。 例えば、ある共用体型の値のすべての型に共通ではないメンバーを使用すると、コンパイルエラーが発生します。 このような場合、ReSharperは該当するメンバーを明確に特定するため、さまざまな型ガードを追加する多数のクイックフィックスを提案いたします。

ReSharperでの問題コードのクイックフィックス

JSON:不足している必須プロパティの追加

JSONファイルの場合、ReSharperはリンクされたJSONスキーマの必須プロパティすべてに関する情報を使用し、不足している必須プロパティに対するクイックフィックスを提案いたします。

ReSharperでの問題コードのクイックフィックス

CSS:アルファ要素の削除

CSSレベル3以下では、16進数色表記のアルファチャネルを使用できません。 そのため、ReSharperは、16進数表記色のRGBA色やHSLA色に置き換えるか、単純にアルファチャネル値を削除するかを提案いたします。