ReSharper是一款由jetbrains開發(fā)的針對(duì)C#, VB.NET, ASP.NET, XML, 和 XAML的編輯器。r擁有高度智能的糾錯(cuò),30多種高級(jí)代碼重構(gòu)功能,方便的單元測(cè)試 工具,快速導(dǎo)航、檢索,以及一鍵格式化代碼,自動(dòng)代碼生成和模板功能等很多特性。
功能特色:
代碼質(zhì)量分析
ReSharper可提供對(duì)C#, XAML, XML, ASP.NET和ASP.NET MVC的持續(xù)的代碼質(zhì)量分析,甚至在用戶對(duì)之進(jìn)行編譯以前即可檢測(cè)到錯(cuò)誤和問題。ReSharper可對(duì)用戶的代碼提供900多種代碼檢驗(yàn),用戶便可即刻 察覺到其當(dāng)前文件或者甚至整個(gè)解決方案中是否包含了錯(cuò)誤和故障。對(duì)大多數(shù)錯(cuò)誤,它立即通過智能修正給出解決問題的方法。它也可以給出編碼建議和線索,這些東東提供洞察代碼結(jié)構(gòu)和邏輯,并使引起你對(duì)潛在的設(shè)計(jì)錯(cuò)誤注意。你也可以注釋你代碼以使ReSharper更好的分析你的代碼。
導(dǎo)航和搜索
無論什么時(shí)候你需要查找某個(gè)類型,字段,方法,或任何其他的標(biāo)識(shí),ReSharper提供了多種實(shí)現(xiàn)方法,可以通過名稱查找一個(gè)標(biāo)識(shí),在代碼從引用位置導(dǎo)航到標(biāo)識(shí)的聲明位置,查找并高亮顯示標(biāo)識(shí)用法?梢栽诋(dāng)前位置使用簡(jiǎn)單的快捷方式實(shí)現(xiàn)所有可用的導(dǎo)航行為。另外,使用集成到Visual Studio用戶接口的特別工具窗口,ReSharper可以讓你看到完整的類型繼承樹和文件結(jié)構(gòu)。ReSharper對(duì)最近編輯擴(kuò)展了一系列的導(dǎo)航和搜索的特性—你最近修改的文件或標(biāo)識(shí)的下拉列表。
代碼協(xié)助
ReSharper提供許多簡(jiǎn)化代碼任務(wù)的快捷方式以提高你的生產(chǎn)力和節(jié)省你的時(shí)間。在上面的截屏中,ReSharper智能的建議你添加遺漏的using或在你輸入類型名稱時(shí)導(dǎo)入正確的全名。它可以使用不同的代碼模板快速的生成代碼,在編輯器中查看類型和他們的成員的文檔,使用稱為“上下文動(dòng)作”(context actions)執(zhí)行代碼轉(zhuǎn)換,還有其他更多的。
ReSharper使用三種代碼完成類型來擴(kuò)展和提高Visual Studio本身的智能化。標(biāo)識(shí)完成建議只存取在當(dāng)前作用域的類型。智能完成任務(wù)非常有效,實(shí)時(shí)過濾成員方法和變量以匹配你輸入的表達(dá)式。導(dǎo)入符號(hào)完成,使在當(dāng)前項(xiàng)目中完成類型名名稱和擴(kuò)展方法成為可能。它也在需要的時(shí)候自動(dòng)添加適當(dāng)?shù)膗sing引用。另外還有語句完成,使用一個(gè)簡(jiǎn)單的快捷鍵就可以自動(dòng)添加必要的語法元素(大括號(hào),分號(hào)等),并把光標(biāo)放置到適當(dāng)?shù)奈恢靡蚤_始下一句。
代碼重構(gòu)
與Visual Studio 2005/2008/2010相比,ReSharper提供了更豐富的自動(dòng)代碼重構(gòu)功能。用戶可使用許多不同的重構(gòu)方法以進(jìn)行重命名,移動(dòng),安全刪除標(biāo)識(shí);導(dǎo)入和內(nèi)聯(lián)字段、變量和參數(shù)等等。
代碼清理
代碼清理是一個(gè)數(shù)十個(gè)ReSharper特性的快捷方式(Code Cleanup is a shortcut for a dozen of ReSharper features),根據(jù)自定的風(fēng)格格式化代碼,排列“this”限定詞,移除冗余的代碼,根據(jù)候補(bǔ)字段轉(zhuǎn)換成自動(dòng)屬性,把字段置為只讀,優(yōu)化using命令,適當(dāng)?shù)暮?jiǎn)化引用,更新文件頭,使用vars替換顯式類型,或使用更多的設(shè)置修改你的C#代碼。
集成單元測(cè)試
ReSharper自動(dòng)偵查代碼中的單元測(cè)試,并提供完整的單元測(cè)試支持。你能從代碼編輯器中運(yùn)行和調(diào)試測(cè)試。同時(shí),一個(gè)專用的單元測(cè)試資源窗口會(huì)讓你看到你的單元測(cè)試的結(jié)構(gòu)和運(yùn)行一個(gè)或多少單元測(cè)試會(huì)話的任意組合測(cè)試。
ASP.NET編輯
利用錯(cuò)誤高亮顯示,快速修正,上下文動(dòng)作,代碼協(xié)助,導(dǎo)航,重構(gòu),和其他特征,用戶現(xiàn)在可以愉悅而高效的編輯ASP.NET文件。使用ReSharper,你可以不受打擾的在ASP.NET中編輯和重構(gòu)C#代碼,如Web控件屬性和事件,數(shù)據(jù)源,和內(nèi)容點(diǎn)位符。
XAML編輯
有了ReSharper,用戶無論是在進(jìn)行Silverlight, WPF, 或者 Windows Phone 7 開發(fā)時(shí),均可獲得附加的XAML編輯協(xié)助,包括即時(shí)代碼分析,代碼重構(gòu),代碼生成和調(diào)整,以及快速的解決方案范圍導(dǎo)航。
交叉語言功能
為了混合C#和VB.net項(xiàng)目,ReSharper幫助你保持代碼的各個(gè)部分在一起流暢的工作和在你的代碼間輕松的導(dǎo)航。所有導(dǎo)航和搜索動(dòng)作把所有語言的代碼都考慮在內(nèi),包括C#,VB.net,Asp.net,和XAML。你可以導(dǎo)航到使用,聲明,繼承,基類和更多—交叉語言。無論何時(shí)只要可能,都會(huì)由使用重構(gòu)、上下文動(dòng)作、或覆蓋兩個(gè)主要語言的快速修改進(jìn)行自動(dòng)引用修正。單元測(cè)試是可用的,并且無論使用C#或VB.net寫單元測(cè)試都是一樣的用。
NAnt和MS Build腳本編輯
高級(jí)編輯性能(Advanced editing capabilities),之前只針對(duì)C#可以用,現(xiàn)在擴(kuò)展到了NAnt和MSBuild腳本,為生成腳本提供了完整的代碼協(xié)助,大量的導(dǎo)航和搜索特征,文件結(jié)構(gòu),實(shí)時(shí)錯(cuò)誤高亮顯示和快速修改。
XML支持
ReSharper提供了一些省時(shí)的XML特征,包括類型完成,導(dǎo)航到引用類型,高亮顯示,替換和移動(dòng)標(biāo)簽,在兩個(gè)標(biāo)簽之間導(dǎo)航和打開/關(guān)閉標(biāo)簽,使用代碼協(xié)助和活模板。
XAML支持
XAML特征包括XAML代碼中的XML編輯,所有的ReSharper代碼完成特征,幾個(gè)重構(gòu)(包括重命名重構(gòu)),和實(shí)時(shí)錯(cuò)誤提示,語義和語法分析。上面的截屏中顯示在XAML資源中的敏捷的代碼完成工作。
配置用法:
1:安裝后,Resharper會(huì)用他自己的英文智能提示,替換掉 vs2010的智能提示,所以我們要換回到vs2010的智能提示
2:快捷鍵。是使用vs2010的快捷鍵還是使用 Resharper的快捷鍵呢?我是使用re的快捷鍵
3:Resharper安裝后,會(huì)做幾件事情,這幾件事情對(duì)于除此使用者,比較麻煩,因此歸納總結(jié)一下,以資參考。
(1)、會(huì)將選項(xiàng)——文本編輯器——C#——常規(guī)——自動(dòng)列出成員 這個(gè)選擇框的勾選去掉。這樣當(dāng)你使用某個(gè)方法的時(shí)候,便不會(huì)提示參數(shù),是一個(gè)很郁悶的事情。
可以手動(dòng)勾上。
(2)、會(huì)將選項(xiàng)——文本編輯器——C#——高級(jí)——顯示實(shí)時(shí)語義錯(cuò)誤、在編輯中用下劃線標(biāo)識(shí)錯(cuò)誤這兩個(gè)選項(xiàng)去掉。這個(gè)本來沒有什么,但是如果卸載了Resharper,
vs編輯器變不會(huì)實(shí)時(shí)提示錯(cuò)誤。因此卸載Resharper后,需要把這兩個(gè)選項(xiàng)重新勾選上。
4:use var
use implicitly typed local variable declaration
5:按 alt+enter 能解決很多問題。下面是快捷鍵大全。
6:Alt+F7將你光標(biāo)所在位置的變量的所有使用以列表的方式顯示出來,顯示結(jié)果的窗體可以像其他窗體那樣?。
它的優(yōu)點(diǎn)包括:
可以從所有使用中挑選只顯示read usage或者write usage,有時(shí)我們只是想知道某個(gè)變量在哪里被改變了。找到的位置前的圖標(biāo)也告訴你這點(diǎn)。
可以在下方預(yù)覽,即使我們列出所有使用,也不想跳轉(zhuǎn)到每個(gè)使用它的地方,這時(shí)預(yù)覽可以幫你大忙。
當(dāng)你在代碼編輯器中改動(dòng)了某些使用時(shí),比如刪除了某行,那么在查找結(jié)果的窗體中,會(huì)用刪除線表示出來。
默認(rèn)的是尋找解決方案中所有的使用,并且按照命名空間來組織,非常便于選擇。
我現(xiàn)在已經(jīng)記不起來在沒有Alt+F7之前我是怎么查找的。反正現(xiàn)在我?guī)缀醪辉趺礃覥trl+F了,除非我忘記了某個(gè)變量的名字。如果是這樣,多半這個(gè)名字需要refactor,那也是Resharper的另一大塊功能所在。也許有人對(duì)這個(gè)功能嗤之以鼻,但是用過CAB的人都知道,訂閱和發(fā)布某個(gè)事件的簽名,完全是字符串,如果你不用搜索來找到它的話,你都不知道這個(gè)控件的鼠標(biāo)點(diǎn)下去,到底有多少個(gè)處理程序在背后開始工作了。用了Alt+F7來搜索這個(gè)字符串,等于在查找背后所有的調(diào)用者。
不過提示你,當(dāng)光標(biāo)停留在一個(gè)類型上時(shí),要慎用Alt+F7,假設(shè)是一個(gè)string,你應(yīng)該能想象到得找到多少個(gè)使用
7:威力無比的Alt+Enter回車
萬能的Alt+Enter能夠幫你完成很多編寫代碼過程中的dirty work,總結(jié)起來大概是這么些:
幫你實(shí)現(xiàn)某個(gè)接口或抽象基類的方法;
提供你處理當(dāng)前警告的一些建議;
為你提供處理當(dāng)前錯(cuò)誤的一些建議(不一定是真的錯(cuò)誤);
為你簡(jiǎn)化當(dāng)前的臃腫代碼;
8: Ctrl + F11當(dāng)我們看別人的代碼,或者是看自己的代碼的時(shí)候,總是覺得代碼太多,于是我們就用 region來把代碼進(jìn)行了封裝注釋,可是這樣之后別人看代碼就很郁悶,Resharper的 File Structure 功能,就可以把region和你的方法都展示出來。
說了這么多,其實(shí)就是把對(duì)象瀏覽器和region的長(zhǎng)處結(jié)合起來,既可以清晰的分類,又能一目了然的找到需要的方法。Resharper這時(shí)幫上你的大忙了。用Ctrl+F11,就彈出一個(gè)像右邊這樣的窗口來。
這里面,按照你的region來顯示,這樣讀你的代碼的人也受益了。每個(gè)方法的參數(shù),返回值都如UML一樣列出來。
如果需要瀏覽到某個(gè)方法,直接雙擊它的名字;
如果要把某幾個(gè)方法裝進(jìn)一個(gè)新的region,則可以選中方法,點(diǎn)工具欄上的像框的那個(gè)圖標(biāo);點(diǎn)叉則會(huì)刪除這個(gè)region并把相應(yīng)的方法移到外面來。
如果要調(diào)整某個(gè)方法的位置,比如把它移到別的region里面去,只需要在這里拖動(dòng)這個(gè)方法即可。
更可喜的是,你想要的從這里瀏覽、找到所有使用和重構(gòu)的功能也在這里提供了,在某個(gè)方法上右鍵你就能開始操作。
9:重構(gòu)才是王道(上)
重構(gòu)是一種精神,證明你在致力于提供高效的、精煉的、健壯的代碼,而不是凌亂的、晦澀的、漏洞百出的代碼。
在Visual Studio 2005中,微軟第一次提供了重構(gòu)工具。但是不夠,遠(yuǎn)遠(yuǎn)不夠。我們需要的重構(gòu)是非常廣義的,我們想要對(duì)代碼進(jìn)行快速的調(diào)整,快到我在想什么我的工具就能做什么。這才是追求重構(gòu)的境界。所以在這個(gè)意義上,幾乎Resharper為你提供了巨大的生產(chǎn)力。
Visual Studio 2005提供的重構(gòu)包括了如下:
封裝字段
提取方法
提取接口
提升局部變量
移除參數(shù)
重命名
重新排列參數(shù)
這些方法在Resharper中全部都支持(但Resharper的重構(gòu)遠(yuǎn)不止這些),它們對(duì)應(yīng)的變成了:
封裝字段 —— Introduce Field
提取方法 —— Extract Method
提取接口 —— Extract Interface (另增加了Extract Superclass提取為基類)
提升局部變量 —— Introduce Variable
移除參數(shù) —— 移到Change Signature(改變方法簽名)中
重命名 —— Rename (Resharper會(huì)根據(jù)對(duì)象的類型名稱,提供你幾個(gè)可選的最合適的名稱)
重新排列參數(shù) —— 移到Change Signature(改變方法簽名)中
版本優(yōu)勢(shì):
1、支持 Visual Studio 2016 Preview,C#6.0 和正則表達(dá)式;
2、大量 bug 修復(fù);大大改進(jìn)對(duì) JavaScript & TypeScript 的支持;
3、顯示一個(gè)新文件布局編輯器和導(dǎo)航行為;
4、減少了 ReSharper 在 Visual Studio 安裝 dotCover, dotTrace, and/or dotMemory 的內(nèi)存損耗。