Java编码规范及Jtest应用.ppt
Java编码规范及Jtest应用,Outline,编码规范的好处Jtest 简介及安装Java 编码规范Jtest 实例应用,编码规范的好处,减少错误,改进软件质量。如果代码符合规范,编译器和代码检查工具可以帮助发现潜在的bug。减少人员之间通信工作量,提高工作效率。软件开发是团队成员协作的结果,而编码规范是程序员之间沟通的桥梁。如果每个成员遵循一致的编码风格,则可以减少沟通所需的工作量。减轻了程序员的负担。命名规范是一种约定,减少了编码的自由度,从某种意义上可以帮助程序员不用操心一些编码细节上的选择问题。规范外包编码工作。,例:在核心系统某次紧急版本上线后,由于开发人员使用eclipse对代码进行了格式调整,导致刷卡金额的变量多了一个空格,上线后在用户实际刷卡时出现刷卡金额变为实际金额的十分之一的严重错误。上线后当晚即有用户上报刷卡无法通过,报“刷卡金额与实际金额不符”的错误,另有机构出现了按实际金额十分之一刷卡的情况。幸运的是,当晚即有用户上报无法刷卡,运行人员、开发人员、版本更新人员重返公司进行问题处理,花费半宿时间查找问题、测试、修复系统,避免了问题拖延到第二天早上才暴露。,Outline,编码规范的好处Jtest 简介及安装Java 编码规范Jtest 实例应用,Jtest 简介,Parasoft公司产品Jtest主要用途代码格式检查bug检测代码优化代码评审软件度量单元测试,Jtest安装步骤,1.安装Eclipse(或MyEclipse)3.点击“是”,4.点击Yes,5.点击Next,6.确定安装目录后点击Next,7.弹出对话框,确定Eclipse(或MyEclipse)的安装路径,8.确定Eclipse(或MyEclipse)已关闭,点击“确定”,9.Jtest开始安装,10.Jtest安装结束,点击“确定”,Outline,编码规范的好处Jtest 简介及安装Java 编码规范Jtest 实例应用,编码规范选择准则,按以下准则从Jtest中挑选编码规范:1)易于修改的,且修改后不会产生副作用的;2)能产生较大效益的;3)优先考虑和内存泄漏、优化、bug(如零除)相关的编码规范;4)属于严重级别较高的规范(3级以上);5)初期应用该规则不会产生过多报告的,以避免一次修改代码过多。,在初步使用Jtest阶段,共挑选了4条编码规范:1.Avoid unnecessary calls to String methods(避免不必要的String方法调用)2.Avoid conditions that always evaluate to the same value(避免值为常量的条件表达式)3.Avoid division by zero(避免零做除数)4.Avoid NullPointerException(避免NullPointerException异常),导入定制的编码规范,1.打开菜单JtestTest Configurations2.右键单击User-defined,在弹出菜单中选Import,4.导入成功后,在User-defined下增加了一新的配置项。,Outline,编码规范的好处Jtest 简介及安装Java 编码规范Jtest 实例应用,实例 1,规则:OPT.STS类别:OptimizationAvoid unnecessary calls to String methods说明:避免不必要的String方法调用,如调用一个String的对象的toString()方法。例子:,实例 2,规则:类别:Bug DetectivePossible BugsAvoid conditions that always evaluate to the same value说明:避免值为常量的条件表达式如果一个表达式总是返回常量值,则需要重新检查该表达式的正确性,很可能该表达式并不是开发人员真正要写的表达式。例子:,实例 3,规则:类别:Bug DetectivePossible BugsAvoid division by zero 说明:避免零做除数例子:,实例 4,类别:Bug DetectiveExceptionsAvoid NullPointerException说明:避免NullPointerException异常例子 4.1,例子:4.2,Jtest报告实例1,发现问题的报告样式:,点击Author为unknown的超链接,将显示详细的信息。,Jtest报告实例2,未发现问题的报告样式:针对包com.sinosoft.prpall.dbsvr.jf中的文件DBAccRushVoucher.java,Q&A,1.如何添加新的规范?2.如何得到最新一次的检查结果?3.Jtest能否检查.jsp文件?4.假设有代码A.java,B.java,可以有两种方式检查代码:1)分别对这二个文件进行检查,然后将检查结果进行合并。2)同时对这二个文件进行检查。这两种检查方式结果是否一致?,5.如果源代码中没有author标签,所生成检查报告中的作者名会是运行Jtest的当前用户名,如何避免这种情况?(在菜单WindowPreferencesJtestScope and Authorship中设置。),6.Jtest运行时对内存要求较高,如果一次检查文件数过多,可能运行很很慢,如何解决这个问题?(修改eclipse.ini文件中设置的虚拟机参数值,根据系统内存大小修改,如:-vmargs-Xms512m-Xmx1024m-XX:PermSize=256M-XX:MaxPermSize=512M),练习题,1.在服务器上有项目claim,interface,platform,prpall,reins,sales,undwrt,visa的开发环境,试用Jtest及所导入的4条规范,生成相应的Jtest报告。(服务器配置环境为:Windows Server 2003 Enterprise Edition,SP2Eclipse 3.2(服务器上安装路径:D:devInstalleclipse3.2,或由桌面快捷方式启动)MyEclipse 5.0Jtest 8.4),参考资料,1.Parasoft Jtest Users Guide(Version 8.4),