Rider の新機能

Rider 2022.3 は C# 11 の最新機能を含め、.NET 7 SDK のサポートを提供しています。 このバージョンでは、起動時間やリモート開発機能を通じて Rider を WSL 2(Windows Subsystem for Linux 2)上で実行する機能を中心に大幅なパフォーマンス改善が行われています。 また、マルチモニター環境を配慮したツールウィンドウのドッキング機能など、UX/UI 面でも若干の重要な変更が行われています。 さらに、今回のリリースでは Unity および Unreal エディターとの統合がより緊密になっています。

ダウンロード

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

パフォーマンス

パフォーマンス

Rider の起動を高速化し、ソリューションを開いて作業に着手するまでの時間を短縮するために若干の変更を加えました。

  • Rider インストーラーが Windows Defender の除外リストに実行可能ファイルを追加できるようになり、起動速度が大幅に向上しました。
  • Rider がバックエンドの初期化完了を待つことなく、ソリューションファイルの読み込みとプロジェクトツリーの構築を即座に行うようになりました。
  • ソリューションエクスプローラーのプログレスバーを全面的に廃止し、UI をすっきりさせました。 今後はすべてのプログレスバーが IDE ステータスバーに表示されるようになります。
  • 起動中には基本的な構文ハイライトを提供し、Rider の起動とソリューションの読み込みが完了した後にはフル機能を提供する新しい C# パーサーを導入しました。
  • Rider のバックエンドパフォーマンスについても若干の改善を加えています。 We’ve enabled server garbage collection (GC) to get better memory throughput for the backend process. また、Rider のバックエンド言語サービスのランタイムを .NET 6 から最新の .NET 7 バージョンに更新しました。 さらに、複数のプロジェクト間に相互依存性がない場合にデザイン時ビルドを並列実行するようになりました。 これらの変更により、プロジェクト数の多いソリューションの読み込み速度が著しく向上しました。

Rider のパフォーマンス改善に関する詳細は、こちらをご覧ください。

WSL 2 のサポート

Rider が IDE のリモート開発機能を介して WSL 2(Windows Subsystem for Linux 2)をサポートするようになりました。 これにより、WSL 2 インスタンス上の Rider を使用してソリューションやソースを参照できるだけでなく、アプリをまるでローカルに保存されているかのようにビルド、デバッグ、実行できます。

Rider のウェルカム画面から簡単なセットアップ手順を直接開始できます。 リモート開発機能を通じて UI が提供されるため、WSLg は不要です。また、ローカルの RmoteDev クライアントが自動的にインストールされます。 詳細は、リモート開発のドキュメントを参照してください。

UI/UX

ツールウィンドウのドッキング

多数のご要望をいただいていた、ツールウィンドウをフローティングエディタータブにドッキングするオプションがついに完成しました! 作業スペースの整理とマルチモニター環境での Rider の操作を楽にするため、ツールウィンドウをメインウィンドウの外にドラッグしてフローティングエディタータブにドッキングするオプションを実装しました。

Search Everywhere(どこでも検索)の更新

Search Everywhere(どこでも検索)の結果リストを作成するアルゴリズムを微調整してその動作を予想しやすくし、検索対象の要素をより正確に選択できるようにしました。 クエリの入力を開始すると、最初に表示される検索結果が IDE によって固定されます。また、旧バージョンとは異なり、他の候補が見つかっても検索結果の並び替えが行われなくなっています。

新しい「プロセスにアタッチ」ダイアログ

SSH 経由でプロセスにアタッチする場合などに使い勝手を改善する目的で、新しい Attach to process(プロセスにアタッチ)ダイアログを追加しました。 正しいプロセスの検索と選択をより迅速に行い、IDE が選択されたデバッガーを記憶できるようにすることが狙いです。

貼り付けアクションの改良

貼り付けアクションの改良

貼り付けアクション⌘V / Ctrl+V)の動作を改良することで、編集の利便性を高めました。 コードが選択されていない状態で行のコピー(⌘C / Ctrl+C)または切り取り(⌘X / Ctrl+X)を行った場合、貼り付けアクションでは従来バージョンのようにキャレットの位置ではなく、現在行の上にクリップボードの内容が追加されます。

JSON をクラスとして貼り付け

JSON をクラスとして貼り付け

オブジェクトの「スマートな貼り付け」を可能にする Edit(編集)| Paste Special: JSON as Classes(特殊な貼り付け: JSON をクラスとして貼り付け) アクションが導入されました。 たとえば、このアクションを使って JSON をコピーして貼り付けると、その JSON に基づいて C# のクラスが自動生成されます。

新しい UI 早期プレビュー

Preferences/Settings(環境設定/設定)| Appearance & Behavior(外観と動作)| New UI Preview(新しい UI のプレビュー)で IntelliJ をベースとする IDE 用の新しい UI に切り替えてみてください。 私たちは IDE の複雑で分かりにくい表示を減らし、作業に集中しやすくすることを目指して新しい UI の開発に継続的に取り組んでいます。

その他

また、Rider の UX と UI に次のような最適化を少しずつ継続的に行うことで、その関連性と利便性を高めるようにしています。

  • Add(追加)メニューを整理し、現在のソリューションやプロジェクトに関連するアイテムだけを表示するようにしました。
  • Open in Terminal(ターミナルで開く)アクションを Solution Explorer(ソリューションエクスプローラー)のコンテキストメニューに移動しました。
  • トップメニューの File | New(ファイル | 新規)が実際に行う動作を把握しやすくするため、その名前を File | New Solution(ファイル | 新規ソリューション)に変更しました。
  • Solution Explorer(ソリューションエクスプローラー)内のソリューションを切り替えるアクションを追加しました。 作業中のソリューション以外のソリューションを右クリックすると、コンテキストメニューが表示されます。そのコンテキストメニューで Open(開く)を選択すると、別のソリューションに切り替えるのと同時に作業中のソリューションが閉じられます。

NET 7 SDK のサポート

NET 7 SDK のサポート

Rider 2022.3 は以下の機能を含む .NET 7 SDK のサポートを正式に提供しています。

  • 最新のプロジェクトテンプレート。
  • NuGet の Central Package Management。
  • Endpoints(エンドポイント)ツールウィンドウにおける ASP.NET Minimal API ルートグループのサポート。
  • file ローカル型、UTF-8 リテラル、ref フィールド、scoped キーワードを含む C# 11 の新機能。
  • 新しい SDK をターゲットにしたプロジェクトを作成、実行、デバッグする機能。

C# のサポート

C# 11

UTF-8 リテラル

UTF-8 リテラル

UTF-8 リテラルの基本的なサポートを追加しました。 コード解析がリテラルに対して System.Text.Encoding.UTF8.GetBytes() メソッドや適切な UTF8 シンボルを含むバイト配列ではなく、u8 接尾辞の使用を提案するようになりました。 また、UTF-8 リテラルに対応したコンパイラーの警告やエラー一式も追加されています。

file ローカル型

file ローカル型の基本的なサポートには、新しい構文の認識、型の file アクセス修飾子、コンパイラーの警告とエラー、およびこれらに対応するクイックフィックス(ネストしたクラスに file 修飾子が指定されている場合に使う Move class to outer scope(クラスを外部スコープに移動)など)が含まれています。 一般的な型を file 型に変換するための便利なコンテキストアクションもあります。

生文字列

生文字列

Rider が通常の文字列や逐語的文字列をそれぞれの生文字列に変換できるようになりました。 これにより、文字列に対応した既存機能の多くが生文字列にも使えるようになりました。

リストパターンの提案

リストパターンの提案

このリリースでは、コレクションの対応する各項目のチェックに(従来のようにコレクション長をチェックした後にインデクサーアクセス式を実行する代わりに)C# 11 の新しいリストパターン構文を使用することを提案するようにしました。

静的仮想メンバー

C# 11 からはインターフェースの static メンバーに対して abstract 修飾子と virtual 修飾子を使えるようになったほか、これらのメンバーをそのインターフェースに制約される型パラメーターを持つジェネリックのコードで使用できるようになっています。 Rider がポリモーフィック static メンバーを通常のポリモーフィックメンバーと同じように処理するように更新されました。

  • ガターの継承マーク。
  • 実装メンバー / super メンバーへの移動。
  • 欠落している実装の生成。
  • override キーワードの後に表示されるコード補完候補にインターフェースのメンバーも含まれるようになったため、abstract メンバーや virtual static メンバーを簡単に実装できるようになりました。
符号なし右シフト(>>>)演算子

符号なし右シフト(>>>)演算子

C# 開発者が符号付きデータ型に対して符号なし右シフトの実行を記述しなければならない非効率なコードパターンを Rider が認識し、C# 11 の符号なし右シフト(>>>)演算子の使用を代わりに提案するようになりました。

Span でのパターンマッチング

Span でのパターンマッチング

文字 Span を解析する際は、MemoryExtensions.SequenceEqual メソッドを多用しているかと思います。 C# 11 には、このようなチェックの短縮表現が導入されています。 文字 Span と文字列リテラルのパターンマッチングを is 式または switch 式を使用して行えるようになりました。

Rider が if ステートメントを多用する代わりに is 式かswitch 式を使用するように提案するようになりました。

ref フィールドおよび scoped キーワード

C# 11 からは、ref 構造体の内側で refフィールドを宣言できるようになりました。 Rider はこの新しい構文規則をサポートしており、対応するコンパイラーのエラーと警告をすべて提供しています。また、コード補完では ref キーワードを表示し、対象のフィールドをコンストラクターの中で初期化できるようになっています。

Rider は、by-ref または ref struct 引数とローカル変数に対して使用できる新しい scoped キーワードも認識します。 サポートの内容には、新しい構文を正しく解析する、コード補完で scoped キーワードを表示する、メソッドのオーバーライドを生成するときに scoped キーワードを維持するという機能が含まれています。 また、scoped 修飾子の互換性チェック、オーバーライド、インターフェースの実装、デリゲート変換で一致していない scoped パラメーターを修正するクイックフィックスを提供します。

C# 11 と .NET 7 では、言語の ref の安全性規則が変更されています。 この変更は、ref フィールドの導入によってマネージドコードにおける ref の安全性を提供するため、by-ref および ref struct 変数に対してどのような処理を実行できるかを決定するといったものです。 Rider はこの変更を認識しており、C# 11 または .NET 7 に移行する際にこの変更に対応できるよう、プロジェクト内で新しい scoped キーワードを使った更新およびアノテーションが必要な箇所を発見しやすくします。

言語インジェクション

このビルドでは、言語インジェクションが多くの点で改善されています。

[StringSyntax](.NET 7)および [LanguageInjection]JetBrains.Annotations)属性を使用する言語インジェクションに対するサポートと、// lang=<language_name> 言語インジェクションの指示コメントに対するサポートを追加しました。

言語インジェクションはこれまで SQL にしか使用できませんしたが、どの言語の文字列補間と文字列連結にも使用できるようになりました。 構文エラーは、任意の式を使用した文字列補間や文字列連結では抑止されることに注意してください。 C# 11 の生文字列内での言語インジェクションもサポートされています。

インデントと実際の値を区別するインデントガイドが生文字列に表示されるようになりました。

C# に関する全般的な更新

グローバルインポートガターマーク

グローバルインポートガターマーク

C# および Razor ファイル内にある暗黙的な名前空間インポートについて通知する新しいガターマークアイコンが追加されました。

対応する行で Alt+Enter を押すと、すべての暗黙的なインポートを含むリストと対応する global using ディレクティブがあるソースファイルに関する情報が表示されます。 Rider で特定のインポートされた名前空間を選択すると、その名前空間の宣言箇所に移動できます。.csproj プロジェクトファイルの <Using Include="Some.NameSpace" /> タグにも移動可能です。

グローバルインポートガターマーク

_Imports.razor からのグローバルインポートが表示されるほか、対応するインポート定義に移動することもできます。

C# 対応の機械学習を使ったコード補完

C# 対応の機械学習を使ったコード補完

開発プロセスの合理化と高速化を促すため、C# のコード補完オプションに機械学習による要素の並べ替え機能を導入しています。

この機能の使い勝手を向上させるため、Settings/Preferences(設定/環境設定)| Editor(エディター)| General(一般)| Code Completion(コード補完)| Machine Learning-assisted Completion(機械学習を使ったコード補完)で有効にできるオプションを 2 つ用意しました。

  • 補完ポップアップで順位の変更箇所に印を付ける
  • 補完ポップアップで最も関連性の高い項目に印を付ける
書式文字列の補完

書式文字列の補完

.NET 7 に 2 つの数値型 Int128UInt128 が追加されたことを受け、コード補完の書式指定子の候補を更新しました。

また、これまでサポートされていなかった .NET 6 の DateOnly および TimeOnly 日付/時刻型と .NET 5 で導入された Half 半精度浮動小数点数値型をサポートするようにしました。

自明なパターンから式への書き換え

自明なパターンから式への書き換え

リファクタリングを実行した後、パターンマッチング式が自明な再帰パターンになってしまう場合があります。 このような場合に再帰パターン構文を使用する意味はまったくないと思われるため、Rider ではパターンマッチングの元のセマンティクスを維持したままパターンをより単純な式に書き換えるアクションを提供しています。

void 式に対応したコード補完ヒント

void 式に対応したコード補完ヒント

呼び出しの後に入力しても、意味のある候補がまったく表示されない場合があります。 これは、void を返すメソッドが呼び出されたため、呼び出しの結果が値を返さなかった場合に発生することがあります。 これは通常、IDE を何度か操作しなければ気付かないものです(メソッドの宣言を再確認したり、呼び出しにカーソルを合わせたりする)。 このリリースでは、呼び出しの結果となる型に関するフィードバックを即座に得られるよう、この種の void を返す呼び出しに対して void のヒント項目を導入しました。 この void 項目を受け入れると、呼び出しの後にセミコロンがない場合にセミコロンが追加されます。

ウェブ開発

Blazor

Blazor

Rider 2022.3 では Blazor Server アプリのホットリロード機能を導入しています。 Blazor Server アプリを実行中にそのアプリのソースコードを変更すると、Rider から実行中のアプリを再起動せずにその変更を適用するかどうかの確認を求められます。 テキストエディターの上部に表示される「Sources are modified(ソースが変更されています)」という黄色い通知バーに注目してください。 変更を受け入れるアプリがその場で更新され、更新後のアプリで作業を続行できます。

ウェルカム画面

Internet Information Services(IIS)

コミュニティから寄せられた多数の要望に応えて、IIS サーバー上で古い ASP.NET アプリケーションの実行とデバッグを行うための新しい IIS Application(IIS アプリケーション)実行構成を追加しました。 また、ASP.NET Core アプリケーション用の launchSettings.json ファイルに含まれる IIS コマンド名もサポートするようにしました。

エンドポイント

エンドポイント

Endpoints(エンドポイント)のサポートと Endpoints Viewer(エンドポイントビューアー)の改善は継続的に行われています。 ビューアーが ASP.NET Core 7 の Minimal API ルートグループの各エンドポイントを正しく認識し、収集するようになりました。 つまり、すでに利用可能であった機能に加え、MapGroup() API を使って宣言されたエンドポイントに対して、スマートなコード補完を検索、ナビゲート、使用することができます。

.NET ユーザーのシークレット

.NET ユーザーのシークレット

.NET User Secrets(.NET ユーザーのシークレット)が ASP.NET プロジェクト用に追加されました。

JavaScript / TypeScript ウェブプロジェクト

JavaScript / TypeScript ウェブプロジェクト

Rider がソリューション(.sln)によって参照される JavaScript および TypeScript ウェブプロジェクト(.esproj)用の npm 実行構成を自動生成するようになりました。

JavaScript と TypeScript 対応の Code Vision

JavaScript と TypeScript 対応の Code Vision

Code Vision のインレイヒントが JavaScript と TypeScript でも機能するようになりました。 このヒントにより、コード内にある各種のクラス、メソッド、型エイリアス、およびインターフェースの使用箇所が追跡しやすくなります。

CSS のサポート

CSS のサポート

IDE がステートメントのブロックを @supports 条件に関連付ける @supports @ルールを理解するようになりました。 This build also includes support for viewport units, range media queries, container queries, @layer (Cascade layers), and color modification functions.

Angular 関連の更新

Angular 関連の更新

Angular テンプレートで型の絞り込みをサポートしました。これにより、さらに正確な型情報が提供され、コード補完候補が改善されるようになります。

また、Rider がより適切な検索結果を提供できるよう、グローバル検索から .angular キャッシュフォルダーを除外するようになりました。

ゲーム開発

Unity のサポート

Rider の Unity サポートには新機能の追加、既存機能の改善、およびその他若干の修正を含む重要な更新が行われています。

Unity の新しい Input System パッケージのサポートを開始しました。 Rider が入力用のイベントハンドラーとして使用されているメソッドを認識し、未使用のメソッドとして表示しなくなりました。 Find Usages(使用箇所の検索)もこのようなメソッドに対応しており、コードまたは .inputactions ファイル内の使用箇所を表示できます。

ゲームのリソースを実行時に読み込めると非常に便利なため、Resources.Load メソッドで正しいパスを使用していることを Rider で確認できるようにしました。 入力を開始するとコード補完が表示され、不明なリソースがあれば警告付きでハイライトされます。

Rider では数回のリリースにわたってタグ名の補完機能と検証機能を提供してきましたが、バージョン 2022.3 では GameObject.FindWithTag グループのメソッドに対するサポートを新たに提供しています。 入力中にコード補完が機能し、プロジェクトに存在しないタグを使用しようとした場合には警告が表示されます。

Unity プロジェクトでは、メタファイルがファイルやフォルダーと常に同期していることが非常に重要です。 Rider 2022.3 では、空のフォルダー用のメタファイルをソースコントロールにコミットしようとすると警告が表示されます。 Unity エディターが開いている状態で未保存のシーンやアセットがあった場合は Rider が警告を表示するため、コミットする際に変更を見落とすことがないのも便利です。

もちろん、より小規模な改善や修正もたくさん行われています。 非常に大きなプロジェクトの読み込みにかかる時間を短縮し、読み取り専用パッケージファイルの編集を試みた際の通知を追加し、Find Usages(使用箇所の検索)をネストしたプレハブやイベントハンドラーの配列に含まれるメソッドに対して使用できるように改善しました。

DOTS のサポートに関して、Rider が IBaker または IAspect を実装するクラスを未使用としないようになりました。

シリアル化されたフィールドの命名インスペクションを無効にして普通のフィールドとして扱えるほか、オンラインドキュメントへのリンクが適切な場所を参照するようになりました。

また、この場をお借りして Nintendo Switch のプレイヤーをデバッグするための修正をご提供いただいた Unity 社に感謝いたします。

Unreal Engine のサポート

CoreRedirects による名前の変更

Rider は Rename(名前の変更)リファクタリングで Unreal のクラスやプロパティの名前を変更する際に CoreRedirects を追加するオプションをすでに提供しています。 この機能が以下の場合にも対応しました。

  • UFUNCTION() の名前の変更
  • USTRUCT() の名前変更
  • UENUM の名前の変更

上記の場合に Rename(名前の変更)リファクタリングを実行すると、Rider が CoreRedirects の追加を提案するようになりました。

その提案を受け入れると、対応する .ini ファイルが自動的に更新されます。

不用意な名前の変更でゲームが動作しなくなる可能性がかなり低くなります!

最新のブループリント用 Code Vision

Rider 2022.3 ではブループリント専用の Code Vision メトリクスが導入されています。 BlueprintCallable 関数を使用しているブループリントの数を素早くチェックして、Code Vision のコンテキストメニューからすべての使用箇所のリストを取得できるようになっています。

GUID の生成

Generate GUID(GUID の生成)ツールが Unreal Engine の GUID 形式に対応するようになりました。 GUID の生成を素早く実行したい場合にメニューから Tools(ツール)| Generate GUID...(GUID の生成)を選択すると、推奨される 16 進数形式があらかじめ選択された状態になります。

自動インポート

補完時の自動インポート機能を使えば、かなりの時間短縮になります。 しかし、間違った #include ディレクティブが追加されてしまうと、問題の検出が困難になる場合があります。 この機能の改良に努め、自動インポートを実行する際にシステムヘッダーの不要なエンティティが提案されないようにしました。 システムヘッダーはデフォルトでは提案されませんが、提案してほしい場合は Settings/Preferences(設定/環境設定)| Languages & Frameworks(言語 & フレームワーク)| C++ | Unreal Engine で有効にできます。

UnrealBuildTool ログ

UnrealBuildTool ログの表示を改善しました。 プロジェクト構成に関する警告やエラーを見逃すことのないよう、ログパネルにタイムスタンプを表示し、UnrealBuildTool を前回実行したときのログを残すようにしました。

ネイティブ .uproject のサポート

Unreal Engine ベースのプロジェクトに関して、Rider が .sln プロジェクトと .uproject プロジェクトの両方に対応できるようになっています。 ネイティブ .uproject モデルをより高精度かつ快適に扱えるようにするため、そのサポートを次のように継続的に強化しています。

  • Rider 2022.3 は、.project で指定されている追加ソースの場所(具体的には AdditionalRootDirectoriesAdditionalPluginDirectories)を考慮します。
  • また、ゲームと同じ場所に格納されたカスタムプログラムをサポートしており、すべてのプログラムのプロジェクトファイルを正しく生成します。
  • Rider がプラットフォーム固有のモジュールを対象とした .Build.cs ファイルを複数個持つモジュールのサポートを開始しました。
  • .uproject プロジェクトモデルを使用する際に .uplugin ファイルと .uproject ファイルで補完機能とインスペクションが使えるようになりました。
  • .uproject モデルを使用する際に C++ プログラム用の実行構成が自動生成されるようになりました。

Unreal エディターにアタッチ

Unreal Engine プロジェクト用に Attach to Unreal Editor(Unreal エディターにアタッチ)アクションを導入しました。 Unreal Engine プロセスに素早くアタッチできるようになり、正しいプロセスを手動で探す必要がなくなりました。 現時点では、UnrealLink が接続されているのと同じプロセスにしかアタッチできません。そのため、Unreal エディターで実行中のプロジェクトと Rider で作業中のプロジェクトが一致している必要があります。 今後のリリースに向けてこのワークフローの改善に取り組んでいます。

ARM64 のサポート 早期プレビュー

ARM64 サポートの早期プレビュー

Rider 2022.3 を Windows および Linux ARM64 で実行できるようになりました。 .NET アプリケーションの実行とデバッグ、ユニットテストの実行など、基本的な開発ワークフローのすべてがサポートされています。 当社では Rider を ARM64 プロセッサでスムーズに動作させるための継続的な開発とテストを実施していますが、以下の制限がある点にご注意ください。

  • Epic Games がこのアーキテクチャで Unreal Engine をサポートしていないため、現時点では Windows ARM64 での Unreal Engine 開発をサポートする予定はありません。
  • Linux ARM64 での Unreal Engine に対するサポートは開発中です。
  • Windows ARM64 での Visual C++ プロジェクトに対する基本サポートは提供されていますが、ネイティブにビルドされたアプリケーションをデバッグする機能にはまだ対応していません。 この件に関する最新の進捗状況は、こちらで確認できます。

プラグイン

macOS および Linux 版でのメモリプロファイリング dotUltimate

Windows に加えて、Linux および macOS 版の JetBrains Rider でも dotMemory を使用できるようになりました。 Run(実行)ウィジェットと Run(実行)| Switch profiler configuration(プロファイラー構成の切り替え)メニューには、Memory (sampled allocations)(メモリ(サンプリングした割り当て)) Memory (full allocations)(メモリ(全割り当て))という 2 つの新しいプロファイリングモードが追加されています。 これらのモードの詳しい相違点については、dotMemory のヘルプをご覧ください。

Run(実行)メニューから実行中のプロセスにプロファイラーをアタッチして、Timeline Graph(タイムライングラフ)がリアルタイムに展開する様子を確認できます。 Memory Allocations(メモリ割り当て)ビューを開く間隔を選択します。これは dotMemory Standalone と同じで、 特定期間の割り当てられたオブジェクトと割り当て呼び出しツリーを解析できます。

残念ながら、メモリスナップショットの収集はこのバージョンでも未対応です。

Dynamic Program Analysis

Dynamic Program Analysis

Dynamic Program Analysis(DPA)には、データベースの使用に関連する以下のような問題を検出できる新しいインスペクションが導入されています。

  • コマンドの実行時間が長い
  • データベース接続の数が多すぎる
  • 同時に実行されるデータベースコマンドの数が多すぎる
  • コマンドが返すレコードの数が多すぎる

この新しいインスペクションは、Entity Framework Core および SQL サーバー用の .NET データプロバイダーを使用するすべてのアプリケーションで使用できます。

dotCover dotUltimate

Dynamic Program Analysis

テストへの移動操作の改善

コードエディターと Unit Test Coverage(ユニットテストカバレッジ)ウィンドウの dotCover コンテキストメニューに Show Covering Tests(カバーしているテストの表示)アクションを追加しました。 このアクションを実行すると、すべてのカバーしているテストを一か所にまとめたポップアップが表示されます。 このポップアップを使って新しいカバレッジセッションを作成することもできます。

シャドウコピーの高速化

dotCover が JetBrains Rider で継続的なテストを実行するために必要なアセンブリとシンボルファイルのみをコピーするようになりました。 これによって、作業ディレクトリ全体をコピーする必要がなくなったため、大規模なプロジェクトを中心に dotCover のパフォーマンスが全体的に改善されます。 必要に応じて、dotCover の設定からシャドウコピーファイルのフィルターを調整できます。

Unity サポートの強化

従来は Unity テストのカバレッジを解析する場合、カバレッジのサポートを有効にしたまま Unity を再起動する必要がありました。 このリリースからは Unity の再起動が不要となり、テストカバレッジも初期状態でサポートされています。

NuGet のサポート

Central Package Management(別名 Directory.Packages.props ファイル)はアクティブな開発段階にある .NET 技術スタックの機能であり、その改善によってソリューションの管理がさらに容易になることが見込まれています。 Rider に CPM が追加されたことで、開発者は依存関係をより細かく管理できるようになるはずです。

Central Package Management の詳細やヒント、注意事項などは、こちらのブログ記事をお読みください。

ソリューションでオープンソースの NuGet パッケージを使用している場合、プロジェクトがセキュリティの脆弱性にさらされる危険があります。 この危険を緩和するため、Rider に脆弱性のある依存関係を検出する機能を導入することにしました。 NuGet パッケージの使用に関連する脆弱な依存関係が存在する場合、IDE がポップアップ通知で警告を表示します。脆弱性の内容については、Problems(問題)ビューの Security(セキュリティ)セクションで調査できます。 ソリューションに含まれるパッケージに関連する脆弱な依存関係の情報は、NuGet Package Management ウィンドウで特定のパッケージを選択して確認することもできます。

NuGet ツールウィンドウにある Packages(パッケージ)リスト内でのスクロール機能も改善しています。

F# のサポート

Rider 2022.3 では F# 7 のサポートを提供しているほか、軽微な問題に対するさまざまな修正を行い、使い心地を改善する機能をいくつか導入しています。

XML ドキュメントサポートの改善

XML ドキュメントサポートの改善

コメント内で < を入力すると、ドキュメントテンプレートが追加されるようになりました。 また、構文ハイライトやコード補完を駆使してドキュメントコメントを楽々と編集できるようになっています。

レコードのコード補完

レコードのコード補完

新しいコード補完ルールによって record 式の入力が簡単になりました。これは、推論される record 型のフィールドが強調されるようになったほか、すでに使用されているフィールドが非表示となり、提案が表示されない各種のケースが修正されたことによるものです。

シグネチャーファイル

シグネチャーファイル

Update parameter name(パラメーター名の更新)および Update record field(レコードフィールドの更新)という 2 つのクイックフィックスを追加しました。これらはコードを変更する際にシグネチャーファイルを更新し、使いやすくするものです。 A huge thanks goes to Florian Verdonck for implementing them!

上記は F# に加えた改善のごく一部です。 You can find the full list of F# features included in the 2022.3 release here.

データベースのサポート

Rider 2022.3 に導入されたデータベース操作関連の新機能について、その一部を以下にまとめています。

  • クイックフィルター – クイック検索を使用する際に、検索結果を絞り込んだり、検索条件に一致しないオブジェクトを非表示にしたりできます。
  • パターンに基づくスキーマの絞り込み – イントロスペクションを実行するデータベースまたはスキーマを正規表現パターンに基づいて選択できるようになりました。
  • 日付/時刻フィールドの書式 – データエディターに表示される日付および時刻型のフィールドの書式をカスタマイズできます。
  • Modify(変更)ウィンドウでの複数オブジェクト編集 – 一度に複数のオブジェクトを編集できるようになりました。

詳細: DataGrip 2022.3 の新機能

その他

IL Viewer

IL Viewer

Rider の IL Viewer ツールウィンドウで、コードをさまざまなレベルの C# 言語コンストラクトにデコンパイルできるようになりました。 最新の言語機能を使用して特定の構文コンストラクトを単純化する high-level と、それらの構文コンストラクトがどのように脱糖されるかを知りたい場合に使用する low-level の 2 つの C# レベルを使用できます。

コードハイライト

コードハイライト

Rider 2022.3 ではコードハイライトと波線が全面的に改修されています。 Rider では Microsoft Roslyn のコードスタイル解析機能の内部ロジックとの違いに起因する競合により、ハイライトが重複して表示される、同じハイライトが別々の場所に適用される、または破線が二重になるといった問題が発生していました。 このような問題の大部分の原因となっていたロジックの違いが解消されました。ごくまれにエラーが発生することはありますが、競合の解決策が明確に表示されるようになっています。

また、Rider が Roslyn Analyzers によって生成されるインスペクションのクイックドキュメントツールチップに Roslyn Analyzer IDURL Reference を表示するようになりました。

C++ の整形

C++ の整形

Rider の整形エンジンを使う代わりに clang-format バイナリを直接実行するオプションを追加しました。これにより、業界標準のフォーマッターとの完全互換性だけでなく、高いパフォーマンスとより広範な整形オプションを実現しています。 バンドルおよび外部 clang-format のオプションは、Settings(設定)| Editor(エディター)| Code Style(コードスタイル)| C++ から Clang-format オプションを選択すると切り替えられます。

デバッガー

Allow property evaluations and other implicit function calls(プロパティの評価とその他の暗黙的な関数呼び出しを許可する)オプションが無効な場合のデバッガーのパフォーマンスを大幅に改善しました。 .NET、.NET Framework、および .NET Core プロジェクトでは、副作用のないモードで評価できる式の数が大幅に増えています。

ユニットテスト

ユニットテストエクスプローラーのツリーを「遅延」読み込みに対応させることで、動作の高速化とメモリ負荷の軽減を図りました。 従来はすべてのノードが自動的にユニットテストのツリーと同時に作成されていたため、ツリービューでユニットツリーを参照する際に遅延が生じ、メモリ消費量が非常に多くなっていました。 今後はツリー内の展開された要素に属するノードのみが作成されるようになるため、パフォーマンスが大幅に向上します。

MSBuild

  • .NET Core 17 以降の MSBuild でデフォルトのサーバーガベージコレクションを有効にしました。
  • Rider が 32 ビット版の MSBuild のメモリ不足を検出し、64 ビット版の Visual Studio に切り替えられるようになりました。

パフォーマンス

Solution Wide Analysis(ソリューション全体解析)と Find usages(使用箇所の検索)コマンドがリファクタリングされています。 社内テストでは、それぞれの動作が従来の 20~40% ほど高速化されていることを確認しています。

ダウンロード

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