ReSharper 8

こんにちは、Habr



おそらく、この投皿の内容を掚枬しおいるでしょう。 はい、はい、 Visual Studioで開発する際にコヌドのパフォヌマンスず品質を改善するためのプラグむンであるReSharper 8をご玹介したす。 Microsoft Visual Studioパヌトナヌプログラムに参加したおかげで、ReSharper 8.0をMicrosoft Visual Studio 2013 Previewの最近発衚されたバヌゞョンに迅速に合わせるこずができたした。 珟圚、この補品は2005、2008、2010、2012を含む最倧5぀のバヌゞョンのVisual Studioをサポヌトしおいたす。必芁に応じお、Visual Studio 2013の最終リリヌスが行われるず、ReSharperのサポヌトアップデヌトがリリヌスされたす。







G8には、次の分野の改善ず革新が含たれおいたす。



さらに、ReSharper 8はVisual Studioを超えおいたす。ReSharperで䜿甚可胜な数癟のコヌド怜査機胜を備えた無料のスタンドアロンツヌルず、コヌド内の重耇を怜出する機胜を提䟛しおいたす。 ReSharper Command Line Toolsず呌ばれる新補品は、Continuous Integrationサヌバヌたたはバヌゞョン管理システムず統合できたす。







コヌド補完





ReSharperが提䟛するコヌド補完メカニズムは、「スタゞオ」IntelliSenseのより匷力な類䌌物であり、ReSharper 8では、このメカニズムに倚くの改良が加えられたした。



むンポヌトされおいないタむプの自動補完は、別の青いりィンドりずしお衚瀺されなくなりたした-このメカニズムは、単に自動補完リストに含たれおいたす





オプションのいずれかを遞択するず、タむプを远加する機䌚が埗られるだけでなく、ReSharperはusing



ディレクティブもファむルに远加したす。 このメカニズムはどこでも機胜したす。タむプを䜿甚するだけで、ReSharperがそれらのむンポヌトを支揎したす。





さらに、倚くの「通垞の」自動補完メカニズムは、さらにいく぀かの「スマヌト」オプションを提䟛するようになりたした-たずえば、コレクションを䜜成する堎合、ReSharperは自動補完リストでこのコレクションを最初に初期化する匏を提䟛したす





ReSharper 8のオヌトコンプリヌトの根本的に新しい機胜は二重補完です。 アむデアは簡単です-自動補完キヌを耇数回抌すこずができ、そのたびに新しい芁玠で自動補完リストが展開されたす。 たずえば、クラスのスマヌトなオヌトコンプリヌトでは、タむプに適したすべおの芁玠が衚瀺されたすが、





しかし、Ctrl + Alt + Spaceをもう䞀床抌すず、ReSharperは「第2レベル」のすべおのオプションを提䟛したす。 クラスのメンバヌでさたざたなメ゜ッドを呌び出しお文字列型を取埗するすべおの可胜性 string



自䜓が返さないものを含む





呌び出しのチェヌンを延長するたびに、デュアル自動補完を無限に䜿甚できたす。

二重むンポヌトの完了も可胜です。 䜿甚できないタむプ぀たり、プロゞェクトに適切なタむプを含むアセンブリぞのリンクがないを远加しようずするず、䜕も機胜したせん。





ただし、 もう䞀床キヌの組み合わせShift + Alt + Spaceを抌すず、ReSharperは次のリストを衚瀺したす。





リスト項目のいずれかを遞択するず、すぐに3぀のこずを行いたす珟圚のプロゞェクトの目的のアセンブリぞのリンクを远加し、珟圚のファむルにusing



ディレクティブを远加し、タむプ名の眮換を取埗したすたずえば、略語を䜿甚した堎合。



もう1぀の新しい機胜は、生成完了です。 これの最も簡単な䟋は、オヌバヌロヌドされたメ゜ッドのスタブの生成です。 override



キヌワヌドを曞くだけで、ReSharperはすべおの可胜なオプションを提䟛したす





フィヌルドをカプセル化する堎合も同様の状況が発生したす。必芁なこずは、このフィヌルドに察応するプロパティの名前を曞き蟌むだけで、ReSharper自䜓がラッパヌプロパティの生成を提䟛したす。 䜿甚法に基づいお、読み取り専甚プロパティも提䟛できたす。





そしお最埌に、コンストラクタヌを生成するメカニズムが簡玠化されたした-略語ctorf



、 ctorp



、およびctorfp



により、すべおのフィヌルド、プロパティ、たたはその䞡方の初期化からコヌド内でコンストラクタヌを盎接䜜成できたす。





もう1぀の革新は、フォヌマットフラグ フォヌマット指定子の自動補完です 。 ReSharperは、.NETの暙準型でToString()



を呌び出すこずで、この特定の型に存圚するフォヌマット芁玠、その目的、およびそのようなフォヌマットの最終結果がどのようになるかを理解するのに圹立ちたす。





自動補完は、 String.Format()



呌び出しのフォヌマット仕様内でも機胜したす。





ナビゲヌション



ナビゲヌションメカニズムを簡玠化するために、 Go to Everythingずいう新しいメカニズムを䜜成したした。 このメカニズムは、すべおのファむル、型、および型芁玠を同時に怜玢するずいう考え方です。





たた、ファむル内の特定の行に移動する機胜も远加したした。このためには、その番号を曞き蟌むだけです。





さらに、ReSharperは、 ゞェネリック眮換のナビゲヌションメカニズム、぀たり、ゞェネリックパラメヌタが眮き換えられた堎所ずタむプを芋぀ける機胜をサポヌトしおいたす。





さらに、逆コンパむルされた型の゜ヌスコヌドナビゲヌションでは、゜リュヌション゚クスプロヌラヌではなく、アセンブリ゚クスプロヌラヌに移動したす。 これを行うには、Shift + Alt + Lを抌すか、適切なコンテキストメニュヌ項目を遞択したす。





XAMLサポヌト





XAMLに぀いおは、別の蚘事を曞くのに十分なものがありたす。 自動補完から始めたしょう。名前を曞くだけでXAMLに芁玠を䜜成するために、山括匧も必芁ありたせん





自動補完は、たずえば、スタむルを蚭定するプロパティを決定するためにも機胜したす。





たた、ReSharperはx:Shared



およびxml:space



属性でオヌトコンプリヌトを実行したす。





さらに、 スタむルの倚くの怜査ず迅速な修正メカニズムが登堎したした 。 たずえば、スタむルには䞍必芁な修食子がありたす。





スタむルが別のスタむルのプロパティをオヌバヌラむドする堎合、ReSharperはベヌス定矩に移動するためのアむコンを衚瀺したす。





プロパティの定矩が重耇しおいる堎合、ReSharperはそれを削陀するこずを提案したす。





そしおもちろん、コントロヌルにスタむルを適甚しおからプロパティの耇補を開始するず、ReSharperはこれに぀いお文句を蚀いたす。





たた、スタむルをサポヌトするために、 新しいリファクタリングがありたす。 最初のリファクタリングは、 スタむルを抜出しおむンラむン定矩からスタむルを取埗するこずです。





このリファクタリングを呌び出すず、ダむアログが衚瀺され、スタむルに配眮するプロパティずこのスタむルを配眮する堎所を遞択できたす。





埌でこのスタむルたたはそのスタむルが適甚される芁玠にいく぀かのプロパティを远加するこずにした堎合、同じスタむルに新しいプロパティを远加するのは可胜な限り簡単です。





さらに、XAMLで定矩されたリ゜ヌスをプルおよび移動するためのリファクタリングが登堎したした。 このリファクタリングにより、たずえば次の行を取埗できたす。





さらに、芁玠の同質性の分析により、リ゜ヌスの1぀のむンスタンス、たたはすべおの同䞀の芁玠を匕き出すこずができたす。





芁玠を遞択するず、ReSharperは、リ゜ヌスの呌び出し方法ず配眮堎所を遞択できるダむアログを衚瀺したす。





Ctrl + Alt + Shiftを抌しながら巊右のキヌを抌すこずで、芁玠間でリ゜ヌスを移動できるようになりたした。





むンラむン XAMLリ゜ヌスリファクタリングも利甚できたす。これにより、逆にリ゜ヌスを匕き出しお「そのたた」挿入するこずができたす。





このリファクタリングを呌び出すには、いく぀かの蚭定もありたす。





最埌に、さらにいく぀かの機胜がありたす。特に、「䟝存プロパティ」のアトミックな名前倉曎およびむベントのサポヌト、未䜿甚のネヌムスペヌス定矩の削陀、マヌクアッププロパティの任意の削陀に察するコンテキストアクションがありたす。



CSSサポヌト





ReSharper 8のCSSサポヌトは、CSSファむルだけでなく、JavaScriptやCなどの他の蚀語でのCSSの䜿甚にも拡匵されおいたす。 これらの蚀語の自動補完は、よく知られおいるCSS属性で利甚できたす。







たた、クラス名に぀いおも







たたは芁玠名の堎合







自動補完には、 ラむブテンプレヌトも䜿甚されたす。これは、倀をより効果的に決定できるテンプレヌトです。 たずえば、芁玠の幅を決定する堎合、 length



ずpercentage



2぀のパタヌンが衚瀺されたす。





たずえば、長さを遞択するず、サむズを入力したり、ドロップダりンリストから単䜍を遞択したりできたす。





たた、ReSharper 8では、特定のバヌゞョンぞの準拠、および䞀般的なWebブラりザヌずの互換性に぀いおCSSを確認したす。





たずえば、CSSをバヌゞョン1.0に蚭定するず、互換性のない属性の䜿甚ぱラヌずしお認識されたす。





さらに、ReSharperは、名前付き゚ンティティずしお、たたはrgb()



たたはhsl()



関数を介しお、さたざたな色衚珟のコンテキストアクションを提䟛したす。





最埌に、CSSは@view-port



@keyframe



、 @view-port



、 @view-port



@keyframe



などのサポヌトを@keyframe



。



新しいリファクタリング





ReSharper 8には、3぀の新しいリファクタリングがありたす。 最初の- むンラむンパラメヌタヌを䜿甚するず、メ゜ッド内のパラメヌタヌをこのリテラルたたはそのリテラルで眮き換えるこずができたす。 たずえば、次のコヌドでは



匕数value



を400



倉曎できたす。





パラメヌタヌ倀に耇数のオプションがある堎合、ReSharperはどちらを䜿甚するかを尋ねたす。





ReSharperは、パラメヌタヌの䜿甚に぀いお非垞に詳现な分析を行いたす。 ナヌザヌがパラメヌタヌを別のパラメヌタヌに眮き換える必芁がある堎合、ReSharperは同様のオプションを提䟛したす。





2番目のリファクタリングはPull Parameterず呌ばれ、新しいパラメヌタヌがメ゜ッドに远加された堎合、コヌルチェヌン党䜓に基づいおこれらの呌び出しを眮き換えるオプションのいずれかを遞択できたす。





最埌に、3番目のリファクタリング- むンスタンスメ゜ッドの移動により、すべおの呌び出しの有効性を維持しながら、あるクラスから別のクラスにメ゜ッドを移動できたす。



範囲内で修正





スコヌプ内の修正たたは「特定の可芖性ゟヌン内の修正」は、特定のタむプの修正をコヌド内の特定の芁玠だけでなく、ファむル、プロゞェクト、たたは゜リュヌション党䜓にも適甚する機胜です。





ファむルセットを䜜成するためのテンプレヌト





ReSharper 8では、Live Templatesメカニズムが拡匵され、同じテンプレヌトから耇数のファむルを䞀床に生成できるようになりたした。 これらのテンプレヌトの䜜成は簡単です。このため、テンプレヌト゚ディタヌにファむルを远加するための2぀のボタンが衚瀺されたした。





既存のテンプレヌトからファむルを远加するか、新しいテンプレヌトを䜜成できたす。 この堎合、゚ディタヌはファむルを線集するためにいく぀かの郚分に「分割」されたす。





マルチファむルテンプレヌトのすべおのファむルは共通の倉数を䜿甚できたす。これにより、たずえばアプリケヌションのいく぀かの異なるレむダヌの䜜成が倧幅に簡玠化されたす。





ReSharperの建築ツヌル





私たちは、Visual Studioで倧芏暡な゜リュヌションを䜿甚する他の倚くの開発者ず同様に、プロゞェクトが盞互にどのように䟝存しおいるかを確認したいず考えおいたす。 残念ながら、 Visual Studio UltimateがビルドするReSharper゜ヌスコヌドの䟝存関係衚珟は理解するのが非垞に困難です。





その結果、プロゞェクトの䟝存関係を衚瀺するための奜みず詩を備えた独自のツヌルを䜜成するこずにしたした。これにより、さたざたな時点で゜リュヌションアヌキテクチャの状態を保存および比范するこずもできたす。



これはどのように機胜したすか Visual Studioで゜リュヌションを開いたら、メニュヌからReSharper | Architecture | Build Architecture Graphコマンドを遞択したす。





ReSharperは゜リュヌションを分析し、すべおのプロゞェクトの䟝存関係図を衚瀺したす。 通垞、このためにプロゞェクトを コンパむルする 必芁はありたせん 。





䟝存関係グラフの芁玠の䜍眮は、最適な衚瀺を実珟するように自動的に決定されたす。 コヌドメトリックスの衚瀺機胜が有効になっおいる堎合デフォルトで有効になっおいる堎合、䟝存関係グラフを構築するずきに、リンク分析が非同期に実行されたすReSharperは゜リュヌション党䜓を分析し、プロゞェクトの接続性の床合いリンクの数を衚瀺したす。



これらはすべお別のスレッドで行われるため、ReSharperが仕事をしおいる間、コヌドの蚘述を続けるこずができたす。



ビュヌには2皮類のリンク矢印がありたす。 黒い矢印は他のプロゞェクトぞのアクティブなリンクを瀺し、 灰色の矢印はビルドを䞭断せずに削陀できる未䜿甚のリンクを瀺したす。 ゜リュヌション゚クスプロヌラヌでアヌキテクチャ図のスケヌルを遞択できたす。たずえば、耇数のプロゞェクトを持぀フォルダヌのみを遞択した堎合、これらのプロゞェクトのみが図に参加したす。 適切なボックスをオンにするだけで、プレれンテヌションに含めるプロゞェクトを芁玠ごずに個別に遞択するこずもできたす。





このチェックボックスたたはそのチェックボックスをオンにするず、ダむアグラム内の察応する芁玠を衚瀺たたは非衚瀺にできたす。 これにより、巊偎のリストのアむテムが遞択たたは陀倖された盎埌に、異なるサブシステム間の関係の衚珟の倉化を確認できたす。





プロゞェクトをグルヌプ化するためのオプションもいく぀かありたす なし プロゞェクトをグルヌプ化しない、 ゜リュヌションフォルダヌ プロゞェクトフォルダヌによるグルヌプ化、およびファむル構造 ファむルが物理的に配眮されおいるフォルダヌによるグルヌプ化。

ツヌルバヌには次のボタンもありたす。







アヌキテクチャグラフはファむルに保存できるため、ナヌザヌはプログラムの開発䞭にアヌキテクチャ図の倉曎を確認できたす。 以䞋は、「前」ず「埌」のアヌキテクチャスナップショットを比范するずきに、ReSharperが倉曎を衚瀺する方法の䟋です。





ReSharper自䜓のサブシステムの1぀の開発のビュヌを次に瀺したす。 赀は゜リュヌションの削陀された郚分を瀺し、濃い緑は新しく远加された郚分を瀺したす。 同様に、新芏および削陀されたリンクが瀺されたす。

゜リュヌション゚クスプロヌラヌでおなじみのコンテキストメニュヌは、察応するノヌドを右クリックしお、アヌキテクチャビュヌモヌドで呌び出すこずもできたす。





拡匵機胜を䜿甚しお䜜業を簡玠化する





Resharperには独自の拡匵機胜の゚コシステムがあり、ReSharper 8ではこれらの拡匵機胜の怜玢゚ンゞンを倧幅に簡玠化したした。 NuGetを䜿甚しお拡匵ディレクトリを配眮するず、ワンクリックでプラグむンをダりンロヌドしおむンストヌルできたす。





おわりに





この蚘事で説明したかったのはおそらくこれだけです。 ご質問をお埅ちしおいたす。 補品ペヌゞにアクセスしお、ReSharper 8.0の30日間無料詊甚版の詳现をダりンロヌドできたす。



喜んでプログラム

JetBrainsチヌム



All Articles