ReSharper 2025.1 は、.NET 10 および C# 14 のプレビュー機能に対する初期サポートを提供します。 このリリースでは一般的な C# のミスを対象とした新しいインスペクションだけでなく、使い心地を改善するいくつかの機能も追加されています。 文字列インターンシステムが全面的に見直され、Razor タグヘルパーおよび Blazor コンポーネントのサポートが再構築されたことで、パフォーマンスが大幅に向上しています。 さらに、このリリースでは Visual Studio での dotMemory 統合が初公開され、CI/CD パイプライン統合を強化する新しい Qodana Team Code Quality プラグインが導入されました。
ReSharper 2025.1 は、.NET 10 および C# 14 のプレビュー機能に対する初期サポートを提供します。
nameof
以前は nameof
を使用する際にすべての型引数を指定する必要があっため、不必要に冗長なコードになっていました。 C# 14 では型引数を明示的に列挙することなく nameof(List<>)
を使用できます。 ReSharper が nameof
式内の冗長なジェネリック型引数を検出し、それらを単純化するクイックフィックスを提供するようになりました。
Span<T>
変換 C# 14 では ReadOnlySpan<T>
、Span<T>
、および T[]
間の新しい暗黙的な変換が導入されており、Span ベースのコードがより直感的になっています。 ReSharper はこれらの変換ルールを完全にサポートしており、効率的でモダンな C# コードの作成を支援します。
C# 14 では、ref
、out
、in
、scoped
などのパラメーター修飾子を明示的なパラメーター型を指定することなくラムダ式で使用できるようになりました。 ReSharper は冗長な型指定を除去するクイックフィックスを提供します。
ReSharper と Rider における C# 言語サポートの改善点については、ブログで詳細を確認できます。
このリリースでは、C# 14 の機能が新たにサポートされているだけでなく、さまざまな C# バージョンにおける一般的なミスや非効率な実装を対象とする新しいインスペクションもいくつか導入されています。
新しいコンテキストアクションを使用すると、文字列補間を連結に戻すことができます。 ReSharper は以前から文字列連結 "Id = " + someId
から補間 $"Id = {someId}"
や string.Format("Id = {0}", someId)
への変換をサポートしてきましたが、このアップデートによって逆変換が可能になり、文字列式をより柔軟に構造化できるようになりました。
ReSharper が if
や switch
のような条件構文に現れるコード重複パターンをより多く検出するようになり、よりクリーンで保守性の高いコードを実現するリファクタリングを提案するようになりました。
CancellationToken
(CancellationToken
の誤用の可能性) ReSharper がメソッドレベルの CancellationToken
がローカルトークンの代わりに誤って使用されている状況を検出するようになりました。 誤ったトークンを置き換えるか、CancellationTokenSource.CreateLinkedTokenSource()
を使用して複数のトークンをマージするクイックフィックスを提供します。
nameof
を使用して列挙型メンバーの名前を参照 列挙型メンバーに対して .ToString()
を呼び出すと、実行時に不要なオーバーヘッドが発生する可能性があります。 ReSharper がこのような呼び出しを nameof(SomeEnum.Member)
に置換し、パフォーマンスと明瞭さを向上させることを提案するようになりました。
ReSharper 2025.1 はコードの可読性と自己文書化性を向上させるため、汎用的なItemN
名の代わりに明示的なタプルコンポーネント名を提案します。
ReSharper が Stream.Read()
メソッドや ReadAsync()
メソッドがその戻り値を確認せずに使用されており、それが原因で不完全なデータ読み取りが発生する可能性がある場合に警告を表示するようになりました。 また、そのような使用箇所を .ReadExactly()
に置換して正確性を確保することを提案します。
Debug.Assert
での変更を警告するインスペクション Debug.Assert
の呼び出しは RELEASE
ビルドでは除去されるため、ReSharper は状態を変更し、本番コードで予期しない動作を引き起こす可能性のあるアサーションについて警告します。
ReSharper 2025.1 には、C++ のサポートに関するいくつかの改善が行われています。
C++ 関連の更新の詳細については、ReSharper C++ 2025.1 の新機能ページをご覧ください。
<ImplicitUsings>
(<ImplicitUsings> の切り替え)リファクタリング 暗黙的な using を有効化すると、一般的な名前空間が自動的に含まれるため、ボイラープレートが削減されます。 ReSharper がプロジェクト全体で暗黙的な using の有効化状態を簡単に切り替える手段を提供するようになりました。有効化時には冗長かつ明示的な using が除去され、無効化時には必要なものが追加されます。
ReSharper の Transform Parameters(パラメーターの変換)リファクタリングが最新の実装に書き換えられ、値タプル、レコード、および非同期シナリオがサポートされるようになり、コードの柔軟性と保守性が向上しました。
新しい整形アクションを使用すると、さまざまな C# の構文要素が改行で分割され、コードの可読性と一貫性が向上します。
//
の後に適切な改行とスペースが確実に追加されるようになりました。 いくつかのチケット([RSRP-225809]、[RSRP-78312])では、参考になるスクリーンショットを確認できます。 ReSharper のプッシュヒントの動作を改良し、他の Ctrl ベースのショートカットとの競合によって意図せず有効化されないようにしました。 さらに、このモードが有効化されていることを示す視覚的なインジケーターを導入しました。
キャレットを基本型の節内にある型名の上に置いた際、ReSharper が基本クラスを拡張している、または特定のインターフェースを実装しているメンバーを視覚的にハイライトするようになりました。
このリリースでは、文字列インターンの仕組みを完全に刷新しました。 IDE はソースコード、構文要素、シンボル名、ファイルパスなどの膨大な数の文字列を処理するため、効率的に文字列を処理することが不可欠です。 新しい文字列インターンシステムでは旧バージョンの約 4 倍の一意の文字列が平均して格納され、消費メモリが約半分に削減され、大規模な .NET プロジェクトでリソースが解放されるようになっています。
Razor タグヘルパーと Blazor コンポーネントのサポートが 2025.1 に向けて完全に再構築されました。 この待望の刷新により、コンポーネントを多用する大規模な ASP.NET ソリューションでの解析時間が 5%~10% 短縮されました。 .cshtml
/.razor
ファイルを編集する際の再解析イベントが減少し、誤ったエラー報告も大幅に削減されます。
当社は過去 4 週間にわたって ReSharper の最新のアウトオブプロセス(OOP)実装を社内でテストしていますが、これまでの結果には非常に満足しています。 現在もすべての機能をサポートし、既知の問題を修正する作業を続けてはいるものの、ReSharper を開発ワークフローに欠かせない要素とするための基本機能は順調にまとまりつつあります。
OOP ReSharper の完全な最新状況については、最新のブログ記事をご覧ください。
Qodana は JetBrains のインスペクションを活用することで、チームがチェックや監査を実施したり、お気に入りの CI/CD パイプラインで品質ゲートを確立したりするのを支援するチームコード品質ツールです。 現在は ReSharper のインストーラーを介して Qodana Team Code Quality 拡張機能をダウンロードし、Qodana Cloud またはセルフホストの Qodana プロジェクトを Visual Studio に導入できるようになっています。
コードの問題、バグ、脆弱性を発見し、パイプライン内で直接解析を実行した後、作業中の IDE で問題を確認することで、コンテキストに応じた更新と学習をより適切に行うことができます。 この拡張機能は、ReSharper のインストーラーを使用してスタンドアロンツールとしてダウンロードすることもできます。
ReSharper 2025.1 には、主要なゲーム開発ワークフローをすべてサポートする Unity プラグインがバンドルされています。 このプラグインは Unity イベント関数と API に対応したコード補完、Unity ドキュメントへのリンクを含むツールチップの概要、よくあるミスを検出するための専用のインスペクションを提供します。 ShaderLab ファイルの構文ハイライト、コード補完、エラー検出をサポートします。 このプラグインは .meta
ファイルを自動的に処理し、Unity シーン、プレハブ、アセット内のフィールドおよびメソッドの暗黙的な使用箇所を検出します。
ReSharper C++ は、Unreal Engine 開発に特化したサポートを引き続き提供します。
ReSharper 2025.1 では、デコンパイラにいくつかの改良が加えられ、最新の C# 機能のサポートが強化され、コードの可読性が向上しました。 新機能は以下の通りです:
required
メンバーのサポート。 System.Threading.Lock
型のサポートを追加。 ref
フィールドおよび scoped
パラメーター修飾子のサポート。 allows ref struct
ジェネリックアンチ制約のサポート。 ref struct
型に対するパターンベースの using
のサポート。 .inject
C# 12 のプライマリコンストラクターにより、依存性の注入が単純化されました。 新しい .inject
後置テンプレートを使用すると、プライマリコンストラクターにパラメーターが自動的に導入されて意味のある名前が提案されるため、コンストラクターの依存性の注入がさらに効率化されます。
ReSharper による構造化ログのサポートが強化され、開発者がログをより効率的に記述・解析できるようになりました。
ReSharper がメソッドの戻り値に対して言語インジェクション用のアノテーションを使用できるようになりました。これにより、従来のパラメーター、フィールド、プロパティに対するサポートが拡張されました。
従来は To-do コメントを複数行にわたって書く場合はインデントが必要でした。 ReSharper 2025.1 ではこの制限がなくなり、複数行の To-do をより簡単に記述・管理できるようになりました。なお、すでに存在するインデントはそのまま維持されます。