有关更多信息,请参阅导入缺少命名空间。
每当您使用未添加using语句的命名空间中的类型时,ReSharper会为您提供在您所在文件的顶部添加相应的语句。这由在所使用的类型上方显示的蓝色框表示。要添加相应的参考,只需按Alt+Enter。
上面假设你所在的项目实际上引用了相应的DLL。如果没有,ReSharper仍然可以帮助您添加DLL引用和using语句,前提是您的解决方案中的某个其他项目引用了必要的DLL,并且您所在的项目引用了该项目。
选择最上面的选项将添加对System.Windows.Forms当前项目的引用,并usingSystem.Windows.Forms;在文件顶部添加一条语句。
装饰器设计模式用于动态地向对象添加其他行为。另外,通过使用接口,可以使用装饰器以类似于多继承的方式统一类型。
让我们看一个例子-假设你有两个对象,叫Bird和Lizard,要放入装饰:
classBird
{
publicvoidFly()
...
}
classLizard
publicvoidWalk()
由于装饰器不能从这两个类继承,所以我们可以从这个菜单的Refactor()中为这两个对象调用ExtractInterface重构,以获得它们的接口:Ctrl+Shift+R
调用这个重构会弹出一个窗口,询问我们哪些成员应该出现在界面中:
在我们为这两个类做了这些之后,我们最终得到下面的代码:
internalinterfaceIBird
voidFly();
classBird:IBird
internalinterfaceILizard
voidWalk();
classLizard:ILizard
classDragon:IBird,ILizard
privateBirdbird;
privateLizardlizard;
在此之后,我们的班级将如下所示:
publicDragon(Birdbird,Lizardlizard)
this.bird=bird;
this.lizard=lizard;
现在为了最后的结果-我们希望为鸟和蜥蜴产生委派成员。这很简单-我们只需打开Generate菜单(Alt+Insert)并选择DelegatingMembers:
ReSharper然后问我们需要委派哪些成员:
最终的结果是:
bird.Fly();
lizard.Walk();
而已!我们的装饰者准备好了。
处理资源文件中的很多条目
在此基础上,TeamCity使用InspectCode进行代码检查,并使用dupFinder进行重复分析。如有必要,可以在任何CI或构建服务器上使用这些免费的命令行工具。
要开始使用TeamCity,请学习TeamCity文档。
将ReSharper检查添加到构建过程仅仅是添加名为Inspections(.NET)的构建步骤。唯一需要的参数是VisualStudio解决方案文件
当构建步骤运行时,TeamCity会生成一个可导航的报告,供我们分析检查结果
复选框仅检查新问题仅用于突出显示自上次构建运行以来仅出现的新问题。括号内的数字(+1-1)是自上次运行以来的差异。
在服务器端添加检查的主要好处之一是将代码质量保持在一定水平,从而我们可以让构建过程根据一系列条件采取行动。例如,如果检测到太多警告或错误,我们可能希望构建失败。
在"项目配置"窗口中的"构建失败条件"下,我们可以添加新的构建失败条件:
我们选择基于度量更改的失败构建,然后根据警告或错误指出我们是否希望构建失败。在我们的例子中,我们要选择错误,如果有多个错误,就会失败。
很显然,如果我们希望检查对我们构建的状态产生影响,也就是说构建失败,我们只能根据警告或错误进行构建。因此,提示和建议不能使用。因此,在ReSharper中配置检查严重性时,我们应该考虑到这一点。
如果我们现在再次运行我们的构建,它应该失败,因为错误的数量大于1。下面是相同输入和检查的输出,但是一个运行在构建失败条件下,另一个没有它。
尽管严格来说,这与ReSharper功能无关,但由于我们在构建过程中讨论了代码质量,因此提及TeamCity可以检查代码重复是有意义的。
和以前一样,激活代码重复仅仅是添加一个新的构建步骤,即重复查找器(.NET)。我们可以指定要忽略的文件夹,无论我们是否要考虑命名空间,类型名称以及其他一些选项。
输出结果是一个格式良好的导航屏幕,可以让我们浏览不同的文件,并查看TeamCity检测到的重复内容(下面调整了空间限制):
正如所料,如果我们有太多的代码重复,我们也可能会失败
使用JetBrains工具,向构建过程添加代码质量检测功能并且在构建过程中出现构建失败时,如果不应该出现在生产代码中,则会非常简单。
空检查是.NET开发中最常见的操作之一。ReSharper是一个通过为使用可能为null的实体的开发人员提供特殊支持而严肃对待空值检查的工具。
ReSharper的第一件事是检测NullReferenceException发生的可能性。例如,假设我们尝试访问XML属性的值而不检查它是否存在,
varxe=XElement.Parse("
varattrib=xe.Attribute("a");
varvalue=attrib.Value;
由于以Value这种方式访问并不是非常安全,因此ReSharper强调这一点,并将鼠标移动到该位置显示以下弹出窗口。
以下是外部注释方法的另一个示例:如果我们尝试Uri使用null参数创建一个,我们会得到以下弹出消息: