ReSharper 2022.3 には、UTF-8 リテラル、file ローカル型、静的仮想メンバー、Span でのパターンマッチングといった C#11 の最新機能に対する基本サポートが導入されています。 このリリースでは、コードハイライトの改良、NuGet パッケージの脆弱性のある依存関係検出の導入、および GraphML 形式での型依存関係ダイアグラムとプロジェクト依存関係ダイアグラムのインポートとエクスポートが可能になっています。 このバージョンには、ARM64 で動作する Microsoft Visual Studio の早期サポートも含まれています。
無料 30 日間体験版をご利用可能です
以下の C# 11 の最新機能に対する基本サポートを最終的に完成させています。
UTF-8
リテラルの基本的なサポートを追加しました。 コード解析がリテラルに対して System.Text.Encoding.UTF8.GetBytes()
メソッドや適切な UTF8
シンボルを含むバイト配列ではなく、u8
接尾辞の使用を提案するようになりました。 また、UTF-8
リテラルに対応したコンパイラーの警告やエラー一式も追加されています。
file ローカル型の基本的なサポートには、新しい構文の認識、型の file
アクセス修飾子、コンパイラーの警告とエラー、およびこれらに対応するクイックフィックス(ネストしたクラスに file
修飾子が指定されている場合に使う Move class to outer scope(クラスを外部スコープに移動)など)が含まれています。 一般的な型を file 型に変換するための便利なコンテキストアクションもあります。
Rider が通常の文字列や逐語的文字列をそれぞれの生文字列に変換できるようになりました。 これにより、文字列に対応した既存機能の多くが生文字列にも使えるようになりました。
このリリースでは、コレクションの対応する各項目のチェックに(従来のようにコレクション長をチェックした後にインデクサーアクセス式を実行する代わりに)C# 11 の新しいリストパターン構文を使用することを提案するようにしました。
C# 11 からはインターフェースの static
メンバーに対して abstract
修飾子と virtual
修飾子を使えるようになったほか、これらのメンバーをそのインターフェースに制約される型パラメーターを持つジェネリックのコードで使用できるようになっています。 ReSharper がポリモーフィック static
メンバーを通常のポリモーフィックメンバーと同じように処理するように更新されました。
override
キーワードの後に表示されるコード補完候補にインターフェースのメンバーも含まれるようになったため、abstract メンバーや virtual static
メンバーを簡単に実装できるようになりました。 >>>
)演算子 C# 開発者が符号付きデータ型に対して符号なし右シフトの実行を記述しなければならない非効率なコードパターンを ReSharper が認識し、C# 11 の符号なし右シフト(>>>
)演算子の使用を代わりに提案するようになりました。
文字 Span を解析する際は、MemoryExtensions.SequenceEqual
メソッドを多用しているかと思います。 C# 11 には、このようなチェックの短縮表現が導入されています。 文字 Span と文字列リテラルのパターンマッチングを is
式または switch
式を使用して行えるようになりました。
ReSharper が if
ステートメントを多用する代わりに is
式かswitch
式を使用するように提案するようになりました。
ref
フィールドおよび scoped
キーワード C# 11 からは、ref
構造体の内側で ref
フィールドを宣言できるようになりました。 ReSharper はこの新しい構文規則をサポートしており、対応するコンパイラーのエラーと警告をすべて提供しています。また、コード補完では ref
キーワードを表示し、対象のフィールドをコンストラクターの中で初期化できるようになっています。
ReSharper は、by-ref
または ref struct
引数とローカル変数に対して使用できる新しい scoped キーワードも認識します。 サポートの内容には、新しい構文を正しく解析する、コード補完で scoped
キーワードを表示する、メソッドのオーバーライドを生成するときに scoped
キーワードを維持するという機能が含まれています。 また、scoped
修飾子の互換性チェック、オーバーライド、インターフェースの実装、デリゲート変換で一致していない scoped
パラメーターを修正するクイックフィックスを提供します。
C# 11 と .NET 7 では、言語の ref
の安全性規則が変更されています。 この変更は、ref
フィールドの導入によってマネージドコードにおける ref
の安全性を提供するため、by-ref
および ref struct
変数に対してどのような処理を実行できるかを決定するといったものです。 ReSharper はこの変更を認識しており、C# 11 または .NET 7 に移行する際にこの変更に対応できるよう、プロジェクト内で新しい scoped
キーワードを使った更新およびアノテーションが必要な箇所を発見しやすくします。
2022.3 のリリースに伴い、言語インジェクションのサポートに若干の変更が行われています。
言語インジェクションが C# 11 の生文字列リテラル内で動作するようになりました。
ReSharper supports the [StringSyntax]
attribute from .NET 7, along with its different syntaxes for language injection and code completion.
C# および Razor ファイル内にある暗黙的な名前空間インポートについて通知する新しいガターマークアイコンが追加されました。
対応する行で Alt+Enter を押すと、すべての暗黙的なインポートを含むリストと対応する global using ディレクティブがあるソースファイルに関する情報が表示されます。 ReSharper で特定のインポートされた名前空間を選択すると、その名前空間の宣言箇所に移動できます。.csproj
プロジェクトファイルの <Using Include="Some.NameSpace" />
タグにも移動可能です。
_Imports.razor
からのグローバルインポートが表示されるほか、対応するインポート定義に移動することもできます。
.NET 7 に 2 つの数値型 Int128
と UInt128
が追加されたことを受け、コード補完の書式指定子の候補を更新しました。
また、これまでサポートされていなかった .NET 6 の DateOnly
および TimeOnly
日付/時刻型と .NET 5 で導入された Half
半精度浮動小数点数値型をサポートするようにしました。
リファクタリングを実行した後、パターンマッチング式が自明な再帰パターンになってしまう場合があります。 このような場合に再帰パターン構文を使用する意味はまったくないと思われるため、ReSharper ではパターンマッチングの元のセマンティクスを維持したままパターンをより単純な式に書き換えるアクションを提供しています。
呼び出しの後に入力しても、意味のある候補がまったく表示されない場合があります。 これは、void
を返すメソッドが呼び出されたため、呼び出しの結果が値を返さなかった場合に発生することがあります。 これは通常、IDE を何度か操作しなければ気付かないものです(メソッドの宣言を再確認したり、呼び出しにカーソルを合わせたりする)。 このリリースでは、呼び出しの結果となる型に関するフィードバックを即座に得られるよう、この種の void
を返す呼び出しに対して void
のヒント項目を導入しました。 この void
項目を受け入れると、呼び出しの後にセミコロンがない場合にセミコロンが追加されます。
ReSharper 2022.3 ではコードハイライトと波線が全面的に改修されています。 ReSharper では Microsoft Roslyn のコードスタイル解析機能の内部ロジックとの違いに起因する競合により、ハイライトが重複して表示される、同じハイライトが別々の場所に適用される、または破線が二重になるといった問題が発生していました。 このような問題の大部分の原因となっていたロジックの違いが解消されました。ごくまれにエラーが発生することはありますが、競合の解決策が明確に表示されるようになっています。
ソリューションでオープンソースの NuGet パッケージを使用している場合、プロジェクトがセキュリティの脆弱性にさらされる危険があります。 NuGet はこのような脅威をスクリーニングする外部ツールを提供していますが、設計の際に IDE で直接このようなツールを使用してすべての脆弱性を検出できればこの上なく便利です。 そこで、ReSharper に脆弱性のある依存関係を検出する機能を導入することにしました。 このリリースより、.csproj
および .vbproj
ファイル内で影響を受けるすべての依存関係がハイライトされます。
ReSharper を ARM 搭載デバイスで動作する Microsoft の Visual Studio に統合できます。 ReSpeller によるスペルチェックを除くすべての基本的な開発ワークフローに対して初期サポートを提供しています。
インストーラーが更新され、x64 と ARM64 のどちらもサポートするようになりました。 使用するマシンのプロセッサアーキテクチャに応じて、正しいバージョンが自動的にインストールされます。
dotPeek、dotMemory、dotTrace、dotCover のほか、ReSharper コマンドラインツールも Windows AR64 のサポートを開始しました。
ReSharper 2022.3 の組み込みデコンパイラーは以下をサポートしています。
static abstract
および static virtual
メンバー checked
演算子 IL Viewer ツールウィンドウで、コードをさまざまなレベルの C# 言語コンストラクトにデコンパイルできるようになりました。 最新の言語機能を使用して特定の構文コンストラクトを単純化する high-level と、それらの構文コンストラクトがどのように脱糖されるかを知りたい場合に使用する low-level の 2 つの C# レベルを使用できます。
ReSharper で型とプロジェクトの依存関係ダイアグラムを GraphML 形式で保存し、インポートできるようになりました。ダイアグラムをコードマップとして使用し、依存関係間を素早く移動できる機能は維持されます。
Dynamic Program Analysis(DPA)には、データベースの使用に関連する以下のような問題を検出できる新しいインスペクションが導入されています。
この新しいインスペクションは、Entity Framework Core および SQL サーバー用の .NET データプロバイダーを使用するすべてのアプリケーションで使用できます。
ReSharper C++ 2022.3 では、C++20 モジュールの実験的サポートを開始しています。 新しいコンパイルモデルに対応できるよう、言語エンジンと ReSharper C++ の多くの機能を更新し、名前付きモジュールとヘッダーユニットをサポートするようにしました。
ReSharper C++ 2022.3 は、clang-format とのシームレスな統合を提供します。 ReSharper 独自の整形エンジンと組み込みまたはカスタムの clang-format バイナリのどちらをファイルの整形に使用するかを切り替えられるようになりました。 ReSharper C++ は clang-fomat を独立したプロセスで実行するため、業界標準のフォーマッターとの完全互換性だけでなく、高いパフォーマンスとより広範な整形オプションを実現しています。
無料 30 日間体験版をご利用可能です