ReSharper は C#、VB.NET、XAML、ASP.NET その他のサポート対象言語で検出した問題のあるコードのほとんどを即座に修正できる 1200 個以上のクイックフィックスを提供しています。 クイックフィックスを適用するには、ハイライト表示された問題コードの上でAlt+Enterを押し、問題を解決したりコードを改善したりするための最適な方法を選択するだけです。
クイックフィックスは多くの場合、赤(エラー)か黄色(警告、提案、ヒント)の電球で示され、キャレットをハイライト箇所に置いた時にハイライトされたコード行の左側に現れます。 電球をクリックするか、Alt+Enterを押すと、該当エラーに対して適用可能なクイックフィックスのリストを確認できます。 その後、リストから適切なクイックフィックスを選択すると、問題が最適な方法で解決されます。
一部のクイックフィックス(Remove unused directives(未使用のディレクティブの削除)、 Make field read-only(フィールドを読み取り専用にする)、Remove redundant cast(不要なキャストの削除)など)は 現在のファイル内、現在のプロジェクト内やソリューション全体など より広い範囲で自動的に問題を発見し、修正できます。
そのような修正は、隣に表示された小さな矢印で確認できます。 この矢印をクリックするか、キーボードの右矢印キーを押すと、変更を適用する場所を選べます。
ReSharperは未解決シンボルに起因する各種エラーに対し、次のようなさまざまなクイックフィックスをご提供しています:
コード内に新しいシンボルを作成するクイックフィックスは、以下の例のように、しばしば対話型となっています。この例では、強制的に事前に列挙をList<>
変数に変えることで、複数回列挙されているIEnumerable
を修正するのを支援しています。
ReSharperが必須入力フィールドを赤い枠でハイライト表示している場合、提案された値を受け入れるか、それを修正してから、TabかEnterを押して次の入力位置に移動したり、Shift+Tabを押して前の入力位置に移動できます。 最後の入力フィールドが完成すると、キャレットは通常モードに戻ります。
ReSharperのドロップダウンリストには、コンテキストアクションと共にクイックフィックスも表示されます。
これら2つの違いは単純です。クイックフィックスはハイライト表示されたコードの問題にのみ表示され、それを修正することを目的とする一方、コンテキストアクションは常にAlt+Enterドロップダウンで利用できるミニリファクタリングです。
ReSharperは特定パターンに一致するコードを検出し、それを必要に応じて別のパターンに一致するコードに置換するStructural Search and Replace機能を提供しています。 さらに 素晴らしいことに、ReSharperは検索パターンを継続的に監視し、パターンに一致する コードをハイライト表示し、 置換パターンに従ってコードを置換するクイックフィックスを 提供します。
これまで、String.Format
や、複合書式に対応した他のメソッドの使用が、C#変数の値を文字列リテラルに埋め込むための唯一の方法でした。 C# 6.0からは、文字列補間を使用して、これをより可読性に優れた方法で実行できるようになりました。 ReSharperのクイックフィックスを使えば、わずか数回のキー入力で、複合書式を文字列補間に置換できます。
ReSharperはnullになり、実行時にSystem.NullReferenceException
の原因となり得るオブジェクトに対するメソッドの呼び出しを検出した場合、2種類のクイックフィックスを提案します。 従来の修正方法は、呼び出し部分の前にnullチェック用のルーチンを追加します。 一方、このシナリオに対処できるようC# 6.0で導入されたnull条件演算子「.?
」を使うと、より簡潔にこのような
呼び出しを処理できます。
C#のLINQ構文をご希望の場合、ReSharperを使って既存のコードベースに、LINQ式に変換可能なループがあるかどうかを確認してから、クイックフィックスを使って素早く安全に変換を実行できます。
あるC#のメソッドがparams
キーワードを使用した可変長引数を取る場合、引数の配列はコンパイラによって生成されるため、メソッドを呼び出す際に引数の配列を作成する必要はありません。
さらに興味深いことに、ReSharperは、冗長な修飾子、引数、キャスト、条件チェック、未使用の割り当て、到達できないコードなど、冗長なコードをすべて削除するクイックフィックスを提案いたします。
オーバーロードされた関数の唯一の目的が、複数の引数にデフォルト値をセットして「implementation」関数を呼び出すことだった場合、ReSharperはこのオーバーロードを削除し、「implementation」関数で省略可能なパラメータを使用できるようにします。
設計上、foreach
は派生型への暗黙的な変換を許しています。 これは使い勝手が良い一方で、実行時にSystem.InvalidCastException
を引き起こす原因にもなります。 ReSharperがここで提案するクイックフィックスは、キャストを明示的にするものです。 それでもまだ安全とは言えませんが、少なくとも暗黙的ではなくなります。
クイックフィックスの多くが複数の言語に対応しています。 ここで、C#とVB.NETの両方に適用可能なクイックフィックスの例を示します。2つの文字列の比較方法を明確にするために、ReSharperは、等値演算子の比較をString.Equals()
に置き換えることを提案しています。これは、大文字と小文字を区別し、比較を確実にカルチャ対応にします。
TypeScriptの共用体型は時として扱いにくいものです。 例えば、ある共用体型の値のすべての型に共通ではないメンバーを使用すると、コンパイルエラーが発生します。 このような場合、ReSharperは該当するメンバーを明確に特定するため、さまざまな型ガードを追加する多数のクイックフィックスを提案いたします。
JSONファイルの場合、ReSharperはリンクされたJSONスキーマの必須プロパティすべてに関する情報を使用し、不足している必須プロパティに対するクイックフィックスを提案いたします。
CSSレベル3以下では、16進数色表記のアルファチャネルを使用できません。 そのため、ReSharperは、16進数表記色のRGBA色やHSLA色に置き換えるか、単純にアルファチャネル値を削除するかを提案いたします。