ReSharper の新機能

ReSharper 2020.2の新機能

ReSharper 2020.2 では、新しい インスペクション と C#8 と nullable リファレンスタイプのクイックフィックス、待望の保存時のコードクリーンアップ、改善されたユニットテストランナー、アクセシビリティの改善が行われています。また、ReSharper C++ はUnreal Engine開発の次のレベルへと導き、C++/CLI サポート、ナビゲーション、コード解析のための多くの改善が含まれています。

ダウンロード

30日間の無料トライアル

コード解析

Nullabilityコード分析で、より多くのケースが認識されるようになり、解体foreach サイクルを介して不正なnullabilityを追跡できるようになりました。また、対応するクイックフィックスも提供します。

コード分析で、APIのJetBrains.Annotations属性( NotNullCanBeNullの両方)が考慮されるようになりました。null許容参照型が無効になっているコード(#nullable disable)でも同様です。

プロジェクトに System.Linq.Async NuGetパッケージがインストールされている場合、foreach をLINQに、LINQをコードに変換するためのコンテキストアクションも IAsyncEnumerable<T> で利用できます。

これで、適切なクイックフィックスを使用して、IEqualityComparer<T> および IComparer<T> 実装を簡単に生成できます。

コード分析では、実装またはオーバーライドされたメンバーのnull可能性を検証するときに、コンパイラーの注釈( AllowNullDisallowNullなど)が考慮されるようになりました。

新しいインスペクションとクイックフィックスがあり、変数と戻り値の型がnull許容値を保持または返していない場合に、「null許容不可」にします。

コード分析は、.editorconfigファイルのdotnet_diagnosticルールに従うことができるようになりました.editorconfigファイルでインスペクションの重大度を指定します(例: dotnet_diagnostic.CS1058.severity = hint)。ReSharperはそれに応じてインスペクションを表示します。

このリリースでは、インターフェース機能のデフォルト実装のサポートが強化されています。コードエディターの左側のガターは、メソッドが実装またはオーバーライドされていることを示しています。リファクタリングとナビゲーションは、このC#言語機能を認識しています。

インレイヒントがXAMLコードで使用できるようになりました。マークアッププロパティ名と DataContextのヒント、およびマージンとパディングのヒントを提供します。これは、それらの順序を覚えたくない場合に便利です。

Alt + Enter メニューを介してソリューションのnull可能警告を!クイックフィックスを無効にすることができます。

コードのクリーンアップ

これで、ファイルの保存時にコードクリーンアップを自動的に起動するようにReSharperを構成できます。やっと!

この機能には、サードパーティのプラグインは必要ありません。この機能は、ReSharper | Options | Code Editing | Code Cleanup オプションページで有効にできます。

最近変更されたファイル最近開いたファイルなど、コードクリーンアップを実行するための新しいより詳細なスコープがあり、コードクリーンアップがソリューション全体で実行する必要がないため、結果を得るのにかかる時間を大幅に短縮できます。より正確に調整するために、「最近」に該当するものを指定できます。

コードのクリーンアップが完了した後、ファイルを自動保存します。この機能は、ReSharper | Options | Code Editing | Code Cleanup オプションページで有効にできます。

コードクリーンアップの実行時間を短縮するためにいくつかの改善点があります。

  • クリーンアッププロファイルで対応するチェックボックスが選択されていない限り、クリーンアップは、クリーンアップするコードを収集するときにアナライザーを実行しません。たとえば、プロファイルで冗長性の削除オプションが選択されていない場合、冗長性の検索に関連するアナライザーは実行されません。
  • ファイルに対して複数のコード修正が同時に実行されます。修正が行われるたびにファイルが再度強調表示されなくなります。

ユニット・テスト

.NET フレームワークと.NET Coreの両方の単体テストランナーをゼロからやり直して、Visual Studioプロセスで実行される両方のランタイムで同じランナーを使用できるようにしました。単体テストの検出、実行、デバッグに関する一連の問題を解決するのに役立ち、.NET Coreテストの単体テスト階層を完全に制御できます。

新しいテストランナーには、次のサポートが組み込まれています。

  • NUnit、xUnit、MSTest v2ユニットテストフレームワーク用のMSFakes
  • NUnit、xUnit、およびMSTest v2のTypeMockアイソレーター

UIで最も目立つのは、ReSharperがxUnitおよびNUnitフレームワークの.NET Coreテストで DisplayName 属性をサポートするようになったことです。

ユニットテストツリーにフィルターを適用します(例: Passed / Failed / etc)。は、カウンターが2つの異なる数値を提供することを意味します。つまり、すべてのテストの総数と、フィルター条件を満たすテストの数です。

「移動」メニューに2つの新しいアクションがあります。

  • このテストを含むすべてのユニットテストセッションを表示します。
  • 単体テストエクスプローラーツールウィンドウにテストを表示します。

NUnitの Assert.Multiple メソッドのサポートを導入しました。これにより、最初の失敗後にコードが終了することなく、複数のアサーションをチェックできます。

期間でグループ化する時間範囲は、オプションで直接編集できます。

アクセシビリティの向上

このリリースでは、JAWSNVDAマイクロソフトナレーターなどのスクリーンリーダーのサポートが改善されています。これらのスクリーンリーダーは、次の機能にアクセスしやすくなりました。

  • ReSharperツールウィンドウ内のコンポーネントのリストとツリー。
  • オプションダイアログ内の要素。
  • Alt + Enter メニューの要素。
  • すべてのジャンプダイアログ。
  • コード補完ポップアップ。

x:Bindサポート

UWP開発者に朗報があります。x:Bind を使用したコンパイル済みバインディングのサポートがついに登場しました!

ReSharperは x:Bind コードを正しく解決し、いくつかのインスペクションおよび対応するクイックフィックスを提供します。プロパティsetter、BindBack 属性が欠落していること、およびオーバーロードの衝突がある場合に警告します。さらに、C#分離コード内に適切なフィールド、プロパティ、またはメソッドを生成するための使用箇所から作成クイックフィックスのセットがあります。

コード補完と propertyPath , BindBackのパラメーター情報、およびx:Bind式内の UpdateSourceTrigger 属性があります。

シグネチャーの変更および安全な削除リファクタリングは、XAMLコードでのメソッドの使用を認識し、それに応じて更新します。また、静的/定数にするおよびフィールドのカプセル化リファクタリングはXAMLコードから直接機能し、C#コードビハインドから呼び出すと、XAMLの使用箇所を正しく更新します。

null 許容性の認識が x:Bind コード解析に統合されます。ReSharperは、C#コード内に CanBeNullNotNull 属性がある場合、たとえば、propertyPathで使用されるメソッド内の引数のための「Possible System.NullReferenceException」および「Possible null assignment to non-nullable entity」のように、null 関連のインスペクションをXAMLコード内に直接表示するようになりました。

使用箇所の検索宣言に移動などの他のReSharper機能も x:Bind バインディングを認識します。

ReSharperコマンドラインツール

2020.1では、RiderはMonoからmacOSおよびLinuxの.NET Coreに移行されました。このリリースでは、ReSharperコマンドラインツールはWindows、Linux、およびmacOSの.NET Coreで実行されます。

ReSharperコマンドラインツールにはMonoがバンドルされなくなったため、macOSおよびLinux用のツールには.NET Core 3.1が必要になることに注意してください。

Monoの代わりに.NET Coreをランタイムとして使用するもう1つの利点は、ReSharperコマンドラインツールを.NET Coreグローバルツールとしてインストールできることです。次のコマンドを実行して、インストールします。

dotnet tool install -g JetBrains.ReSharper.GlobalTools --version 2020.2.0-*

jb tool_name [options]を使用してツールを実行します。例:

jb inspectcode yourSolution.sln -o=<pathToOutputFile>

タイプとプロジェクトの依存関係図

このリリースでは、グラフの描画に使用されるyFilesエンジンが最新バージョンに更新されます。この新しいyFilesバージョンは、最適化に加えて、結果のグラフの描画パフォーマンスを大幅に向上させます。

これで、結果のグラフを新しい形式にエクスポートできます。

  • 外部ツールでさらに分析するためのGraphMLファイル形式
  • PNGフォーマットでエクスポートできない大きな図を印刷するためのXPSファイル形式

ダイアグラムツールウィンドウは、最終的にVisual Studioダークテーマをサポートします。

ナビゲーションの更新

コード内の外部アセンブリからの型の使用箇所への移動がはるかに簡単になりました。ReSharperは、型へジャンプの検索結果から使用箇所の検索に直接移動できます。試してみるには、タイプを検索し、キーボードまたはマウスオーバーでリスト内でタイプを強調表示し、それぞれのショートカットを使用して使用箇所の検索または使い方にジャンプを呼び出します。

v2020.2リリース以降、お気に入りのキーマップスキーマでこれらのアクションにマップされたショートカットを使用して、シンボルにジャンプおよびファイルメンバーに移動ダイアログからクイックドキュメントを直接呼び出すなど、いくつかのReSharperアクションを呼び出すことができます。

新しいピークアクション

一連の新しいピークアクションが追加され、いくつかの一般的なReSharperアクションの結果をピーク定義ビューに表示します。

ピーク実装アクションを呼び出して、Ctrl + Altを押しながらマウスホイールをクリックするか、記号にキャレットを付けたまま Ctrl + Alt + Q を押して、実装のピークビューを開きます。

ピークベースシンボルアクションを呼び出して、ピークビュー内のすべての基本シンボルを観察します。シンボル上で Shift + Alt + Q を押すだけで実行できます。

Ctrlを押しながらシンボル上でマウスホイールをクリックして、ピーク使用箇所アクションを呼び出し、ピークビュー内の使用状況を表示します。

リファクタリング

このリリースでは、競合ダイアログがリファクタリングインターフェースの個別のステップとして再設計されています。以前のプレーンリストは、ファイルごとにグループ化されたツリーに置き換えられました。

式でパラメーターの導入またはフィールドの導入リファクタリングを呼び出すと、ReSharperはリファクタリングを適用する必要がある式の部分を確認します。

Unreal Engineの機能の改善

Unreal Engine

ReSharper C++ 2020.2は、Unreal Engineプロジェクトモデルのサポートを導入し、include ディレクティブのよりスマートな自動インポートの提案と、さまざまなソリューション構成のサポートを提供します。ReSharper C++はまた、インスペクションの重大度とコード生成アクションを調整することにより、Unreal Engineのガイドラインにより厳密に準拠しています。

ナビゲーションを簡単にするために、どこでも検索/移動はライブラリソースのようなエンジンソースからのシンボルを処理するようになりました。Unreal Engineのガイドラインを適用し、Unrealエディターでプロジェクトファイルをリフレッシュするように促す新しいインスペクションもいくつかあります。

C++ / CLIサポートの向上

C++/CLI

ReSharperライセンスがReSharperとReSharper C++の両方の製品をカバーするようになったため、言語間の架け橋であるC++ / CLIのサポートにより、C++ / CLIとC#間の相互運用性が向上し、相互運用性が向上しています。

ReSharper C++はC#コードで派生シンボルを検索しますが、ベースシンボルへ移動および派生シンボルに移動はインポートされたCLRエンティティで機能するようになりました。

ReSharper C++は、メモリの割り当て方法をインスペクションし、ターゲットタイプが無効な場合に、gcnewnew に(またはその逆に)置き換えるクイックフィックスを提案します。別のインスペクションは、マネージクラスまたはマネージインターフェースでC++ final 指定子を使用しようとすると警告を発し、代わりにクイックフィックスを使用して sealed にします。さらに、クイックフィックスを使用して、Cスタイルのキャストを safe_castに変換できるようになりました。

ReSharper C++の新機能

アセンブリー・エクスプローラー

  • NuGet v3パッケージフィードがNuGetから開くNuGetパッケージキャッシュから開く、およびNuGet packages.configを開きますでサポートされるようになりました。
  • 類似した名前のアイテムは、NuGetから開くおよびNuGetパッケージキャッシュから開くダイアログで折りたたまれます。
  • NuGetパッケージはアルファベット順にソートされます。

その他の機能

フォーマット

ReSharperは、整列されたグループの一部のみがフォーマットされている場合でも、同様のコードの列を正しく整列するようになりました。そのため、セミコロンまたは中括弧を追加しても、整列は中断されません。

.NETツールと拡張機能

dotCover dotUltimate

dotCoverコンソールランナーにはいくつかの改善点があります。

  • --reportype=SummaryXml パラメータを使用すると、合計でカバーされるクラス、メソッド、およびステートメントの数に関するデータを含む、新しいサマリーレポートタイプを作成できます。
  • ランナーは複数のタイプのレポートを一度に生成できるようになりました: --reporttype=HTML,SummaryXml --output=report.html;summary.xml
  • Linux(Debian、Ubuntu)のランナーは、ARM64システムで分析を実行できるようになりました。

さらに学習したい方に

dotTrace dotUltimate

RiderのスタンドアロンdotTraceとdotTraceはどちらも、Windows上のMono / Unityアプリケーションのネイティブ部分をプロファイルできます。「ネイティブプロファイリングを有効にする」オプションでセッションを開始するだけで、パフォーマンススナップショットにネイティブコールスタックとマネージドコールスタックの両方が表示されます。この機能は、Unityゲームのパフォーマンスボトルネックの分析に役立つ可能性があります。

dotTraceコンソールプロファイラーには、いくつかの改善点があります。

  • プロファイラを使用すると、コマンドをstdinまたはファイルに送信して、プロファイリングセッションを制御できます(スナップショットの作成、プロファイルされたプロセスからの切り離しなど)。
  • Linux(Debian、Ubuntu)のプロファイラーは、ARM64システム上のアプリケーションをプロファイリングできるようになりました。

さらに学習したい方に

dotMemory dotUltimate

これで、固定されたオブジェクトを別のオブジェクトセットとして開くことができ、GCルートから到達できないオブジェクトを別のオブジェクトセットとして開くことができます。

dotMemoryコマンドラインプロファイラーの改善点は次のとおりです。

  • Windowsに加えて、コマンドラインプロファイラーがLinuxとmacOSでも利用できるようになりました。
  • Linux(Debian、Ubuntu)のプロファイラーは、x64だけでなくARM64システムでもアプリケーションのプロファイルを作成できます。

さらに学習したい方に

dotPeek

dotPeekは、C#の最新バージョンのサポートを改善し続けており、新しいリリースでは次のものが提供されます。

  • 表情豊かなメンバー。
  • Throw 式。
  • デフォルトのパラメーターと名前付き引数。
  • NullablePublicOnly 属性。

さらに学習したい方に

ダウンロード

30日間の無料トライアル