ReSharper 7:詳細リリース

ReSharper7 2週間前、 ReSharper 7.0のリリース発表しましたが、このメジャーリリースで実装された新製品を簡単にリストしています。

今日、MSDNおよびTechNetサブスクライバーはVisual Studio 2012をダウンロードする機会があります。これは、 ReSharper 7.0の新機能について最も詳細かつ詳細な方法で話す絶好の機会です。



記事の要約 (同時に、この膨大な資料をナビゲートするのに役立ちます):



Visual Studio 2012





Windowsランタイム





コード生成





INotifyPropertyChanged





新しいリファクタリング





単体テスト





ReSharper SDKの新しい言語サポート







Visual Studio 2012



新しいResharperの主なタスクの1つは、VISual Studio 2012の完全かつ透過的なサポートを提供することです。このサポートは、インターフェイスの新しい側面と新しいテクノロジーの両方に関するものです。 非常に大きな変更が加えられたインターフェースから始めましょう。



テーマのサポート



Visual Studio 2012は、「テーマ」パラダイムをサポートし、LightとDarkの2つのテーマが付属しています。 Studioと完全に調和するために、すべてのメニュー、アイコンなどのResharperで両方のテーマのサポートを追加しました。







モノクロアイコンも新しいStudioに登場しましたが、アイコンをこのスタイル変換しないようにとユーザーから多くのフィードバックを受け取りました。 視覚的な好みは主観的なものであるため、ユーザーに選択の権利を与えることにしました:







したがって、さまざまなメニュー、ウィンドウなどに反映されるアイコン、およびプロジェクトのさまざまな要素(タイプ、プロパティなど)のアイコンを選択できます。 アイコンはReSharperで設定できます| オプション| 全般 はい、元のアイコンも少し改善しました。



プロジェクトの非同期読み込み



VS2012では、Microsoftは非同期プロジェクトの読み込み(ASL)のサポートを追加しました。これにより、ソリューション内のプロジェクトを開いたときに独立して読み込むことができます。 これにより、ソリューション全体がロードされる前にユーザーが実際に開始できます。



7番目のResharperでは、ASLと対応するAPIを使用する際に多くの困難に遭遇しましたが、この機能の完全なサポートを実装することができました。



生産性の向上の例として、Visual Studio 2010およびReSharper 6で開くときに300を超えるプロジェクトを含むソリューションは5分かかります。 12秒、およびVisual StudioとReSharper 7を使用-わずか1分 17秒



クイック起動



VS2012では、要素またはコマンドの場所が正確にわからない場合は、クイック検索パネルを使用してインスタント検索を実行できます。 Studioプラグインとして、このメニューに独自のチームを追加することができました。 ここで、パネルに「移動」と入力すると、QuickLaunchは関連するすべてのResharperコマンドを提供します。







プレビュータブ



VS2012のもう1つの新機能は、「プレビュータブ」です。 その本質は、ドキュメントの通常のタブとは異なり、このタブはウィンドウの右側に開きますが、編集を開始するとすぐに左側に移動することです。 このタブの意味は、新しい開始タグを生成せずにナビゲートできる固定ブラウザを表示することです。







Resharperは、[ タイプへの移動 ]、[ メンバー ]、 [ファイル ]、 [宣言 ]、[使用状況の検索]および関連するウィンドウなどの機能で、この特別なタブの使用をサポートしています。



ソリューションエクスプローラー



新しいソリューションエクスプローラーでは、特定のファイルを開き、その構造(クラス、メソッドなど)を確認できます。 次に、リシャーパーはこれらの要素のコンテキストメニューを提供します。これにより、ポップアップメニューとキーボードショートカットの両方を使用して、リファクタリング、使用法、その他の使い慣れたコマンドを見つけることができます。







アーキテクチャエクスプローラー



Ultimateエディションでは、VS2012にArchitecture Explorerが付属しており、ネームスペースから特定のフィールドまたはメソッドに至るまで、ソリューションを徐々に掘り下げることができます。 また、Resharperは、 このポップアップメニューの[ ナビゲート先]または[ リファクタリング] 使用して、コード要素のコンテキストアクションに対して同じサポートを提供します。







依存グラフ



ResharperはArchitecture Explorerのサポートに加えて、Studioが生成できる依存関係グラフにも同じ機能を提供します。







Windowsランタイム



Windows 8およびVisual Studio 2012の今後のリリースは、Windowsランタイム(または略してWinRT)と呼ばれるアプリケーションを作成するための新しいプログラミングモデルを提供します。 WinRTでの開発は、Resharperが既にサポートしている言語(C#、VB.NET、JavaScript)を使用して実行できるため、ResharperにWinRTサポートを追加しました。



C#、VB.NET、およびXAML



Resharperは、C#/ VB.NETおよびXAMLのサポートを引き続き開発しています。 WinRT専用に次の機能が作成されました。





Javascript



WPFおよびSilverlightから開発モデルを継承したC#/ VB.NET WinRTプロジェクトとは異なり、JavaScript(WinJSとも呼ばれる)を使用したWinRTの開発モデルは根本的に異なります。 ただし、Resharperはそれをサポートするために多くの異なる機能を提供します。





ご想像のとおり、C#、VB.NET、XAML、HTML、CSS、およびJavaScriptをサポートするための既存の機能のほとんどは、WinRTに基づくプロジェクトで作業する予定の人なら誰でも利用できます。



コード生成



Resharperのさまざまなサブシステム間で、誰がより多くの変更と最小限の労力をもたらすかについて競合があった場合、Generateメカニズムが議論の余地のない勝者となります。 そして、もちろん、新しいResharperでは、このメカニズムにいくつかの新しい機能と改善を追加しました。



部分メソッド生成



多くのコード生成フレームワークは、ユーザーが生成されたコンポーネントの動作を後で変更または補足できるように、 partial



クラスで構成されるコードを生成します。 たとえば、Entity Frameworkは、エンティティクラスをpartial



として定義することでこれを行います。



Resharperはこのユースケースをサポートするようになり、部分メソッドの署名を生成できるようになりました。 これを行うには、 partial



型を作成し、 Generate | Call 呼び出します 部分的な方法







ここで、実装するメソッドを選択するだけです。







...そして、選択したすべてのメソッドが選択したクラスに追加されます。







平等メンバーの生成の改善



型を比較す​​るとき、ユーザーの多くは、型の比較を行うメカニズムを規制したいと考えていました。 したがって、3つの異なるタイプ比較オプションをGenerate Equality Membersに追加しました。







選択したオプションに応じて、 Equals()



メソッドで型の一致をチェックする条件は、次のいずれかの方法で実装できます。





等値比較子の生成



特定のクラスのインライン比較実装に加えて、新しいResharperにはGenerate Equality Comparerという新しいジェネレーターが付属しています。 このジェネレーターの目的は、 IEqualityComparer<T>



インターフェイスを実装する別のクラスを作成することです。 これは、特定の比較条件を実装するために必要な場合があります。また、このインターフェイスで作業している特定のAPIが必要な場合も同様です。



以下に小さな例を示します。 2つのプロパティがあるPerson



クラスがあるとします。 アクションを呼び出します:







...そして、比較を実行する要素を選択すると、 Person



は次の生成されたプライベートネストクラスを受け取ります。







これに加えて、このクラスのネストされた静的インスタンスをフィールドとして生成するオプションがあります。







INotifyPropertyChangedをサポート



クラスがINotifyPropertyChanged



実装するか、このメカニズムを使用するクラス(PrismフレームワークからのNotificationObject



など)を継承する場合、 Generate Propertiesアクションは、このインターフェイスに基づいてプロパティを実装するためのさまざまなオプションを提供します。







INotifyPropertyChanged



Windowsフォームの時代以来、プロパティを必要とするすべての人に変更を報告するためにINotifyPropertyChanged



インターフェイスが使用されてINotifyPropertyChanged



た(通常、これはUIです)。 現在、多くのプラットフォーム(WPF、Silverlight)およびフレームワークで使用されている変更通知のサポートが頻繁に行われ、新しいリリースではそれが行われました。



自動実装



INotifyPropertyChanged



宣言をクラスに追加すると、Resharperはこのインターフェイスを実装するための簡単な修正を提供します。







この修正を適用すると、イベントの宣言だけでなく、このイベントの呼び出しを容易にするメソッドも自動的に受け取ります。 これで、任意のプロパティ(自動プロパティまたはフィールドを持つプロパティ)を取得し、通知メソッドへの呼び出しを追加するコンテキストアクションを適用できます。







プロパティの代わりにフィールドを使用する場合は、 Generate Propertiesコマンドを使用することもできます 。Resharperは、生成されたプロパティに通知を実装することを提供します。







ID追跡



文字列を介してプロパティをリンクすることは、最も安全な解決策ではありません。 ただし、これを行う必要がある場合は、Resharperが役立ちます。 まず、プロパティの名前を追跡するため、間違えたり、たとえばプライベートプロパティを参照したりすると、Resharperはすぐにエラーを表示します。







第二に、通知メソッドをどこかで手動で呼び出すことにした場合、可能なプロパティの名前の行に自動補完が表示されます。







さまざまなフレームワークのサポート



INotifyPropertyChanged



はさまざまな実装がINotifyPropertyChanged



ます。 サードパーティのライブラリは、通知に独自のメソッドを使用することが多く、継承元の基本クラスが付属しています。 主な違いの1つは、多くのフレームワークが文字列リテラルの代わりにラムダ式を使用してメソッド名を渡すことです。



Resharperは、次のフレームワークをサポートしています。





実際には、これは、たとえば、PrismフレームワークからNotificationObject



型を継承する場合、プロパティを作成するときに、呼び出すRaisePropertyChanged



メソッドを選択できることを意味します。







ラムダ指向オプションを選択すると、プロパティは次のようになります。







そして、もちろん、これらの同じ実装オプションがコンテキストメニューに表示されます。









新しいリファクタリング



Resharperは、複雑さをうまく管理するツールとしてすでに評判が高く、7回目のリリースでは、大量のコードを管理するタスクを簡素化するために設計された2つの新しいリファクタリングを導入しました。





抽出クラス



コード内でクラスが管理不能なサイズに成長した場合はどうしますか? おそらく、あなたはいくつかの小さなクラスのクラスを分割しようとしています。 この操作を簡素化するために、 Extract Classと呼ばれるリファクタリングを追加しました。 このリファクタリングの本質は簡単です。クラスのどのメンバーを「プル」するかを選択し、さまざまなアクセス問題(もしあれば)をどうするかを決定し、ReSharperが新しいクラスを作成します。



別のクラスに入れるのに便利なアドレスフィールドが多すぎるPerson



クラスがあると想像してみましょう。







さまざまなアドレスプロパティに個別のクラスを提供するために、コンテキストメニューと、たとえば新しいソリューションエクスプローラーの両方からリファクタリングを呼び出すことができます。 必要なことは、必要なプロパティを選択し、[ リファクタリング ]メニューを使用することだけです。







抽出する要素を選択するダイアログボックスが表示されます(新語?)。また、新しいクラスと「親」にこのクラスのインスタンスを含む変数に名前を付けます。







リファクタリングは、プルされたプロパティにアクセスする方法に関するいくつかのオプションも提供します。







オプションは次のとおりです。





さらに、[クラスの抽出]ダイアログボックスは、新しいクラスを引き出すときに発生する要素のアクセシビリティに関して考えられるすべての問題を明確に示しています。 リストで選択された各要素について、Resharperはそれを使用する他のすべての要素を表示します。







同様に、別のクラスに移動する要素のチェックボックスをオンにすると、Resharperは、正しい実行を維持するためにレンダリングされる他のすべての要素を表示します。 たとえば、 PrintCity()



メソッドをレンダリングしようとすると、次のように表示されます。







...そして次のコードを取得します:







そして最後に、本格的な使用の競合が発生する場合があります。たとえば、元のクラスでまだ使用されているprivate



プロパティを引き出しようとする場合です。 この場合、Resharperは停止アイコンを表示し、この問題に対するいくつかの解決策を提供します。







可能な修正のオプションは次のとおりです。





現時点では、リファクタリングはC#言語のみをサポートしていることに注意しください 。 VB.NETのサポートは、Resharperの将来のバージョンのいずれかに表示される可能性があります。





変換パラメータ



1つの戻り値を持つメソッドで作業を開始し、別の戻り値を追加したいという状況がありました。 この問題の典型的な解決策は、次のout



パラメーターを追加するout



です。







上記のアプローチの代替として、戻りTuple<Person,bool



>およびTransform Out Parametersを使用して、このアプローチで実装できます。 out



パラメーターでこのリファクタリングを呼び出すだけで......







...そして、既存のすべてのパラメータを表示するダイアログボックスが表示され、タプルに変換するパラメータを選択できます。







リファクタリングを適用すると、 out



パラメーターがなくなり、タプルを返すメソッドが作成さout



ます。 パラメータの内部使用はそれに応じて書き直されます:







このリファクタリングは、C#およびVB.NETで利用可能です。 ここではTuple



クラスが使用されているため、リファクタリングは主に.NET Framework 4以降のプロジェクトに適用さout



ますが、 void



メソッドの単一のout



パラメーターの場合、リファクタリングによりこのパラメーターを戻り値に変換できます。



最後に、戻り値としてタプルを既に返している場合、このリファクタリングにより、 out



パラメータに基づいてこのタプルを展開できることに注意しout



ください。



単体テスト



Resarperの単体テスト起動メカニズムは、多くの開発者にとって既にツールキットの馴染みのある部分になっています。 コードのどこからでも、統合されたテスト起動メカニズムを備えたコンパートメントでテストを実行およびデバッグできるため、テスト起動プロセスが便利で直感的になり、多数のサードパーティプラグインの存在により、多くの一般的なテストフレームワークを使用できるようになります。



7th Resharperの新しいテスト機能の概要を以下に示します。



ジャスミン



Resharperの以前のバージョンでは、QUnitテストフレームワークをサポートしていました。 同じリリースで、JavaScriptをテストするためのBDDフレームワークであるJasmineのサポートを追加しました。







他の場所と同様に、Jasmineのテスト結果はテスト実行ウィンドウに分類されます。







ファントム



ブラウザでテストを実行する機能に加えて、ReSharper 7はユーザーに代替メカニズムを提供します。PhantomJS( WebKitエンジンへのコンソールインターフェイス)を使用してテストを実行する機能です。 使用を開始するには、設定を開いて([ 単体テスト ] | [ JavaScriptテスト ]タブ)、PhantomJSがインストールされているパスを指定するだけです。







これで、完了したすべてのJavaScriptテストがPhantomJSを介して実行され、ブラウザーウィンドウが表示されなくなります。



NUnitの改善



NUnitのTestCaseSource



属性のサポートがテスト機能に追加されました。 この属性を使用すると、パラメーター化されたテストのテストケースの場所を指定できます。







この属性は変数を名前で参照するため、Resharperはこの名前の有効性もチェックします。







...また、自動補完オプションも提供します。







他のフレームワークのサポート



Resharperが「ネイティブに」サポートしていないテストフレームワークを使用する場合、これは問題ではありません。 多くのプラグイン作成者は、さまざまなテストフレームワークのサポートを提供します。 現在まで、ResharperをサポートするフレームワークにはAgUnitGallio / MbUnitxUnit、およびMSpecが含まれます。



ReSharper SDKの新しい言語サポート



ReSharper SDKの最初のリリースから、Resharperに新しい言語のサポートを追加する方法について尋ねられました。 そのようなサポートを追加する可能性は常にありましたが、それほど簡単ではなかったため、このバージョンでは、新しい言語のレクサーとパーサーを作成するための完全なツールセットをユーザーに提供することにしました。



ツール



Resharperでの新しい言語のサポートには、これらの言語のレクサーとパーサーの作成、およびこれらの生成された構造のResharper APIへのその後の適応が必要です。 このプロセスを簡素化するために、SDKにTools



というフォルダーを追加しました。このフォルダーには、次の便利なツールがあります。







提供されているツールの1つであるparserGenは、特別な言語を使用するパーサー(PSIファイル)を定義するために特別な形式を使用します。 そのため、PSIファイルの言語をサポートするプラグインをSDKと組み合わせて、1石で2羽の鳥を殺すことにしました。 これにより、次のことが可能になります。







おわりに



上記の機能に加えて、Resharper 7は以下もサポートします。










ReSharper 7を試用するには、30日間の無料期間で配布キットをダウンロードしてください。



オープンソースプロジェクトの開発者は、無料ライセンスを申請できます。



教育機関も無料の教室ライセンスを受け取ることができます。



All Articles