ReSharper是一个JetBrains公司出品的著名的代码生成工具,其能帮助Microsoft Visual Studio成为一个更佳的IDE。它包括一系列丰富的能大大增加C#和Visual Basic.net开发者生产力的特征。使用ReSharper,你可以进行深度代码分析,智能代码协助,实时错误代码高亮显示,解决方案范围内代码分析,快速代码更正,一步完成代码格式化和清理,业界领先的自动代码重构,高级的集成单元测试方案,和强大的解决方案内导航和搜索。实质上,ReSharper特征可用于C#,VB。net,XML,Asp。net,XAML,和构建脚本。ReSharper还为C#和VB net提供了增强的交叉语言功能,它使开发者可以有效的控制。net混合项目。
其提供如下功能:
· 代码分析
ReSharper可提供对C#, XAML, XML, ASP。NET和ASP。NET MVC的持续的代码质量分析,甚至在用户对之进行编译以前即可检测到错误和问题。ReSharper可对用户的代码提供900多种代码检验,用户便可即刻 察觉到其当前文件或者甚至整个解决方案中是否包含了错误和故障。
· 高亮显示错误和快速更正
ReSharper能在用户输入的时候即对代码进行分析,并高亮显示错误,用户甚至无需进行编译。其甚至能对大部分错误快速给出修改建议,以帮助用户快速解决问题。
· 先进的代码协助
ReSharper充分的考虑到了编码的各个方面,以帮助用户提高效率和节省时间。 其不但对Visual Studio的诸如代码编译之类的原生功能进行了扩展和改进,还可以使得用户通过使用大量的代码模板快速生成代码,在编辑器中查看类型和他们的成员的文 档,使用称为“上下文动作”(context actions)执行代码转换,还有其他更多的。
· 众多的代码重构
与Visual Studio 2005/2008/2010相比,ReSharper提供了更丰富的自动代码重构功能。用户可使用许多不同的重构方法以进行重命名,移动,安全删除标识;导入和内联字段、变量和参数等等
· 导航和搜索
无论什么时候你需要查找某个类型,字段,方法,或任何其他的标 识,ReSharper提供了多种实现方法,可以通过名称查找一个标识,在代码从引用位置导航到标识的声明位置,查找并高亮显示标识用法。使用集成到 Visual Studio用户接口的特别工具窗口,ReSharper可以让你看到完整的类型继承树和文件结构。
· 集成单元测试
ReSharper自动侦查代码中的单元测试,并提供完整的单元测试支持。你能从代码编辑器中运行和调试测试。同时,会提供一个专用的单元测试资源窗口以让用户看到其单元测试的结果和重新运行单元测试。
·ASP.NET编辑
利用错误高亮显示,快速修正,上下文动作,代码协助,导航,重构,和其他特征,用户现在可以愉悦而高效的编辑Asp。net文件。使用ReSharper,你可以不受打扰的在Asp。net中编辑和重构C#代码,如Web控件属性和事件,数据源,和内容点位符。
· NAnt和MS Build脚本编辑
其高级编辑功能之前只针对C#可以用,现在扩展到了NAnt和MSBuild脚本。若用户安装了ReSharper,则只要其在Visual Studio。NET中打开一个创建的脚本文件,便可立即得到完全代码协助。
· VB功能
ReSharper for Visual Studio 2005/2008/2010 扩展了其对Visual Basic代码(包括使用VB编写的ASP页面)的一系列功能。其中包含了ReSharper的所有导航和搜索功能,以及语法高亮,文档快速查找等。其最 大的益处则是对于需要开发混合了C#和VB的项目的。NET开发人员而言的。
· XAML编辑
有了ReSharper,用户无论是在进行Silverlight, WPF, 或者 Windows Phone 7 开发时,均可获得附加的XAML编辑协助,包括即时代码分析,代码重构,代码生成和调整,以及快速的解决方案范围导航。
相关文档及博客资源
1 resharper官网:
2 resharper上手指南:
3 resharper用户交流与评价:
4 Visual Studio代码分析重构插件CodeRush和Resharper对比
5 ReSharper资源大全:
用法实例展示
在我看来ReShaper最强大的工具在于Refactor(代码重构)
看两个例子。
有如下的程序:
using System;namespace FunctionalProgramming{ class Program { static void Main(string[] args) { var number = int.Parse(Console.ReadLine()); var result = true; for(long i=2;i
用ReShaper封装方法操作如下:
结果如下:
using System;namespace RefactorExample{ class Program { static void Main(string[] args) { var number = int.Parse(Console.ReadLine()); var result = IsPrime(number);; Console.WriteLine(result); } //Refactor private static bool IsPrime(int number) { var result=true; for (long i = 2; i < number; i++) { if (number%i == 0) { result = false; break; } } return result; } }}
再看一个非常牛的,将for循环转换成LINQ。如下:
using System;using System.Collections.Generic;namespace AHigherCalling{ static class Program { static void Main(string[] args) { var number = new [] { 3,5,7,9,11,13}; foreach (var prime in number.FindPrimes()) { Console.WriteLine(prime); } Console.ReadKey(); } private static IEnumerable FindPrimes(this IEnumerable values ) { var result = new List (); foreach (var value in values) { if(IsPrime(value)) result.Add(value); } return result; } private static bool IsPrime(int value) { var result = true; for (long i = 2; i < value; i++) { if (value % i == 0) { result = false; break; } } return result; } }}
操作如下:
效果如下:
using System;using System.Collections.Generic;using System.Linq;namespace AHigherCalling{ static class Program { static void Main(string[] args) { var number = new [] { 3,5,7,9,11,13}; foreach (var prime in number.FindPrimes()) { Console.WriteLine(prime); } Console.ReadKey(); } private static IEnumerable FindPrimes(this IEnumerable values ) { //for循环赚LINQ return values.Where(value => IsPrime(value)).ToList(); } private static bool IsPrime(int value) { var result = true; for (long i = 2; i < value; i++) { if (value % i == 0) { result = false; break; } } return result; } }}
代码是不是Clean了很多?
ReShaper是很有用的工具,只有自己真正去用才能真正体会到它的好处。