ReSharper 2024.1の新機能

ReSharper 2024.1 では C# のサポートをさらに改善しています。コードをコレクション式に変換するための候補を追加し、foreach ループ内の反復処理でコレクションが変更される場合に警告を表示するようにしました。 Razor のサポートによって @addTagHelper および @removeTagHelper ディレクティブの参照が解決されるようになり、カスタム命名規則の編集 UX/UI が大幅に改善されました。

ダウンロード

無料 30 日間体験版をご利用可能です

C# のサポート

コレクション式の変換の追加

コレクション式の変換の追加

空の配列や ImmutableArray の宣言や初期化など、ソースコード内で C# 12 のコレクション式への変換が提案されるコード構造がさらに増えました。

Collection was modified(コレクションが変更されました)の解析

Collection was modified(コレクションが変更されました)の解析

新しい Possible 'System.InvalidOperationException: Collection was modified'(可能性のある 'System.InvalidOperationException: コレクションが変更されました')インスペクションが追加されました。この変更により実行時に例外が発生する可能性があるため、このインスペクションは foreach ループ内の反復処理中にコレクションが変更された際に警告を発します。 この解析はコレクションの変更後にループの終了がある場合に認識され、その場合には警告が発生しません。

このインスペクションには、この問題を即座に解決するための対応するクイックフィックスがあります。

Generate(生成)| Formatting Members(書式設定メンバー) の更新

Generate(生成)| Formatting Members(書式設定メンバー) の更新

Generate(生成)| Formatting Members(書式設定メンバー)を使用すると、ToString() メソッドをオーバーライドして型に応じて意味のある文字列を返すボイラープレートを生成できます。 バージョン 2024.1 より、この機能で ISpanFormattableIUtf8SpanFormattableIFormattable などのより多くの型がサポートされるようになりました。

async メソッドでの破棄可能なリソースのサポートの強化

async メソッドでの破棄可能なリソースのサポートの強化

  • [MustDisposeResource] アノテーションの改善: C# コード解析によって async メソッドで返されたリソース(Task<IDisposable>ValueTask<IDisposable> でラップされたリソースを含む)が正しく破棄されるようになり、タスク自体が誤って破棄されることがなくなりました。
  • Task-like の戻り値: バージョン 2024.1 では Task-like の戻り値が正しく解析されるようになったため、待機されているリソースの破棄がチェックされ、.ConfigureAwait(...).AsTask()、または .Result を介して取得されたリソースも含まれるようになりました。
Change Signature(シグネチャーの変更)リファクタリングの更新

Change Signature(シグネチャーの変更)リファクタリングの更新

Change Signature(シグネチャーの変更)リファクタリングに以下の改善が行われました。

  • リファクタリングが Deconstruct メソッドをサポートするようになりました。 パラメーターの追加、除去、再配置、および名前の変更を行うことができます。また、これらの変更はメソッドの宣言とその使用箇所の両方に反映されます。
  • 型パラメーターでコード補完を使用できるようになりました。 そのため、たとえば List<> の型を指定する必要がある場合、コード補完を使用して int などの必要な型を簡単に選択できます。
  • パラメーターを追加または更新する際に型の名前空間が自動的に短縮されるようになりました。 これにより、リファクタリングを適用した後のコードをクリーンで簡潔に維持できます。 たとえば、Change Signature(シグネチャーの変更)ダイアログで System.Collections.Generic.List<System.Int16> 型を指定した場合、生成されるコードでは自動的に List<short> に短縮されます。
  • in および ref readonly 修飾子や record 型など、より多くの最新バージョンの C# の機能がリファクタリングでサポートされるようになりました。
Make Static(static にする)リファクタリングの更新

Make Static(static にする)リファクタリングの更新

このリリースでは、Make Static(static にする)リファクタリングでプライマリコンストラクターのパラメーターがサポートされています。 このパラメーターは Introduce parameters(パラメーターの導入)リストに表示され、区別しやすいように個別のアイコンが使用されています。 このリファクタリングはローカル関数にも使用できます。

protobuf-net ライブラリのサポート

コード解析で protobuf-net ライブラリの ProtoContract 属性と ImplicitFields 列挙型がサポートされるようになりました。 どちらもシリアル化に暗黙的に使用されるメンバーを示すのに使用できます。 その場合、このようなメンバーに unused members(未使用のメンバー)警告が表示されることはありません。

Razor のサポート

@addTagHelper および @removeTagHelper ディレクティブの参照の解決

@addTagHelper および @removeTagHelperディレクティブの参照の解決

ReSharper が Razor ビューの @addTagHelper および @removeTagHelper ディレクティブ内で指定されているアセンブリ名の参照を解決するようになりました。 その結果、コード補完、使用箇所の検索機能、および簡単なコードナビゲーションを利用できるようになっています。

ReSharper が未解決のアセンブリ名をエラーと見なし、ユーザーに注目させるために赤でハイライトするようになりました。

C++ のサポート

C++ のサポート

C++ のサポートが以下のように大幅に強化されています。

  • C++20 モジュールの実装を改良することでパフォーマンスが改善され、内部モジュールパーティションがサポートされるようになりました。
  • Change Signature(シグネチャーの変更)に、パラメーターの型をポインター、参照、または値の型の間で変更できる機能などの新機能が導入されました。
  • Call Tracking(呼び出しトラッキング)で送信呼び出しチェーンがサポートされるようになりました。
  • 生成されるドキュメントコメントのスタイルを簡単にカスタマイズできるようになりました。 また、ドキュメントコメント内で文法インスペクションを使用できるようになりました。
  • Unreal Engine の Slate UI フレームワークをサポートするようになりました。

C++ 関連の更新の詳細について、ReSharper C++ 2024.1 の新機能をご覧ください。

パフォーマンス

ソリューション全体解析の高リソース使用率モード

ソリューション全体解析の高リソース使用率モード

JetBrains は CPU 並列処理をより効率的に使用して解析時間を大幅に短縮するソリューション全体解析の高リソース使用率モードを積極的に改良しています。 コード解析機能のメモリ割り当てプロファイルを改善し、ガベージコレクションにかかる時間を最小限に抑えました。 この改良は現在も進行中ですが、このモードを有効化して使用した感想をフィードバックしていただければ幸いです。

Rename(名前の変更)リファクタリングの高速化

コード内の要素名をより迅速かつ効率よく変更できるようになりました。 この変更は ReSharper の他の基本コンポーネントにも反映されており、Find Usages(使用箇所の検索)などの複数の機能でパフォーマンスが改善されています。

Move to Another Type(別の型に移動)リファクタリングの高速化

static メンバーに対する Move to Another Type(別の型に移動)リファクタリングのパフォーマンスが大幅に改善され、大きなクラスを処理できるようになりました。

コードの整形

カスタム命名規則の UX/UI を改善

この変更により、高度な命名規則の操作と EditorConfig ファイルからインポートされたルールの遵守がより簡単になります。

Remove whitespace on blank lines(空白行の空白の除去)設定

Remove whitespace on blank lines(空白行の空白の除去)設定

この新しい整形設定では、空白行の空白をそのままにするか、除去するかを指定できます。

デコンパイラー

新しい専用の Assembly Diff(アセンブリの差分)ツールウィンドウ

新しい専用の Assembly Diff(アセンブリの差分)ツールウィンドウ

この ReSharper 2024.1 アップデートでは、新しい Assembly Diff(アセンブリの差分)ツールウィンドウが導入されました。 これに伴い、いくつかの変更が適用されています。

  • アセンブリ、NuGet パッケージ、フォルダー、および .zip アーカイブの比較機能が Assembly Explorer(アセンブリエクスプローラー)から Assembly Diff(アセンブリの差分)ツールウィンドウに移動されました。
  • Diff mode(差分モード)セレクターと Compare(比較)および Diff Options(差分オプション)ボタンが Assembly Diff(アセンブリの差分)ツールウィンドウの Actions(アクション)バーに移動されました。
WebCIL パッケージング形式のサポート

WebCIL パッケージング形式のサポート

ReSharper 組み込みのデコンパイラーが WebAssembly の WebCIL パッケージング形式をサポートするようになりました。 このサポートには以下が含まれます。

  • WebCIL のデコンパイル。
  • Assembly Explorer(アセンブリエクスプローラー)で .wasm ファイルを表示する機能。
  • Assembly Explorer(アセンブリエクスプローラー)内の WASM ノードのメタデータサブツリー(WASM および WebCIL ヘッダーを含む)。

dotTrace、dotMemory、および dotCover の MAUI サポート dotUltimate

デスクトップ MAUI および .NET macOS アプリケーションのサポートは、Visual Studio 内の dotTrace、dotMemory、および dotCover にも提供されています。

サポート対象のターゲットフレームワーク:

  • MAUI Windows(dotTrace、dotMemory、dotCover): net8.0-windowsnet7.0-windows
  • MAUI Mac(dotTrace のみ): net8.0-maccatalystnet7.0-maccatalyst
  • macOS アプリケーション(dotTrace および dotMemory): net8.0-macosnet7.0-macos

プロファイリングモードの提供状況と制限事項の詳細については、こちらをクリックしてください。

MAUI プロジェクトのサポートは、これらの .NET ツールのスタンドアロンバージョン内にも提供されています。

凍結オブジェクトヒープのサポート dotUltimate

スタンドアロンの dotMemory プロファイラーで凍結オブジェクトヒープがサポートされるようになりました。この機能は、ガベージコレクションのパフォーマンス改善の一環として .NET 6 SDK に初めて導入されたものです。

FOH はイミュータブルオブジェクトに対して専用のメモリ領域を割り当てます。 このようなオブジェクトは割り当てられた後に変更されることはなく、ガベージコレクションの影響も受けません。 このテクノロジーをサポートすることで、dotMemory が FOH 内のイミュータブルオブジェクトが使用するメモリをさらに詳細に解析できるようになるため、メモリ使用量の最適化が促されます。

コマンドラインツール

SARIF 形式がデフォルトになりました

SARIF 形式がデフォルトになりました

2024.1 リリースより、InspectCode のデフォルトの出力形式が SARIF になりました。 XML 形式のサポートは間もなく廃止されます。 現在のバージョンでは、-f="xml" パラメーターを使用する際に、引き続き XML 形式を使用できます。

その他

Visual Studio 外プロセスのリファクタリング

テキストコントロールの内部リファクタリングを終了しました。 ReSharper を Visual Studio 外プロセスで実行させる取り組みに加えて、このリファクタリングは ReShaper と Rider の入力とエディターのパフォーマンスに関するさまざまな改善を目的としています。 ReSharper を Visual Studio 外プロセスに移行する作業に関する最新の状況は、こちらをご覧ください。

拡張機能マネージャー

JetBrains Marketplace プラグインのフィードに互換性チェックに基づく新しいフィルタリングメカニズムが導入されました。 具体的には、ReSharper の拡張子マネージャーに互換性のないプラグインが表示されなくなっています。

ダウンロード

無料 30 日間体験版をご利用可能です