ReSharper 2022.1 の新機能

2022.1 では品質に焦点を当て、特に Blazor 開発と C# サポートに関する多数の改善とバグ修正を行っています。

ダウンロード

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

C# のサポート

We continue to improve support for C# 10, particularly global usings. このリリースでは、コンテキストアクションとしても使用できる新しい 2 つのリファクタリングを導入しました。

Extract Global Using(Global Using の抽出)は、プロジェクトに global using の概念を導入する上で役立ちます。 このリファクタリングを通常の using ディレクティブに対して呼び出すと、ReSharper がそのディレクティブを指定の GlobalUsings.cs ファイルへの抽出を提案します(このファイルがまだプロジェクトに存在しない場合は作成されます)。 不要になった通常の using は、プロジェクトのファイルから除去されます。

global using を通常の using にリファクタリングする場合は、Inline Global Using(Global Using のインライン化)リファクタリングも役立ちます。 このリファクタリングを global using に対して呼び出すと、GlobalUsings.cs から global using が除去され、必要に応じて対応する using ステートメントがプロジェクトのファイルに追加されます。

global using 機能は、Find Usages(使用箇所の検索)と拡張メソッドのコード解析でサポートされています。

We’ve looked into the approaching C# 11 and supported generic attributes.

null 許容参照型

  • null であってはならない式に対する null チェックの警告を 2 つのカテゴリに分割しました。 最初の警告は、Null 許容参照型のアノテーションで null ではないと宣言されている式に対する警告です。 2 つ目の警告は、null に対する実行時チェックが実際に存在する式に対する警告です。
  • runtime enforced not null warnings only(実行時に強制される非 Null 警告のみ)モードに切り替えるための新しい設定を追加しました。 この設定は、annotation-based 警告に関する Alt+Enter メニューの構成項目グループからアクセスできます。
  • [MemberNotNull] および [MemberNotNullWhen] アノテーションが、null 許容参照型を使用しないプロジェクトでサポートされるようになりました。

エンドポイント

ASP.NET Core 6 の Minimal API と規則ベースのルーティングでエンドポイントがサポートされるようになりました。 サポート対象には、ナビゲーション、コード解析、およびコード補完が含まれます。

Razor と Blazor

Razor と Blazor には、以下の最も重要な機能と修正が追加されています。

  • .NET 6 の新しい [EditorRequired] 属性をサポートしました。 Blazor コンポーネントを参照しようとする場合は、必要なパラメーターを指定せずに対応するインスペクションとクイックフィックスを使用することもできます。
  • 待ち望まれていた Razor 構文内での C# ローカル関数のサポートを実現しました。
  • Blazor コンポーネントを含む .razor ファイルでのコードクリーンアップを改善しました。 すべての @using 宣言が除去されなくなりました。
  • また、Blazor コンポーネントへの参照を含む Razor コードでの If To Switch(If Switch)と Invert If(If の反転)コンテキストアクションを修正しました。
  • ReSharper が Blazor の注入されたプロパティに正しい命名スタイルを使用するようになりました。
  • Comment with Line Comment(行コメント)アクションで、ユーザーが期待する部分の Razor コードのみにコメントを付けられるようになりました。
  • We’ve added navigation through inheritance hierarchy to Razor code. 対応するガターマークが基底シンボルと派生シンボルに表示されるようになっています。 そのマークをクリックすると、コードに移動できます。

コードのクリーンアップと整形

Alt+Enter メニューで、Code Cleanup(コードのクリーンアップ)とFormatting(整形)に関連するすべての項目を整理しました。 Format selection(選択範囲の整形)、Cleanup selection(選択範囲のクリーンアップ)、および Apply syntax style(構文スタイルの適用)が 1 つの Reformat and Cleanup(整形とクリーンアップ)項目に統合され、1 つのエントリポイントでアクセスできるようになりました。

これらの変更のほか、構文スタイルの設定が Configure code style(コードスタイルの構成)および Autodetect code style settings(コードスタイル設定の自動検出)アクションで使用できるようになっています。 Preview code style(コードスタイルのプレビュー)パネルには、構文スタイルの変更も表示されます。

Unreal Engine のユニットテスト

The Unreal Engine testing framework is now supported. ReSharper C++ が Unreal Engine のユニットテストを検出すると、テストまたはテストスイート全体を実行またはデバッグするための対応するアクションのインジケーターがエディターの各テストの横に追加されます。 Unit Test Sessions(ユニットテストセッション)ウィンドウでテストの結果をレビューし、失敗したテスト、すべてのテスト、または特定のテストを再実行できます。

ReSharper C++ 2022.1 の新機能

C++ サポートのさらなる改善

ReSharper C ++ では暗黙的なコンストラクター呼び出しの処理が改善され、次を含むさらに多くのケースで使用箇所を検索して呼び出し先のコンストラクターに移動できるようになりました。

  • 標準(make_unique/make_shared)と Unreal 固有(MakeShared/MakeUnique)のスマートポインター作成関数
  • emplace のようなコンテナーメソッド
  • static_cast と C 形式のキャスト式

ReSharper C++ 2022.1 は、emplace のような関数が不正な引数を指定して呼び出された場合にもオーバーロードの警告を表示します。

ReSharper C++ 2022.1 の新機能

ソースジェネレーター

ソースジェネレーターのサポートのパフォーマンスを解析した結果、ソースが生成したドキュメントをコンパイラーから取得する際にリクエスト間の遅延を増やすことにしました。

そのため、ソースジェネレーターはコンパイラーと CPU ワークの合計量が減少するまで実行されません。 実際にどの程度のパフォーマンス改善が期待できるかは、Visual Studio の完全行補完などの他の機能もジェネレーターをトリガーしているかどうかによって変わります。

パフォーマンス

We’ve fixed a number of performance issues already and laid the groundwork for more. これには、お客様から提供されたパフォーマンススナップショットの処理、社内でのプロファイリング作業、およびデータ収集が含まれます。今後、パフォーマンス低下を自動チェックする仕組みを導入できることを願っています。

「外部プロセス」モードの作業は現在進行中です。 Please refer to the newest update in our issue tracker.

ReSharper コマンドラインツール

InspectCode ツールは、Static Analysis Results Interchange FormatSARIF)互換の出力ファイルを生成できます。

コマンドラインツールで Alpine Linux がサポートされるようになりました。

デコンパイラー

  • 組み込みのデコンパイラーで System.Private.CoreLib のような XML ドキュメントファイルと名前が異なるアセンブリなど、プラットフォームアセンブリの XML ドキュメントコメントが表示されるようになりました。 XML ドキュメントのパスは、デコンパイルされたファイルのヘッダーに表示されるようになっています。
  • Metadata(メタデータ)ビューでナビゲーションの再ターゲット機能をオフにしました。
  • Blob ノードのプロパティにデコードされた、または生の Blob 表現を追加しました。
  • Assembly Explorer が転送された型([TypeForwardedTo] 属性)をサポートするようになりました。 Locate in Metadata(メタデータ内で検索)アクションも転送された型、アセンブリとモジュール参照、およびリソースに対応しています。
  • インターフェースや列挙型など、シーケンスポイントのない型の PDB ナビゲーションを改善しました。

dotPeek 2022.1 の新機能

SQL Server イベントのサポート改善 dotUltimate

Windows(.NET Core、.NET 5 以上)、macOS、および Linux(.NET Core 3.0 以上、.NET 5 以上)の dotTrace で Microsoft.Data.SqlClient プロバイダーからの SQL Server イベントをサポートするようになりました。

dotTrace 2022.1 の新機能

ドラッグアンドドロップによるアプリケーションへの接続 dotUltimate

専用のアイコンをアプリケーションウィンドウにドラッグするだけで、実行中のアプリケーションにプロファイラーを接続できるようになりました。

dotMemory 2022.1 の新機能

コメントによるカバレッジ解析からのコードの除外 dotUltimate

コメントを使用して、コードの特定の行またはブロックをカバレッジ解析から除外できるようになりました。 次のように、除外方法にはいくつかのオプションがあります。

// dotcover disable
var i = 1;
var j = 10;
// dotcover enable

/* dotcover disable */ var i = 1; /* dotcover enable */

var i = 1; // dotCover disable this line

// dotcover disable next line
var j = 100;

これらのオプションが機能するには、JetBrains.dotCover.MSBuild NuGet パッケージを参照する必要があります。 この依存関係は開発時にのみ必要であるため、ランタイム依存関係としてプロジェクトに含まれることはありません。

dotCover 2022.1 の新機能

その他の更新

  • Move type to file(型をファイルに移動)リファクタリングを改善しました。改善対象にはコンテキストアクションとクイックフィックスも含まれます。 一般に、プリプロセッサーディレクティブは型と共に移動します。
  • 「ファイルシステム上での大量の変更」に関する問題を修正しました。 イベントバッファーのオーバーフローを引き起こしていた問題です。 これにより、ReSharper が正当な理由なしにソリューション内のすべてのファイルを検証することで CPU の使用率が高くなり、深刻な場合には UI がフリーズしていました。
  • ローカライズ版の Visual Studio で .sqlproj ファイルを扱う際に ReSharper の機能を妨げていた問題を解消しました。
  • ReSharper に Metadata(メタデータ)ツリービューを追加しました(Visual Studio 2022 のみが対象)。 アセンブリメタデータ内のすべてのアイテムを閲覧し、検索やソースへの移動などの機能を使用できます。 For a full list of the features, please refer to the description in dotPeek documentation – the decompiler was the first product to have it.
  • 長年にわたって発生していた「Git ブランチを切り替えると、ReSharper に赤文字でコードが表示される」現象に関する複数の問題に対処しました。 この問題が発生する具体的なシナリオをいくつか特定し、それらを修正しました。
ダウンロード

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