ReSharper 2020.2 の新機能

ReSharper 2020.2 では C#8 とnull 許容参照型に対応した新しいインスペクションとクイックフィックス、ご要望の多かった保存時のコードクリーンアップ機能、改良版のユニットテストランナーを提供しているほか、アクセシビリティの改善も行っています。 また、ReSharper C++ では Unreal Engine 開発の機能が強化され、C++/CLI のサポート、ナビゲーション、コード解析が大幅に改善されました。

ダウンロード

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

コード解析

null 許容性コード解析がより多くのケースを認識し、分解および foreach サイクルを介して不正な null 許容性をトレースできるようになりました。 また、対応するクイックフィックスも提供しています。

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

プロジェクトに System.Linq.Async NuGet パッケージをインストールしている場合、foreach から LINQ および LINQ からコードに変換するコンテキストアクションも IAsyncEnumerable<T> で使用できるようになりました。

適切なクイックフィックスを使用し、IEqualityComparer<T> および IComparer<T> の実装を簡単に生成できるようになりました。

実装またはオーバーライドされたメンバーの null 許容性を検証する際にコード解析がコンパイラーのアノテーション(AllowNull および DisallowNull など)を考慮するようになりました。

変数や戻り値の型が null 許容値を保持しない、または返さない場合にそれらを「null 非許容」にする新しいインスペクションとクイックフィックスを追加しました。

コード解析が .editorconfig ファイルの dotnet_diagnostic ルールに準拠できるようになりました。 .editorconfig ファイル内でインスペクションの重大度(dotnet_diagnostic.CS1058.severity = hint など)を指定すると、ReSharper が対応するインスペクションを表示します。

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

XAML コードでインレイヒントを使用できるようになりました。 ヒントはマークアップのプロパティ名と DataContext のほか、マージンとパディングに対して提供されるため、これらの順序を覚えたくない場合に役立ちます。

Alt+Enter メニュー経由で Suppress nullable warning with ! クイックフィックスをソリューションに対して無効化することができます。

コードのクリーンアップ

ReSharper の設定を変更し、ファイルを保存する際に Code Cleanup を自動起動できるようになりました! 満を持しての対応です!

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

最近変更されたファイル最近開いたファイルなど、Code Cleanup の実行範囲をより細かく指定できるようになりました。Code Cleanup をソリューション全体に対して実行する必要がないため、結果の取得にかかる時間を大幅に減らすことができます。 より正確な調整を行うため、「最近」とみなすものを指定できます。

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

Code Cleanup の実行時間を短くするため、次のような若干の改善を行いました。

  • Cleanup プロファイルで対応するチェックボックスがオンになっていない限り、クリーンアップはクリーンアップ対象コードを収集する際にアナライザーを実行しません。 例えば、プロファイルで「Remove redundancies」オプションが選択されていない場合、冗長箇所の検索に関連するアナライザーは実行されません。
  • 1 つのファイルに対して複数のコード修正が同時に実行されます。 修正が終わるたびにファイルが再度ハイライトされることはありません。

ユニットテスト

.NET Framework と .NET Core 向けのユニットテストランナーをゼロから再構築し、どちらのランタイムにも同じランナーを使用して、Visual Studio のプロセス外で実行できるようにしました。 これにより、ユニットテストの検出、実行、デバッグに関する多くの問題が解消され、.NET Core テストのユニットテスト階層を完全にコントロールできるようになりました。

新しいテストランナーは次の項目を組み込みでサポートしています。

  • NUnit / xUnit / MSTest v2 ユニットテストフレームワーク向けの MSFakes
  • NUnit / xUnit / MSTest v2 向けの TypeMock Isolator

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

ユニットテストツリーに Passed/Failed などのフィルターを適用すると、カウンターに 2 種類の数値(全テストの合計数、フィルター条件を満たすテストの数)が表示されます。

Navigate To メニューに 2 つの新しいアクションが追加されました。

  • このテストを含むすべてのユニットテストセッションを表示。
  • テストを Unit Test Explorer ツールウィンドウで表示。

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

時間別にグループ化するための時間範囲をオプションで直接編集できます。

アクセシビリティの改善

このリリースでは、JAWS / NVDA / Microsoft Narrator のようなスクリーンリーダーのサポートが強化されています。 これらのスクリーンリーダーから以下の項目に対するアクセシビリティが改善されています。

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

x:Bind のサポート

UWP 開発者の皆様への朗報ですが、ついに x:Bind を使用したコンパイル済みバインディングのサポートを開始しました!

ReSharper は x:Bind を含むコードを正しく解決し、複数のインスペクションと対応するクイックフィックスを提供しています。 不足しているプロパティの setter、BindBack 属性、およびオーバーロードの競合がある場合に警告します。 また、C# コードビハインドで適切なフィールド / プロパティ / メソッドを生成する Create from Usage クイックフィックス一式を使用できます。

x:Bind 式内の propertyPath / BindBack / UpdateSourceTrigger 属性に対応したコード補完とパラメーター情報があります。

Change Signature および Safe Delete リファクタリングが XAML コード内のメソッド使用箇所を認識し、それらを更新できるようになりました。 また、 Make Static/Const および Encapsulate Field リファクタリングが XAML コードから直接機能するようになり、C# コードビハインドから呼び出した際に XAML の使用箇所を適切に更新するようになりました。

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

Find UsagesGo to Declaration などの ReSharper の他の機能も x:Bind を認識します。

ReSharper コマンドラインツール

2020.1 では、Rider が macOS と Linux で Mono から .NET Core に移行しました。 このリリースでは、ReSharper コマンドラインツール が Windows / Linux / macOS の .NET Core で動作するようになりました。

今後、ReSharper Command Line Tools には Mono はバンドルされず、macOS と Linux 向けのツールには .NET Core 3.1 が必要になりますのでご注意ください。

また、Mono の代わりに .NET Core をランタイムとして使用すると、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 では Go to Type の検索結果から Find Usages に直接移動できます。 この機能を試すには、何らかの型を検索し、リスト内にあるその型をキーボードを使用するかマウスを上に移動させてハイライトし、対応するショートカットを使用して Find UsagesGo to Usage を呼び出してください。

バージョン 2020.2 のリリース以降、Go to Symbol および Go to File Member ダイアログからのクイックドキュメントの直接呼び出しなど、複数の ReSharper のアクションをお好みのキーマップスキームでマッピングしたショートカットを使用して呼び出せるようになりました。

新しい Peek アクション

Peek Definition ビューに一部の一般的な ReSharper アクションの結果を表示するため、新しい Peek アクション一式が追加されました。

実装の Peek ビュー を開くには Ctrl+Alt を押したままマウスホイールをクリックして Peek Implementation アクションを呼び出すか、シンボルにキャレットを置いた状態で Ctrl+Alt+Q を押してください。

Peek ビュー内のすべての基本シンボルを観察するには、Peek Base Symbols アクションを呼び出してください。 シンボルの上で Shift+Alt+Q を押すだけで、それを実行できます。

Peek ビュー内の使用箇所を表示するには、Ctrl を押したままシンボルの上でマウスホイールをクリックして Peek Usages アクションを呼び出してください。

リファクタリング

このリリースでは Conflicts ダイアログが再設計され、Refactorings インターフェース内の単独のステップになっています。 従来の単純なリストはファイルごとにグループ化されたツリーに置き換えられています。

式に対して Introduce parameter または Introduce field リファクタリングを呼び出す際、ReSharper は式のどの部分にリファクタリングを適用するかを確認します。

Unreal Engine 機能の改善

Unreal Engine

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

ナビゲーションを容易にするため、Search Everywhere/Go To でエンジンソースのシンボルをライブラリシンボルのように処理するようにしました。 Unreal Engine ガイドラインの適用や、Unreal Editor 内のプロジェクトファイルの更新を促す複数の新しいインスペクションも実装されています。

C++/CLI サポートの改善

C++/CLI

ReSharper のライセンスが ReSharper と ReSharper C++ の両製品をカバーするようになったため、言語間の架け橋である C++/CLI のサポートが大幅に更新され、C++/CLI と C# 間の相互運用性が改善されました。

ReSharper C++ が C# コード内の派生シンボルを検出する一方、Go to Base SymbolsGo to Derived Symbols がインポートされた CLR エンティティに機能するようになりました。

ReSharper C++ がメモリの割り当て方法を検査し、ターゲットの型が有効でない場合に gcnewnew に置換するクイックフィックス(逆の場合にも対応)を提案するようになりました。 別のインスペクションは C++ の final 指定子をマネージクラスやマネージインターフェースに使用しようとすると警告を表示しますが、代わりにクイックフィックスでそれを sealed にすることができます。 また、クイックフィックスを使用して C 形式のキャストを safe_cast に変換できるようになりました。

ReSharper C++ の新機能

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

  • NuGet v3 パッケージフィードが Open from NuGetOpen from NuGet packages cacheOpen NuGet packages.config でサポートされるようになりました。
  • 名前が似ている項目が Open from NuGet および Open from NuGet packages cache ダイアログで折りたたまれて表示されるようになりました。
  • NuGet パッケージはアルファベット順にソートされます。

その他の機能

書式設定

ReSharper が位置揃えの対象となるコードブロックの一部のみが整形されている場合でも、似たようなコードの水平位置を揃えるようになったため、セミコロンや波括弧を追加しても位置がずれることがなくなりました。

.NET Tools および拡張機能

dotCover dotUltimate

dotCover コンソールランナーに次のような若干の改善が加えられています。

  • --reportype=SummaryXml パラメーターを使用し、カバー対象のクラス / メソッド / ステートメントの合計数に関するデータを含む新しい Summary レポートタイプを作成できるようになりました。
  • --reporttype=HTML,SummaryXml --output=report.html;summary.xml のように、ランナーが複数タイプのレポートを同時に生成できるようになりました。
  • Linux(Debian、Ubuntu)用のランナーが ARM64 システム上で解析を実行できるようになりました。

詳細情報

dotTrace dotUltimate

Rider のスタンドアロン dotTrace と dotTrace の両方が、Windows 上で Mono/Unity アプリケーションのネイティブ部分をプロファイリングできます。 'Enable native profiling' オプションでセッションを開始するだけで、ネイティブコールスタックとマネージコールスタックの両方がパフォーマンスのスナップショットに表示されます。 この機能は、Unity ゲームでパフォーマンスのボトルネックを解析するのに役立つかもしれません。

dotTrace コンソールプロファイラーに次のような若干の改善が加えられています。

  • プロファイラでコマンドを標準入力またはファイルに送信し、プロファイリングセッションをコントロールできるようになりました(スナップショットの取得、プロファイリング済みプロセスからの切断など)。
  • Linux(Debian、Ubuntu)用のプロファイラーが ARM64 システム上でアプリケーションをプロファイリングできるようになりました。

詳細情報

dotMemory dotUltimate

ピン留めされたオブジェクトを単独のオブジェクトセットとして開き、GC ルートから到達不可能なオブジェクトを単独のオブジェクトセットとして開けるようになりました。

dotMemory コマンドラインプロファイラー に次のような内容をはじめとする改善が加えられています。

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

詳細情報

dotPeek 

dotPeek は最新バージョンの C# への対応を継続的に強化しており、新しいリリースでは次の項目に対応しています。

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

詳細情報

ダウンロード

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