ReSharper 2.0 (“ňú fíčures fokus”)

Po čase se opět na našem weblogu vracíme k nástroji, o kterém jsme již psali v tomto článku. V době publikování byla čerstvě k dispozici nová verze ReSharper 2.0, kterou jsme začali používat a nyní Vám můžeme přinést poznatky a novinky které jsme získali denním používáním tohoto nástroje. Přestože již existuje i novější verze 2.5, přinášíme zkušenosti zatím z verze 2.0, protože je dostupná pro VS 2003 i 2005 které obě používáme. ReSharperu 2.5 se možná budeme věnovat v některém z dalších článků.

Co je nového…

ReSharper z předchozí verze neztratil (skoro) nic, naopak přibylo několik dalších užitečných funkcí. Jednu věc k mé nepotěše ztratil, nezbavil se úplně ani několika málo neduhů, některé věci by stály za vylepšení (viz. níže) , určitě však neztratil nic ze svých předností a přibyla spousta zajímavých funkcí.

Funkce pro refaktoring

  • "Make Method Static", "Make Method Non-Static" – dvě inverzní funkce pro konverzi instančních metod na statické a naopak; nabídne výběr parametrů a automaticky opraví všechna volání a overridy
  • "Extract Class From Parameters" – rychlé vytvoření třídy z parametrů vybrané metody; pokud předáváte do nějaké metody sadu parametrů a chcete je předávat inteligentněji jako třídu, stačí použijte tuto funkci
  • "Pull Members Up", "Push Members Down" – snadná generalizace / specializace ve struktuře tříd; dialogové okno nabídne kandidáty na přesun mezi předkem/potomkem, lze nastavit zda mají být vybrané členské proměnné abstraktní, ReSharper zkontroluje možné konflikty apod. a provede akci
  • "Use Base Type Where Possible" – tato funkce nahradí všechna použití určitého typu použitím jeho bázového typu nebo interface; užitečné je to zejména v případě že jste předtím udělali "Pull Members Up"
  • "Safe Delete" – chcete-li čistit kód bez rizika že si smažete něco co jste neměli, s touto funkcí se vám to nestane; ReSharper zkontroluje všechny výskyty mazaného symbolu, pokud je možné ho smazat tak to provede, pokud ne tak zobrazí nalezené konflikty

Pomocné funkce

  • "File Structure View" – modifikovaná funkce "File Structure Popup"; na rozdíl od původní funkce (která zůstala zachována) lze zobrazit kompletní strukturu všech tříd v daném souboru naráz, kód automaticky generovaný designerem je odlišen
  • "Type Hierarchy View" – pokud si zapamatujete zkratku Ctrl+Alt+H, můžete si dědičnou hierarchii typu na jehož názvu se právě nacházíte

Okna zobrazující výše uvedené funkce jsou ze nepochopitelných důvodů (alespoň pro mně) zdrcnutá na minimální velikost, takže když se poprvé objeví tak je musíte roztáhnout, pak již si velikost pamatují (pokud nepřijdete o nastavení) .

  • "Find Usages" – toto není novinka, ale asi jediná věc která mě v nové verzi nepotěšila – vyhledávání funguje stejně, ale oproti minulé verzi se ztratila možnost v okně s vyhledanými výsledky kliknout pravým tlačítkem na signaturu vyhledaného členu a dát znovu "Fing Usages", takže když potřebujete vnořeně prohledávat použití členů nalezených prvním hledáním musí se to provést skokem do kódu a novým vyhledáním…je to o dost méně komfortní a praktické
  • "Context Actions" – ReSharper nabízí v některých situacích kontextové akce, např.jsem ocenil nabízení konverze sčítaných řetězců na string.Format()
    před: po:, kromě toho umí i různě konvertovat if, foreach a for, výrazy ? : , implementovat abstraktní metodu a další
  • "Quick documentation lookup" – zkratku Ctrl+Q si zapamatujte, zobrazí žluté okénko s dokumentací třídy, metody apod. na které právě stojíte

Unit testing

Za přidání této funkcionality píšeme jedničku, pokud máte v projektu unit testy v NUnit nebo csUnit, ReSharper je detekuje, a označí svými ikonami v levém okraji okna. Spustit test můžete pak pomocí těchto ikonek nebo z menu ReSharperu. V kombinaci s dotTraceProfilerem (nezkoušeli jsme) můžete zároveň analyzovat výkonnost.

Podpora pro ASP.NET, MSBuild, NAnt

Funkce které známe v C# kódu jsou nyní dostupné při editaci ASPX a xml skriptů pro MSBuild nebo NAnt – označování chyb, nabízení "quick-fixů", umí vkládat direktivy pro import neznámých typů, zvládne i refactoring ASPX kódu.

Závěr

    V celkovém hodnocení rozhodně převažují pozitiva nad malými nedostatky, i když např. problémů s paměťovými nároky se ReSharper úplně nezbavil a např. pod VS2003 SP1 se (zřejmě při větším mem usage ve windows) dostane do stavu kdy přestane fungovat highliting a intellisense (místo chyb a varování v pravém okraji okna je jakýsi další posuvník)

Nepomůže ani unload/load přes AddIn manager a je nutno restartovat VS.

Ačkoliv je stále co vylepšovat, posun od starší verze je velmi pozitivní a nalezené nedostatky jsou bohatě kompenzovány tím co 2.0 nabízí navíc.

Odkazy:

http://www.jetbrains.com/resharper20/

PH