ReSharper 2020.2 では C#8 とnull 許容参照型に対応した新しいインスペクションとクイックフィックス、ご要望の多かった保存時のコードクリーンアップ機能、改良版のユニットテストランナーを提供しているほか、アクセシビリティの改善も行っています。 また、ReSharper C++ では Unreal Engine 開発の機能が強化され、C++/CLI のサポート、ナビゲーション、コード解析が大幅に改善されました。
無料 30 日間体験版をご利用可能です
null 許容性コード解析がより多くのケースを認識し、分解および foreach
サイクルを介して不正な null 許容性をトレースできるようになりました。 また、対応するクイックフィックスも提供しています。
コード解析が null 許容参照型が無効になっているコード(#nullable disable
)でも、API に対して JetBrains.Annotations 属性(NotNull
と CanBeNull
の両方)を考慮するようになりました。
プロジェクトに 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 の実行時間を短くするため、次のような若干の改善を行いました。
.NET Framework と .NET Core 向けのユニットテストランナーをゼロから再構築し、どちらのランタイムにも同じランナーを使用して、Visual Studio のプロセス外で実行できるようにしました。 これにより、ユニットテストの検出、実行、デバッグに関する多くの問題が解消され、.NET Core テストのユニットテスト階層を完全にコントロールできるようになりました。
新しいテストランナーは次の項目を組み込みでサポートしています。
UI に関して最も注目すべきは、ReSharper が xUnit および NUnit フレームワーク向けに .NET Core テストの DisplayName
属性をサポートするようになったことです。
ユニットテストツリーに Passed/Failed などのフィルターを適用すると、カウンターに 2 種類の数値(全テストの合計数、フィルター条件を満たすテストの数)が表示されます。
Navigate To メニューに 2 つの新しいアクションが追加されました。
NUnit の Assert.Multiple
メソッドを新たにサポートし、最初に不合格した後にコードを終了することなく複数のアサーションをチェックできるようになりました。
時間別にグループ化するための時間範囲をオプションで直接編集できます。
このリリースでは、JAWS / NVDA / Microsoft Narrator のようなスクリーンリーダーのサポートが強化されています。 これらのスクリーンリーダーから以下の項目に対するアクセシビリティが改善されています。
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 Usages や Go to Declaration などの ReSharper の他の機能も x:Bind
を認識します。
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 のバージョンでは最適化が行われたほか、結果グラフの描画性能が大幅に向上しています。
結果グラフを次の新しい形式にエクスポートできるようになりました。
ダイアグラムツールウィンドウがついに Visual Studio のダークテーマに対応しました。
これまでよりはるかに簡単にコード内の外部アセンブリから型の使用箇所に移動できるようになりました。 ReSharper では Go to Type の検索結果から Find Usages に直接移動できます。 この機能を試すには、何らかの型を検索し、リスト内にあるその型をキーボードを使用するかマウスを上に移動させてハイライトし、対応するショートカットを使用して Find Usages か Go to Usage を呼び出してください。
バージョン 2020.2 のリリース以降、Go to Symbol および Go to File Member ダイアログからのクイックドキュメントの直接呼び出しなど、複数の ReSharper のアクションをお好みのキーマップスキームでマッピングしたショートカットを使用して呼び出せるようになりました。
Peek Definition ビューに一部の一般的な ReSharper アクションの結果を表示するため、新しい Peek アクション一式が追加されました。
実装の Peek ビュー を開くには Ctrl+Alt を押したままマウスホイールをクリックして Peek Implementation アクションを呼び出すか、シンボルにキャレットを置いた状態で Ctrl+Alt+Q を押してください。
Peek ビュー内のすべての基本シンボルを観察するには、Peek Base Symbols アクションを呼び出してください。 シンボルの上で Shift+Alt+Q を押すだけで、それを実行できます。
このリリースでは Conflicts ダイアログが再設計され、Refactorings インターフェース内の単独のステップになっています。 従来の単純なリストはファイルごとにグループ化されたツリーに置き換えられています。
式に対して Introduce parameter または Introduce field リファクタリングを呼び出す際、ReSharper は式のどの部分にリファクタリングを適用するかを確認します。
ReSharper C++ 2020.2 では Unreal Engine プロジェクトモデルのサポートを開始し、より高度な自動インポートの提案を include
ディレクティブに対して行い、さまざまなソリューション構成をサポートしています。 ReSharper C++ はインスペクションの重大度とコード生成アクションを調整することで、Unreal Engine のガイドラインへの準拠度も高めています。
ナビゲーションを容易にするため、Search Everywhere/Go To でエンジンソースのシンボルをライブラリシンボルのように処理するようにしました。 Unreal Engine ガイドラインの適用や、Unreal Editor 内のプロジェクトファイルの更新を促す複数の新しいインスペクションも実装されています。
ReSharper のライセンスが ReSharper と ReSharper C++ の両製品をカバーするようになったため、言語間の架け橋である C++/CLI のサポートが大幅に更新され、C++/CLI と C# 間の相互運用性が改善されました。
ReSharper C++ が C# コード内の派生シンボルを検出する一方、Go to Base Symbols と Go to Derived Symbols がインポートされた CLR エンティティに機能するようになりました。
ReSharper C++ がメモリの割り当て方法を検査し、ターゲットの型が有効でない場合に gcnew
を new
に置換するクイックフィックス(逆の場合にも対応)を提案するようになりました。 別のインスペクションは C++ の final
指定子をマネージクラスやマネージインターフェースに使用しようとすると警告を表示しますが、代わりにクイックフィックスでそれを sealed
にすることができます。 また、クイックフィックスを使用して C 形式のキャストを safe_cast
に変換できるようになりました。
ReSharper が位置揃えの対象となるコードブロックの一部のみが整形されている場合でも、似たようなコードの水平位置を揃えるようになったため、セミコロンや波括弧を追加しても位置がずれることがなくなりました。
dotCover コンソールランナーに次のような若干の改善が加えられています。
--reportype=SummaryXml
パラメーターを使用し、カバー対象のクラス / メソッド / ステートメントの合計数に関するデータを含む新しい Summary レポートタイプを作成できるようになりました。 --reporttype=HTML,SummaryXml
--output=report.html;summary.xml
のように、ランナーが複数タイプのレポートを同時に生成できるようになりました。 Rider のスタンドアロン dotTrace と dotTrace の両方が、Windows 上で Mono/Unity アプリケーションのネイティブ部分をプロファイリングできます。 'Enable native profiling' オプションでセッションを開始するだけで、ネイティブコールスタックとマネージコールスタックの両方がパフォーマンスのスナップショットに表示されます。 この機能は、Unity ゲームでパフォーマンスのボトルネックを解析するのに役立つかもしれません。
dotTrace コンソールプロファイラーに次のような若干の改善が加えられています。
ピン留めされたオブジェクトを単独のオブジェクトセットとして開き、GC ルートから到達不可能なオブジェクトを単独のオブジェクトセットとして開けるようになりました。
dotMemory コマンドラインプロファイラー に次のような内容をはじめとする改善が加えられています。
dotPeek は最新バージョンの C# への対応を継続的に強化しており、新しいリリースでは次の項目に対応しています。
Throw
式。NullablePublicOnly
属性。無料 30 日間体験版をご利用可能です