ReSharper Ultimate 2020.1の新機能

ReSharper Ultimate 2020.1 では、C# の整数値に使用する新しいデータフロー解析ツールが導入され、null 許容参照型の機能と C++20 の新機能がサポートされます。 XAML サポートと Ureal Engine サポートが改善され、ナビゲーションには 2 つの新機能が追加されます。また、Localization Manager でコメントを追加する機能が有効化されます。 デコンパイラでは、C# 7.x と 8.0 のほかの機能もサポートされます。

ダウンロード

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

C# の整数値のデータフロー解析

C# の整数値のデータフロー解析

このバージョンの ReSharper では、アプリケーション内で整数値の使用を追跡するために使う新しいタイプの C# コード解析機能が導入されています。 この新しいタイプの解析は、すべての int ローカル変数の値がどのように変化するのかを追跡するほか、それらの変数に対してよく実行されるすべての演算の正確性を確認し、不要なコード、または誤りがある可能性のあるコードを検出します。 警告の対象は以下のとおりです。

  • 関係演算子 / 等値演算子の結果が常に trueまたはfalseの場合。
  • ヒューリスティック手法で到達不可であると判断された int 値をチェックしている switch case 条件。
  • 1 による掛け算や 0 の足し算といった無意味な算術演算。
  • 潜在的な int のオーバーフロー。
  • 潜在的な 0 による割り算。

解析の精度を向上させるため、int 型の型メンバーおよびパラメータと一緒に使用する [NonNegativeValue] および [ValueRange(from, to)] という 2 つの新しい JetBrains.Annotations 属性を追加しています。 これらの属性は、ランタイム中に起こり得る特定の int メンバーの値の変化を指定します。

C# サポート

C# サポート

C# 8 の言語機能に対するサポートを引き続き追加しています。 null 許容参照型(NRT)への対応として、コード解析機能、リファクタリングや ReSharper Build 等の機能を利用できるようにするために、C# 言語サポートの基本機能を一新しました。 ReSharper 2020.1 では、コード解析によって null 許容参照型に関連するコンパイルの警告が報告されるほか、そのほぼすべてに対するクイックフィックスが提供されます。

以下のインスペクション機能とクイックフィックスが新たに導入されています。

  • null 許容参照型に関する冗長な型パラメータの制約を検出する。
  • メソッドの async オーバーロードが使用できる時にはそれを検出し、sync オーバーロードの代わりに使用する。
  • 現在の型の名前を取得するために、typeof(SomeType).Name 構文の代わりに nameof 式を使用する。

パフォーマンスに関する更新

このリリースでは、ReSharper のアーキテクチャに数多くの変更が適用され、Visual Studio プロセス外で ReSharper のすべてのコア機能を実行するという目標にさらに近づきました。 こういったすべての変更は内部的に行われているため、ReSharper 2020.1 リリースビルドの UI/UX に変更はありません。

Progress toward moving ReSharper out of process(ReSharper の外部プロセス化への進捗)についての最新情報を見逃した方は、この機会にぜひご確認ください。

ナビゲーションの更新

この更新では、小さくも有益な機能をいくつかナビゲーションに適用しています。ReSharper の操作を主にマウスで行うユーザーにとってもキーボードで行うユーザーにとっても役に立つ機能です。

  • ミドルクリック(マウスのスクロールボタンをクリック)で Go to Declaration を実行できるようになりました。
  • Go to File の結果リストで Ctrl+Enter キーを押すと、Solution Explorer 内のファイルがハイライトされます。
  • Go To File / Go To Everything にフルパスを使ってファイルを検索できるようになりました。
XAML サポートの改善

XAML サポートの改善

バージョン 2020.1 では、WPFXamarin.FormsUWP、および Avalonia XAML に関する XAML サポートを数多く改善・修正しました。 

データの文脈に沿った型推論のサポートとバインディングでのシンボル解決を改善できました。

  • d:BindingContext が使用されている場合
  • Xamarin.FormsPicker.ItemDisplay
  • Xamarin.FormsRelativeSource バインディング
  • ScrollViewer コントロールのテンプレートバインディング
  • ItemsSource が入れ子要素として使用されている場合
  • TreeView.ItemContainerStyle

UWP プロジェクトでは、以下のサポートを追加しました。 

  • Conditional XAML マークアップ
  • CustomResource バインディング 

その他の修正には以下のサポートが含まれます。

  • カスタム XML 名前空間スキーマの定義における Uniform Resource NameURN)の使用
  • リソース名へのスラッシュ記号の使用
  • Avaloniax:Static ディレクティブ
ユニットテストの更新

ユニットテストの更新

ReSharper 2020.1 以降、任意のユニットテストセッションをエクスポートおよびインポートできます。 これにより、チームや、コンピュータ間で、さらには、コードに変更を加え、両方のブランチに対して同じ一連のユニットテストを実行 / カバーするときはブランチ間でもテストを共有することができます。

また、 ReSharper の新しいメジャーバージョンにアップグレードしても、既に作成されているユニットテストセッションは保持されます。これは、作業中のためロックされているセッションにおける状態を失いたくない場合に便利です。

Localization Manager のコメント

Localization Manager のコメント

ご要望に応えて実現しました! コメント用に Comments の行をグリッドに追加しました。 リソースファイルからの値に対し、グリッド内で直接コメントを残し、既存のコメントを編集できるようになりました。 また、これらのコメントをエクスポート、インポートすることもできます。 コメントを使用しない場合、または今すぐ必要でない場合は、“Show/Hide comments” アイコンをクリックして非表示にすることができます。

そのほか、パフォーマンスの修正をいくつか実装することで、グリッドのロードとフィルタの加速化、一部で発生していた UI フリーズの解消、スクロールの円滑化を実現しています。

UX も強化されています。

  • 右から左方向の言語のサポートを強化
  • テキストエディタやリファクタリング ダイアログから具体的な行へのナビゲーションをさらに精密化
  • ダイアログのコード補完と検証機能を強化
コードフォーマット

コードフォーマット

コードフォーマットに末尾のコンマも対象に含めた C# Code Styles の設定が新たに追加されました。 これらの設定は ReSharper | Options | Code Editing | C# | Code Style | Trailing comma からアクセスできます。非常にまれなコーナーケースを除き、StyleCop SA1413 インスペクションとの互換性もあります。

C++20のサポート

さらに改善された C++20 サポート

C++20 の標準はほぼサインオフされており、ReSharper C++ では、最新の標準に対応できるようにサポートを拡張しました。 制約される型のプレースホルダー、短縮化された関数テンプレート、using enum 宣言など、新しい言語機能がいくつかサポートされています。 さらに、ReSharper C++ は C++20 のテンプレート構文でラムダ宣言を更新するクイックフィックスや using enum 宣言を簡単に導入するためのリファクタリングも追加されています。

ゲーム開発

ゲーム開発向けの機能をさらに追加

ReSharper C++ 2020.1 では、Unreal Engine サポートの更新とともに、Rename リファクタリングが改善され、SpatialOS GDK と仮想ファイルパスを使用した USF ファイルのサポートが導入されました。 ReSharper C++ は、Use auto インスペクションの 非表示やコンソール変数とログカテゴリの命名規則への順守により、 Unreal Engine のガイドラインを厳密に順守しています。

ReSharper C++ 2020.1 は、HLSL の初期サポートを提供しています。 現在の早期の段階においても、基本的なコードのハイライトからスマートコード補完やクイックナビゲーションまで、さまざまな機能をサポートしています。

ReSharper C++の新機能

Next Important Call

dotTrace で Next Important Call(次の重要な呼び出し) dotUltimate

Next Important Call アクションを使って、呼び出しツリーをナビゲートできるようになりました。 Ctrl+Shift+右矢印を押すと、dotTraceはさらに解析を進める上で最も関連性のあるノード(自己実行時間の高いノードなど)に移動します。

この機能は dotTrace Standalone(Performance Viewer と Timeline Viewer)、Visual Studio、および JetBrains Rider で使用できます。

dotTrace 2020.1の新機能

null 許容参照型のサポート

dotPeek における null 許容参照型のサポート

このリリースでは、以下の C# 言語機能のサポートが改善されています。

  • デコンパイラに null 許容参照型(NRT)のサポートが追加されました。 これは宣言でのみ機能するもので、メソッド本文では利用できません。
  • インターフェースデフォルトメンバー自動実装プロパティの Field-Targeted 属性のデコンパイルがサポートされました。 
  • タプルコンポーネント名のデコンパイルのサポートが改善されました。

dotPeek 2020.1の新機能

ダウンロード

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