公司介绍 产品展示 业务支持 解决方案 文档资料
网站导航 访客留言 技术论坛
     
     
  产品资料
  业界动态
  JAVA技术


首  页 > 文档资料 > 产品资料  
 
  Inspection under IDEA

不少开发人员会问IDEA的设置面板中的“Errors”选项究竟有如何用途?在讲这个功能之前让我们看看Error在IDEA下的具体含义。错误在IDEA可以分为两种:事实错误和弹性错误。事实错误就是客观性的错误,如Java语法错误、配置错误、两者冲突等,这些IDEA会无须配置就可以给你指出,而且你必须修改,否则会出现无法编译、程序无法执行等。弹性错误则是你设置的,它不会影响你程序的正确性,只是你对代码质量的更改要求而产生的人为设置的错误,这一切不影响你的程序正确性。如在Java代码中你引入了不必要的开发包、使用了deprecated类或方法等等,这些都是你人为给代码增加的错误,你的目的很明显,获取更高质量的代码。IDEA设置面板中的“Errors”就是为了你第二种需求而建立的。
IDEA将人为设置的弹性错误称之为Inspection,也就是代码审查,通常我们可以将其理解为巡视、审查,监督你的代码编辑,且这种机制非常及时,在你编码的过程中会立刻给你指出,这样你就可以及时修改。在极限编程(XP)中,这种机制至少可以起到两个作用:提示代码的坏问道和半个结队编程的伙伴。及时的代码审查可以发现代码中潜在的坏味道,并给你提示,同时这也是你很好的编程伙伴,及时提示你,同时给你解决这种问题的方案,下面我们会以实例来说明。这种审查机制同时为你提高代码质量发挥非常大的作用,套用Martin Flower的一句话:“差的程序员可以编写计算机读懂的代码,好的程序员可以编写人能读懂的代码”,提供代码质量就是Inspection的出发点。

下面我们就以几个例子来说明Inspection的用法:

1 代码风格检查:我们知道Java中很少在一个语句中声明多个变量,但是Java也是允许这么做的,下面我们就可以让Inspector检查出这样的错误(我们定义的)。打开IDEA的设置面板的“Errors”选项,复制一份新的审查模式(Inspection默认模式不允许修改的),将“Code style issues”-> “Multiple variables in one declaration”设置为“as warnings”,这样如果出现这样的情况(一个语句声明多个变量),IDEA就会提示你。回到编辑窗口,录入以下语句:
int one=1,two=2;

你会发现IDEA在编辑窗口的标注栏出现一个黄条,提示你错误,同时将two变量的背景色改变。有了这些还不够,Inspection既然发现这种错误啦,当然会给你一个解决方案。将光标置于two变量中,按下“Alt+Enter”,你会发现IDEA给你很多解决的方法,这里我们可以选择“Split into multiple declarations”,这样就可以将变量转换为多个声明语句。

2 大函数(Long method)的处理:我们经常反对使用大函数,其缺点大家都知道,但是如何去识别这样的大函数呢?通常我们会认为超过30行代码的函数(不包含注释行)就可以认为是大函数,如果出现这样的函数,编辑器应该会提示我们,我们会利用一些手段,如重构等来简化大函数。在IDEA中,我们可以在“Errors”选项中,将“Method metrics”-> “Overly long method”设置为“as warnings”,同时你可以设置大函数的语句数,如30或50。回到编辑窗口中,如果你编写的函数语句数超过了设定的语句数,Inspection就会提示你该函数为大函数,下一步你就需要去调整你的这个函数。

3 性能提示:我们知道Jdk 1.5引入了一个新的StringBuilder类,这个类的功能和StringBuffer差不多,在线程安全的情况下,StringBuilder比StringBuffer高效的多,如果我们使用Jdk 1.5作为程序运行的环境的话,我们应考虑使用StringBuilder来代替StringBuffer。在“Errors”选项中,将“Performance Issues”-> “StringBuffer may be StringBuilder (J2SDK 5.0 only)”设置为“as warnings”。回到编辑窗口中,如果你模板的jdk 版本为1.5,那么当你使用StringBuffer时,Inspection就会提示出现错误,同时建议你使用StringBuilder。

总结:通过以上几个例子,你会发现代码审查可以发挥非常大的作用,而且这种机制是实时的,你不会感到任何的延迟,这对你的编码质量有非常大的帮助。你可以定义审查模式,这对你代码质量提升非常有帮助,同时在团队开发过程中,使用同样的审查模式,可以保证团队的代码风格(比仅仅是code style)一致。IDEA同时也提供了Inspecttion的OpenAPI,你也可以编写自己的审查项。Inspection同时可以检查整个项目、模块、package等,这是会给你一个审查结果,你可以根据这个结果来进行代码修改。