ReSharper 2023.2 では C# のサポートが改善され、ローカル関数や raw 文字列の処理と一般的な Entity Framework の問題解決を行うための新しいインスペクションが導入されています。 このリリースには C++ のリファクタリングと C++20 および C++23 の追加機能に対するサポートが導入されています。 ReSharper 2023.2 で新たに導入される機能の中には、ユニットテストの作成と移動操作を簡単に行う機能、予測デバッガーモード、新しい AI Assistant があります。
無料 30 日間体験版をご利用可能です
ReSharper 2023.2 では raw 文字列リテラル、ローカル関数の操作をはじめ、一般的な Entity Framework の問題や冗長な null 許容ディレクティブの処理を行う新しいコードインスペクションとクイックフィックスが導入されています。 C# 12 の初期サポートを提供することで、プライマリコンストラクターとオプションパラメーターを設定したラムダ式に対応しました。 また、ReSharper の破棄と破棄可能なリソースのサポートを改善し、新しいインラインおよび行間ヒントも追加しました。
ReSharper のユニットテスト処理に大幅な更新が適用され、プロダクションコード用テストの移動操作と作成を行う機能が追加されました。
Generate Code(コードの生成)アクションを呼び出して Unit Test(ユニットテスト)を選択するか、Ctrl+U,C を押すだけでテストを作成することができます。 ReSharper ではテストクラス名を選択可能で、好みのテストフレームワーク(まだ使用されていない場合)で新規プロジェクトを作成することもできます。 テストが作成されたら、Navigate To(移動)アクションを使用するか Ctrl+U,F を押すことで、実装とテストコード間を移動できます。
バージョン 2023.2 の IntelliJ ベース IDE と .NET ツールには、重要な新機能である AI Assistant が導入されています。 初期の AI を搭載した機能セットには統合 AI チャットを提供しており、コンテキストアクションを介して必然的に一部の基本的な IDE ユーザーワークフローに組み込まれています。そのため、AI Assistant は選択されたコードの説明、潜在的な問題の除去、および XML ドキュメントの生成を行うことが可能です。
以下のように raw 文字列を扱う新しい C# のインスペクションとコンテキストアクションの追加、入力支援の改善、および新しい整形オプションの追加を行いました。
raw 文字列のサポート改善に関する詳細は、対応するブログ投稿をご覧ください。
Entity Framework などのオブジェクトリレーショナルマッピング(ORM)を使用してデータベースで作業する際に発生しうる一般的な問題に対応できるよう、いくつかの新しいインスペクション、クイックフィックス、およびコンテキスト認識ナビゲーションのオプションを追加しました。
新しい Entity Framework 関連のインスペクションの詳細は、ブログ投稿をお読みください。
ReSharper 2023.2 ではローカル関数のコードの可読性向上を目的とした 2 つの新しいインスペクションと対応するクイックフィックスが導入されています。
return
または continue
を配置するよう推奨するもの。 return
、continue
、または別の制御フローの移動ステートメントを使用して、実行可能なコードから分離するよう提案するもの。 コードを変更したくない、または変更できない場合に備えて、ReSharper 2023.2 はローカル関数の前に return;
または continue;
ステートメントを使用して行間にヒントを表示し、コードを変更せずに理解できるようにします。
新しいインスペクションの詳細は、このブログ投稿をご覧ください。
#nullable
ディレクティブと NRT アノテーションに対応したインスペクション #nullable
ディレクティブと NRT アノテーションに対応したいくつかの新しいインスペクションが使用可能になりました。
JetBrains.Annotations
属性と矛盾している場合に警告するインスペクション。 これらのインスペクションの詳細は、こちらのブログ投稿をご覧ください。
var
宣言からの移動の改善 他の型をラップするために使用される一般的な型の var
から移動する際、すべての移動アクション(Go to…(… に移動)、Find Usages(使用箇所の検索)など)は基本の型を提案するようになりました。 たとえば、ImmutableArray<Person>?
型を持つ変数の var
キーワードから Go to declaration(宣言に移動)アクションを使うと、Person
への移動を提案します。
詳細は、次のブログ投稿をご覧ください。
2023.2 バージョンでは、C# 12 プレビューの非レコードクラスや構造体のプライマリコンストラクターをサポートするようになりました。 新しいプライマリコンストラクターを使用して初期化を表現できる型を検出し、コードの反復量を大幅に削減するクイックフィックスの適用を提案するインスペクションがいくつか追加されています。
型の初期化をあまり簡単に記述すべきではなく、プライマリコンストラクターを使用して表現できないことがあります。 そのような場合のために、プライマリコンストラクターパラメーターをコンストラクターと通常のフィールドに置換できるコンテキストアクションをいくつか導入しました。
プライマリコンストラクターに対応したこれらの機能とその他の機能については、別のブログ投稿で実際の動きを確認できます。
C# 12 言語アップデートをサポートする取り組みの一環として、ラムダ式のデフォルトパラメーター値のサポートを導入しています。 この構文の認識に関連する標準的な警告メッセージ一式を提供しているほか、ラムダのデフォルトパラメーター値を処理するために既存のインスペクション The parameter has the same default value(パラメーターに同じデフォルト値があります)を微調整しています。 詳細はこちらをご覧ください。
ReSharper 2023.2 では、オブジェクトの破棄を管理しやすくすることを意図した 2 つの新しいコードインスペクションが導入されています。
IAsyncDisposable
インターフェースをサポートし、リソースを解放する非同期メソッドを生成できるように Generate dispose pattern(破棄パターンの生成)機能も改善しました。
これらの追加機能の詳細は、こちらをご覧ください。
コード解析に C# の破棄をサポートするのに役立つ多数の新機能が追加されました。
_
の変数とパラメーターについて警告する The _
name is typically reserved for local parameters without usages(_
の名前が使用箇所のないローカルパラメーターのために予約されています)警告が追加されています。 これらは「破棄された」値のように見えますが、実際にはまったく逆のことを表しています。 破棄に対するサポートの強化に関する詳細は、ブログ投稿をご覧ください。
タプルの引数または戻り値の型に値を渡す場合、C# ではコンポーネント名を省略できます。 しかし、名前がなければ、ターゲット型を調べない限りは各コンポーネントの意味を理解するのがより難しくなります。 たとえば、多くのソフトウェア開発者はコンポーネントの意味を理解するためにタプル (null
、false
) が割り当てられている場所を確認する必要があります。
ここでインレイヒントが役立ちます! ReSharper 2023.2 はタプルの名前がコンポーネント式から自明ではない場合にタプルコンポーネント名を使用したインレイヒントを表示し、一目でコードを読んで理解しやすくします。
null とデフォルトのコンポーネントの場合、ReSharper 2023.2 はターゲットコンポーネントに明示的な名前がない場合でもターゲット型についてヒントを表示します。 文字列型とオブジェクト型は通常あまり有益な情報が得られないため、対象外です。
明示的な名前が Deconstruct
メソッドまたはソースのタプルコンポーネントのいずれかから分かる分解パターンも、一般的に名前を読みやすくできるケースに挙げられます。 このヒントは、value is ({ }, true, null)
のようにパターン自体に一致対象を理解するのに十分なデータが含まれていない場合に、追加のコンテキストを提供するために開発されました。
#pragma warning
ディレクティブのサポートの改善 Pragma ディレクティブを使うと、コンパイラー警告をその ID ごとに簡単に無効化または復元することができます。 この ID はコンパイラーとの通信に活用できますが、人間の開発者が理解するには困難な場合があります。 総合的な知識がなければ、CS0168
や CS0618
などの ID が意味するものや注意すべきものがわかりにくいと思われます。
LINQ クエリには複数の変換や射影が伴い、複雑になりがちです。 複雑な LINQ クエリをデバッグするのに時間がかかり、これは大規模なデータセットの処理が伴う場合などは特に顕著です。 クエリの各ステップで出力を検査しやすくするため、ReSharper がデバッグ中に中間結果をインラインヒントとして表示するようになりました。
エディター情報に中間結果が示されるため、予期しない値や誤った変換が途中で発生していないかを素早く確認できるようになっています。
ReSharper C++ にはソースコードからシンボルを安全に除去できる Safe Delete(安全な削除)リファクタリングが導入されています。 このリファクタリングはクラス、関数、変数、列挙子、名前空間に加えて、概念にも使用できます。
ReSharper C++ ではシンボルを削除する前にそのシンボルの使用箇所を検索してソースコードへの変更をプレビューできるため、意図したとおりに確実にすべてを除去できます。 クラスや名前空間などの複雑なエンティティを削除しようとする場合、ReSharper C++ はそのすべてのメンバーの使用箇所を再帰的に確認します。
このリリースでは、if consteval
、C++23 標準ライブラリモジュール、[[no_unique_address]]
属性、および static operator()/operator[]
を含む複数の新しい言語機能がサポートされています。
ReSharper 2023.2 の C# コードの整形では、チェーンメソッド呼び出しの可読性向上を目的とした 2 つの新しいオプションが導入されています。
1 つ目のコード整形オプションは、最初のメソッド呼び出しの前に改行するかどうかを制御するものです。 2 つ目のオプションは、メソッドとプロパティの呼び出しが混在している場合にプロパティ呼び出しの後に改行するかどうかを決めるものです。
AI Assistant は ReSharper にバンドルされていないため、別途インストールする必要があります。 当面の間、AI Assistant 機能を利用するには順番待ちリストに登録する必要があります。
AI Assistant に関する詳細と Toolbox App または dotUltimate インストーラーを使用したインストール方法については、ウェブヘルプをご覧ください。
ReSharper 内の AI Assistant はソリューションで使用されているプログラミング言語、フレームワーク、ライブラリ、およびテクノロジーを含む開発環境をデフォルトで認識します。 この認識能力により、AI がクエリに対してより的確で具体的な回答を生成できるようになっています。
Smart chat(スマートチャット)オプションは AI Assistant が特定のファイルとシンボルを参照し、コード箇所または最新の変更を取得し、特定のメソッドの使用箇所を特定できるようにします。 そのため、さらに的確な提案を行えるようになっています。
AI Assistant プラグインがインストールされている場合、ReSharper のコンテキストアクションに多数の AI を搭載した機能のオプションが追加されます。 AI Assistant は以下について支援できます。
ReSharper 2023.2 に導入された予測デバッガーモードでは、実際にプログラムを実行しなくても実行によって発生しうるすべての状態を予測できます。このため、以下が可能となっています。
予測デバッガーはプログラムの実行に関する新しいレベルのインサイトを提供します。 また、変更のたびにデバッグプロセスを再起動しなくても、さまざまな値を試してコードをトラブルシューティングすることも可能です。
予測デバッガーは ReSharper | Options(オプション)| Tools(ツール)| Debugger(デバッガー)| Editor Integration(エディター統合)| Predictive debugger(予測デバッガー)| Show predicted values (beta)(予測値の表示(ベータ))で有効にできます。
このデバッガーは現在ベータ版であるため、その能力を最大限に発揮できるようにするするにはユーザーからのフィードバックが不可欠です。 バグが発生した場合は、提案や要望を添えて課題トラッカーにご報告ください。
ReSharper 2023.2 では、2 つのアセンブリを詳細に比較する方法を提供しています。 この機能は特定のアセンブリの 2 つのバージョンの違いを精査し、より新しいバージョンに混入している可能性のある潜在的な脆弱性を探す場合に特に便利です。
アセンブリを比較するには、Assembly Explorer(アセンブリエクスプローラー)ツールウィンドウの Compare Two Assemblies(2 つのアセンブリを比較)をクリックします。 単一ファイルアプリケーションと .exe
ファイルまたは .dll
ファイルの両方を選択して比較できます。
機能の詳細については、こちらをクリックしてください。
ReSharper 2023.2 では、IDE のシステムが機能するために必要なデータをキャッシュする方法を見直しました。 この修正の効果は数え切れないほどのパフォーマンステストの実施によって裏付けられており、結果的にソリューションを開くたびに消費されるディスク容量を著しく減らすことができました。 具体的に言えば、ディスク入出力時間が全体的に減り、ソリューションの読み込み時間が短縮されています。
ReSharper の内部コンポーネント構造ロジックのリファクタリングもソリューションの読み込み速度の改善に寄与しました。 詳細については、こちらをクリックしてください。
無料 30 日間体験版をご利用可能です