ReSharper Ultimate 2016.3の12月リリース

こんにちは、Habr!



ここ1年以上、ReSharper Ultimateファミリのツールのリリースに関するニュースをここで共有していません。 これは、逆に作業が増えたことを意味するものではありません。それはたくさんのことでした。



英語のブログの読者は、ReSharper 2016.3がVisual Studio 2017、C#7、VB.NET 15の初期サポート、および.NET Coreユニットテストの実行とデバッグ機能を導入したこと既に認識しています。 猫の下には、.NET製品およびReSharper C ++のこれらおよびその他の更新の概要があります。







Visual Studio 2017 RCとの互換性



ReSharper Ultimateに含まれるすべてのツールは、Visual Studio 2017 RCにインストールできます。 サポートに取り組んでいるVisual Studioの新しい機能がいくつかあり、今後の更新で修正が導入される予定です。 ReSharperは現在、 Lightweight Solution Loadモードまたは.NET Coreユニットテストをサポートしていません。 ReSharper C ++を使用するには、Visual Studioテキストエディターの設定で[ プロジェクトの読み込みを高速化する]オプションを無効にします。



C#7およびVB.NET 15の初期サポート



ReSharperはローカルC#7関数を認識し、 可能性のあるSystem.NullReferenceException破棄 されたクロージャーへのアクセス、変更 されたクロージャーへのアクセスなど、そのコンテキストで多くのコード検査を提供します。



C#7は、 switch



is



およびcase



コンストラクトのout変数とパターンマッチングをサポートします。



C#7およびVB.NET 15のバイナリリテラルが認識され、16進システムに変換できます。ビット区切り文字を追加できます。



画像



より多くのコードジェネレーター



C#およびVB.NETのGenerate(Alt + Ins)エンジンを改善し、Relationalメンバー、Relational comparer、およびDisposeテンプレートを生成する3つの新しい手順を追加しました。



リレーショナルメンバーの生成は 、比較演算子(>、<、≥、≤)をオーバーロードし、選択したフィールドとプロパティを使用してIComparable



およびIComparable<T>



インターフェイスを実装します。 リレーショナル比較の生成は、 Comparer<T>



から継承した選択オブジェクトを比較するクラスを作成します。 ReSharperはフィールドタイプも定義します。クラスに文字列フィールドが含まれている場合は、文字列を比較してnullチェックを有効にするオプションを選択できます。



パラメーターがnullかどうかを生成コンストラクターで確認できるようになりました。 [ ヌルのパラメーターをチェック ]オプションを選択すると、コンストラクターでArgumentNullException



をスローするセキュリティコードが作成されます



Generate Disposeパターンを使用して、追加のnullチェックとアンマネージリソースのデストラクタを備えたIDisposable



インターフェイスを実装します。



画像



[生成]メニューは、キーボードショートカットAlt + Insによって呼び出されることを思い出させてください。 IDisposable



IEquatable<T>



およびIComparable<T>



インターフェイスを実装するアクションは、選択したコードフラグメントでAlt + Enterを使用して使用できます。



新しいコンテキストアクション、迅速な修正、リファクタリング



ReSharper 2016.3では、未使用の引数のフィールドとプロパティを作成する簡単な修正が導入されました。 以前は、このアクションは1つの引数に対してのみ実行されていましたが、現在ではすべての引数に対してフィールドと自動プロパティがすぐに生成されます。 「 デフォルト構成」メニューで適切な値を選択することにより、生成されたプロパティーのタイプを設定できます。



画像



Lazy<T>



フィールドに新しいコンテキストアクションが登場しました。これにより、 fieldname.Value



をカプセル化するためのプロパティが作成されます。



画像



新しいTransform Parametersリファクタリングは、他の2つを置き換えました:Transform Out ParametersとExtract Class from Parameters。 メソッドのパラメーターを上書きし、入力パラメーターを新しいクラスまたはタプルに変更します。 戻り値または任意の出力パラメーターの新しいクラスを作成できます。 いつものように、Transform Parametersリファクタリングは、Refactor Thisメニュー(Ctrl + Shift + R)から呼び出されます。



画像



ナビゲーションと検索がより便利になりました



検索語の検索エンジンを更新し、一般的に使用される文字へのリンクを見つけやすくしました。 [ 検索結果に表示 ]ボタンが[使用状況の検索]ポップアップウィンドウに表示されました(Shift + Alt + F12)。 検索に時間がかかる場合は、このボタン(またはデジタルブロックで+)をクリックして、[ 検索結果]ウィンドウで検索を実行している間、プロジェクトでの作業を続けます また、このウィンドウは非同期に入力されるため、部分的な検索結果を操作できます。



画像



また、[ 最近使用したファイル] ウィンドウと[ 最近の編集]ウィンドウで情報を表示する作業も行いました。 同じ名前の場合の混乱を避けるために、ファイルへのパスが表示されるようになりました。 [ 最近使用したファイル]では 、Deleteキーを使用してエントリを削除できます。 最近の編集では、同じメソッドに対するいくつかの変更が1つのレコードにマージされます。



テキストに移動して 、新しいファイル形式のサポートを導入しました:.less、.hbs、.coffee、.scss、.dart、.as、.styl。



ReSharperの設定に新しいオプションRemember last searchが追加されました。 これを有効にして検索を実行すると、次回Go to EverythingGo to Textなどの検索コマンドを呼び出したときに、その結​​果がウィンドウに表示されます。 これは、クリックした最初の検索結果が適合せず、他の結果のようにしたい場合に便利です。



ReSharper Build



ReSharper Buildを使用すると、次のようにソリューションのビルドにかかる時間を短縮できます。 変更があったプロジェクトのみが再構築されます。 ビルド結果は、個別のビルド結果ウィンドウに表示されるようになりました。このウィンドウには、警告とエラーを簡単に表示するための多数のオプションがあります。 警告を表示または非表示にし、プレビューウィンドウにエラーコードを表示し、さまざまな基準に従って結果をグループ化できます。



画像



ReSharper Buildは、独自のNuGetパッケージリカバリメカニズム(NuGet Restore)を取得しています。 以前は、Visual StudioでNuGet統合を使用する必要がありましたが、これはバージョン2015でのみ機能しました。.NETFramework 4.5以降をインストールしている場合、回復メカニズムはVisual Studioのすべてのバージョンで機能します。



ReSharper Buildオプションにマイナーな変更が追加されました。 最も興味深いのは、 出力 Visual Studioウィンドウにエラーログを表示するか、ログをファイルに書き込むことです。



.NET Coreサポート



すべてのReSharper Ultimateツールでの.NET Coreのサポートが改善されました。 ReSharperでは、Visual Studio 2015で.NET CoreおよびASP.NET Core 1.0.xプロジェクトでxUnitとNUnitのユニットテストを実行できるようになりました。.NETFrameworkのテストで行うのは、セッションで実行、デバッグ、整理するだけです- .NET Coreプロジェクトで利用できるようになりました。



画像



dotCoverは、.NET Coreプロジェクトのユニットテストでコードカバレッジを測定できるようになりました。



dotTraceとdotMemoryでは、.NET Coreアプリケーションのパフォーマンスとメモリ消費をプロファイルできます。 これを行うには、プロファイリングタイプ.NET Core Applicationを選択し、アプリケーションへのパスを指定します。



画像



ReSharperでのTypeScript、JavaScript、およびJSONのサポートの改善



TypeScriptは、文字列リテラルのコード補完を導入します 。 特定のパラメーターセットを持つメソッドがある場合、コード補完はそれらを表示します。 これは数字でも機能します。



TypeScriptタイプでは、実装に移動 (Ctrl + F12)が機能します。 継承チェーンの中間ステップをスキップして、基本型からその実装のいずれかに移動します。 TabキーまたはShift + Tabキーを使用した構造ナビゲーションは、JavaScript、TypeScript、およびJSONで機能します。



新しいクイックフィックス、 タイプガード付きサラウンドは、変数の型チェックを生成します。 次の例では、変数に数値が含まれている場合にエラーを排除するために、パディングの型保護を追加しました。



画像



また、文字列リテラルにCSS、JSON、およびJavaScriptコードのサポートを追加しました。 C#、TypeScript、またはJavaScriptでは、文字列リテラルに特定の言語を割り当てて、コード分析と自動補完のためにReSharper関数にアクセスできます。 これを行うには2つの方法があります:Alt + Enterキーの組み合わせを使用して、コンテキストアクションとしてマークを呼び出すか、次の構文でコメントを追加します: //language=javascript|html|regexp|jsregexp|json|css







ReSharperは、JavaScriptコードをAngularJSテンプレートに挿入したり、CSSを$[]



jQueryインデクサーに挿入するなど、よく知られているスクリプトのリテラルのコードを自動的に認識します。 ReSharperオプションの文字列リテラルで自動コードサポートを有効または無効にできます。 コード編集| 言語インジェクション



最後に、ReSharperには、サードパーティのコードで作業をセットアップするための新しいオプションがあります。 サードパーティコードページで、JavaScript、TypeScript、またはJSONファイルを「スキップコード」または「ライブラリコード」としてマークし、ReSharperのインデックス作成と検査からサードパーティコードを除外できます。



画像



ReSharperおよびdotPeekの逆コンパイラー



ReSharper Assembly Explorerウィンドウで、nuget.orgまたは別のパッケージリポジトリから直接ダウンロードしてアセンブリを開くことができます。



画像



選択したパッケージをダウンロードした後、そのアセンブリ、名前空間、およびタイプを調べることができます。



スタンドアロンdotPeekは、テーブル、ブロブ、文字列などのアセンブリの.NETメタデータを表示するようになりました。 Assembly Explorerウィンドウでは、テーブルメタデータ要素の出現を自動的に検索して表示し、BLOB値をデコードして表示し、PEファイルヘッダーを調べることができます。 そして、もちろん、あらゆるメタデータ要素の逆コンパイルされたコードを見ることができます。



画像



dotCoverの新しいコードの強調表示



dotCoverでは、コードの強調表示メカニズムが変更されました。 以前は、テストで覆われたコード行は緑色で強調表示され、覆われていない行は赤色で強調表示されていました。 代わりに、テキストエディターにカラーマーカーが表示され、コードカバレッジのステータスとそれらをカバーする単体テストのステータスの両方が表示されます。 行の横にある緑色のマーカーは、この行のすべての指示がカバーされ、テストに合格したことを意味します。 赤-現在の命令に関連するテストは機能しません。 灰色のマーカーは、指示がテストでカバーされていないことを示します。







dotTrace:変更されたタイムラインビュー



タイムラインモードには、プロファイラを起動する前に選択できる新しいオプション[ ネイティブ割り当ての収集 ]があります。 次に、プロファイリングデータを分析するときに、ネイティブメモリにアクセスするイベント(ネイティブメモリ割り当て)を除外して、メモリリークの可能性があるコード内の場所、マネージコードでアンマネージコンポーネントを使用する際の問題などを特定できます。







タイムラインビューアには、パフォーマンスビューアの最高の機能の1つであるサブシステムが含まれるようになりました。 サブシステムの仕組みは単純です。ほとんどの場合、各サブシステムは特定の名前空間またはアセンブリで行われた呼び出しをグループ化します。 この情報は、ユーザーおよびシステムコード、WPF、LINQ、コレクション、文字列など、さまざまなコンポーネント間で特定の呼び出しサブツリーの時間の分布をすばやく評価するのに役立ちます。







ソリューションでサードパーティのフレームワークを使用する場合は、適切なサブシステムをdotTraceに追加します。 呼び出しツリーのサブシステムをざっと見ても、このフレームワークがこのツリーでどれくらいの時間を費やしているかを理解できます。



コールスタックウィンドウには、多くの改善が施されています。 メソッドの実行時間の分析に役立つ、 システム関数表示オプションを返しました。 各メソッドの時間に加えて、メソッドのリストには、呼び出しのサブツリーの合計時間が表示されます。 メソッド時間または合計時間をクリックして、対応するメソッドまたはメソッドとそのサブツリーに従ってフィルターを適用します。



dotTrace 2016.3では、イベント(イベント)の新しいウィンドウを追加しました。このウィンドウでは、プロファイリング中のすべてのイベントが表示されます:ファイル操作、JIT、SQLクエリなど。







dotMemoryでの新車検査



dotMemoryは、メモリリークを診断するための一連の自動検査を提供します。 重複文字列、スパース配列、およびその他の問題の検出に加えて、dotMemoryでは、完了したオブジェクトと完了キュー内のオブジェクトをアプリケーションで確認できるようになりました。 タイプ別にソートされたこれらのオブジェクトは、Finalizable objectsセクションに表示され、 iDisposable



インターフェイスiDisposable



での実装の候補です。







ReSharper C ++



Postfixのオートコンプリートとテンプレート -ReSharperから提供された最も興味深いアップデートの1つにより、構文ではなくデータに完全に集中できます。 式の後にドット(。)または矢印(->)を追加すると、ReSharper C ++は、この式を最初のパラメーターとして使用できる無料の関数を提供します。 式を変更する必要がある場合、後置パターンは時間の節約に役立ちます。 if、else、while、do、return、switch、foreachの各パターンを使用して式をラップし、適切な接尾辞を追加します。



画像



新しいtypedefリファクタリングを追加しました。 typedef導入すると、選択したデータ型の型がすばやく決定され、この型とそのすべての出現が新しいtypedefに置き換えられます。 インラインtypedefは反対のことを行います。既存のtypedefを実際のデータ型に置き換えます。



画像



ReSharper C ++でさえ、Catchテストフレームワークのサポート、コマンドラインからコードを分析する機能などが登場しました。 ビデオレビューで、技術エバンジェリストのPhil NashがReSharper C ++のすべての更新について詳しく説明しました。







職場でツールを試して、意見を共有してください



この記事では、最も注目すべきReSharper Ultimateアップデートについて説明します。 詳細については、「 新機能 」を参照してください。 そこで製品ダウンロードできます



いつものように、私たちはあなたのコメントを歓迎します。 ここまたはバグ追跡ツールで遭遇したツール、要望、問題を使用して、あなたの経験について書いてください。



ご清聴ありがとうございました



All Articles