ReSharper 2023.1 の新機能

ReSharper 2023.1 では、コレクションのさまざまな型の操作を最適化して高速化するインスペクション一式と、より柔軟にコードへ null チェックを導入するための方法などを含む C# のサポート改善が行われています。 このビルドでは C++20 モジュールが更新され、C++23 の機能サポートが初めて提供されているほか、マクロ置換プレビューと C++ の呼び出しトラッキングも追加されています。 ユニットテストとコードのクリーンアップのユーザーエクスペリエンスも強化されています。

ダウンロード

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

C# のサポート

コレクション内のルックアップ数削減

コレクション内のルックアップ数を減らすことでコレクションのさまざまな型の操作を最適化して高速化するインスペクションと、対応するクイックフィックス一式を導入しました。

  • HashSet、または ISet インターフェースを実装するその他のコレクションに項目を追加する前の Contains(item) チェックを除去します。
  • Dictionary、または IDictionary インターフェースを実装するその他のコレクションに項目を追加する前の ContainsKey(key) チェックを除去します。
  • 可能な場合に Dictionary コレクションまたは Dictionary から継承されたコレクションに TryAdd(key, value) を使用します。
  • 可能な場合に IDictionary コレクションに TryGetValue(key, out value) を使用します。

null チェックパターンの構文スタイル

パターン内の not null チェックに 1 つのスタイルを一貫して適用するのに役立つ新しい構文スタイル設定を提供しました。 空の再帰パターン構文 { } と否定されたパターン not null の 2つのオプションがあり、後者がデフォルトになっています。 ReSharper | Options(オプション)| Code Editing(コード編集)| C# | Syntax Style(構文スタイル) ページでいつでも動作を調整できます。

not null パターンの使用では、変数名をチェックされた値に導入することができないため不便です。再帰パターン { LastName: { } lastName } では可能です。 同じ値にアクセスする式を検索してすべてのアクセスを同じ値に統合するため、Add pattern variable(パターン変数の追加)コンテキストアクションがすべてを新しく導入された名前に置換する not null パターンに追加しました。

ArgumentNullException.ThrowIfNull スタイルの null チェック

.NET 6.0 SDK に null チェックである ArgumentNullException.ThrowIfNull に対応した新しい API が導入されました。 それ以降のコード解析エンジンはこのチェック方法を認識しますが、この API を ReSharper が生成する null チェックのデフォルトスタイルとして使用するオプションはありませんでした。 2023.1 リリースでは、ReSharper | Options(オプション)| Code Editing(コード編集)| C# | Null checking(Null チェック)ArgumentNullException.ThrowIfNull パターンを追加しました。

共通プロパティパターンの抽出

プロパティパターンマッチングを頻繁に使用している場合は、新しいクイックフィックス付きのインスペクションを試してみてください。コードフローにまとまて含まれている複数プロパティパターンの共通要素が抽出されます。 Extract common property pattern(共通プロパティパターンの抽出)クイックフィックスで生成されたコードによって、共通するプロパティパターンがより高いレベルパターンに移動されるため、コードの繰り返しを減らすことができます。

空のリージョンを除去

多くの場合、C# 開発者は #region ディレクティブと IDE のコードの折りたたみを使用してコードを構成します。 リファクタリングにより、一部の #region が空になり、折りたたんだ際に誤解を招くコードになる場合があります。 この新しいコードインスペクションを使用すると、折りたたんだ状態の空の #region を特定し、対応するクイックフィックスでコードをクリーンアップできます。

span.SequenceEqual(“str”) の置換

コード解析に span.SequenceEqual("stringLiteral")span is "stringLiteral" に置換するように提案するコードインスペクションが追加されました。関数を呼び出すよりも便利で分かりやすい C# 構文の解決方法です。

ラムダ式の戻り値の型指定を挿入

C# のラムダ式には暗黙的に型指定されるパラメーターと推論される戻り値の型を指定できます。 ただし、複雑なオーバーロードを解決する場合にコードを明確にする目的で明示的な型を追加することもできます。 C# 11 以降では、ラムダ式に戻り値の型指定を追加することもできます。 ReSharper 2023.1 ではこの操作を行うための Insert return type specification(戻り値の型指定を挿入)コンテキストアクションを導入しています。 このアクションはメソッド、クラス、ファイル、プロジェクトなどのすべてのスコープ、またはソリューション全体に提供できます。

Pattern is redundant(パターンは冗長です)インスペクション

C# の or/and/not パターンはコンパクトな値チェックに役立ちますが、||/&&/! などの従来の式よりも分かりにくい場合があります。 丸括弧がなければ、発見しづらいバグが発生する可能性もあります。 この問題に対応するため、バージョン 2023.1 では複雑なパターン内の「役に立たない」チェックについて警告する新しいコード解析を導入しました。

Convert to list pattern(リストパターンに変換)コンテキストアクション

C# 11 のリストパターンのサポートは継続的に改善されています。 新しい Convert to list pattern(リストパターンに変換)コンテキストアクションを使用すると、コレクション長のチェックをリストパターン構文に変換することができます。 このアクションはコレクション長のチェックを実行できるすべてのコンテキストで機能します。

C++ のサポート

マクロ置換プレビュー

マクロ置換プレビュー

マクロにカーソルを合わせると、ツールチップに完全な構文ハイライトと適切なコード書式が適用されたマクロ展開が表示されるようになりました。 Substitute macro call(マクロ呼び出しの置き換え)コンテキストアクションを使用してコードに直接マクロを展開することもできますが、即時プレビューならマクロの扱いがより楽になります。 さらに、Quick Document(クイックドキュメント)ポップアップ(Ctrl+Shift+F1)では、置換プレビューからエンティティをクリックして対応するドキュメントを確認できます。

呼び出しトラッキング

呼び出しトラッキング

Call tracking(呼び出しトラッキング)がついに ReSharper C++ に登場しました! 内向きの呼び出しの階層で呼び出しチェーンを表示したり、複数の呼び出しチェーンの間を移動したりできるようになりました。 呼び出しトラッキングの結果ウィンドウでは、階層エントリをダブルクリックしてエディター内の対応する呼び出しに移動したり、ノードを展開して内向きの呼び出しをチェックしたりできます。

ReSharper C++ 2023.1 の新機能

UX/UI の変更

更新ダイアログ

ReSharper 2023.1 では更新ダイアログを改良しました。入手可能な最新ビルドへの変更に関するメモが含まれているため、十分な情報を得た上で更新をダウンロードまたはスキップするかどうかを決定できます。

新しいショートカットダイアログ

バージョン 2023.1 以降に初めて ReSharper を起動すると、使用するショートカットスキームを選択できる Keyboard Shortcuts(キーボードショートカット)画面が表示されます。

コードのクリーンアップ

Reformat inactive preprocessor branches in file(ファイル内の非アクティブなプリプロセッサブランチの整形)は ReSharper 2023.1 で導入された新しいタスクタイプです。 このタスクを使うと、非アクティブのプリプロセッサブランチを整形することができます。 一度にファイル全体にしか適用できず、C# ソースのみに機能します。

このタスクは、必ず false になるプリプロセッサディレクティブ #if に隠されているコードを整形することはできません。 この制限の例として最も明確なものには、#if false ... #endif#define A #if !A ... #endif の 2 つのコンストラクトがあります。

ユニットテスト

Session(セッション)と Explorer(エクスプローラー)の両方のツールウィンドウ内で、ユニットテストツリーに適用されるテキスト検索フィルターがツールバーで Run(実行)ボタンを使用してテストを実行する際に考慮されるようになりました。 検索条件を満たすノードのみがそのままリストされ、実行されます。

名前の変更リファクタリング

ReSharper がプロジェクトファイルの名前の変更を処理する方法を改善しました。 このビルド以降では、ソリューション内でファイルの名前が変更されるたびに、それに合わせてすべての関連シンボルの名前を変更するオプションが含まれるダイアログが表示されるようになっています。

macOS および Linux 向け dotTrace ベータ版 dotUltimate

dotTrace のスタンドアロンバージョンが Linux と macOS で使用できるようになりました。 パフォーマンススナップショットの収集と解析など、これらのオペレーティングシステムで完全なプロファイリングワークフローを実行できます。

プラグインの移行

参照先の API が有効かつ変更されていない場合に限り、ReSharper プラグインがあるバージョンから次のバージョンへ自動的に移行されるようになりました。

ビルトインの API 検証機能はインストール済みプラグインのバイナリ互換性を確認し、実行可能なプラグインを移行します。 また、プラグインが使用する API が SDK に存在しなくなった場合は、プラグイン作成者に JetBrains Marketplace 経由で自動通知が送信されます。

その他

デフォルトで CSS のサポートをオフに

ReSharper では CSS の需要がほとんどないため、CSS の最新バージョンへの対応を優先することはますます難しくなりました。 そのため、CSS をより適切にサポートする方法が見つかるまでは CSS のサポートを保留することにしました。

ReSharper 2023.1 以降、CSS のサポートはデフォルトで無効になります。 それでも CSS を使用したい場合は、ReSharper | Options(オプション)| Environment(環境)| Products & Features(製品と機能)| "CSS" チェックボックスでサポートを有効にできます。

Visual Studio 2010 および 2012 向けの開発を終了

現在、ReSharper と .NET ツールは 2010 から最新の 2022 まで Visual Studio の 7 つのメジャーバージョンをサポートしています。 2023.1 をリリースした時点で、2 つの最も古いバージョンである Visual Studio 2010 と Visual Studio 2012 のサポートを終了しています。

詳細はこちら

ダウンロード

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