欢迎来到天天文库
浏览记录
ID:51690434
大小:54.95 KB
页数:27页
时间:2020-03-15
《JAVA源代码缺陷说明.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、JAVA源代码缺陷说明1.1 资源管理类1.1.1 资源泄漏缺陷描述:资源使用结束后未释放资源。缺陷危害:资源泄漏可能导致资源长时间被占用而无法释放,进而可能导致资源耗尽而系统不可用。修复或避错建议:资源使用结束后调用释放资源的方法。示例1:不规范用法publicvoidexampleFun(Stringname){FileInputStreamstream=newFileInputStream(name);//使用stream对象...}//方法退出前未释放stream对象的资源示例2:规范用法publicvoidexamp
2、leFun(Stringname){FileInputStreamstream=newFileInputStream(name);try{//使用stream对象...}catch(Exceptione){...}finally{stream.close();//释放stream对象的资源}}1.2 资源使用类1.2.1 使用已释放的资源缺陷描述:使用已释放的资源。缺陷危害:使用已释放的资源会导致程序抛出异常。示例:不规范用法publicvoidexampleFun(InputStreamstream){...stream.c
3、lose();//释放stream对象的资源...byte[]b=newbyte[200];inti=stream.read(b);//使用已释放资源的stream对象...}1.3 解引用类1.1.1 null解引用缺陷描述:对于值可能为null的引用类型变量,未检查变量是否为null而直接解引用该变量。缺陷危害:null解引用会导致程序抛出NullPointerException类型的运行时异常。修复或避错建议:在解引用变量前检查变量是否为null并对变量值为null的情况进行处理。示例1:不规范用法publicStrin
4、gexampleFun(boolflag,Strings1,Strings2){Strings3=null;if(flag){s3=s1+s2;}//变量s3的值可能为null,当变量s3的值为null时,以下语句出现null解引用returns3.trim();}示例2:规范用法publicStringexampleFun(boolflag,Strings1,Strings2){Strings3=null;if(flag){s3=s1+s2;returns3.trim();}returnnull;}1.2 控制语句类1.2.
5、1 用于控制程序流程的条件表达式为常量缺陷描述:用于控制程序流程的条件表达式的结果恒为真或恒为假。缺陷危害:用于控制程序流程的条件表达式为常量时,代码的部分分支路径永远不会被执行,条件表达式变得毫无意义。当用于控制循环的条件表达式的结果恒为真时,可能导致程序进入死循环。示例:不规范用法publicvoidexampleFun(){Strings="";...if(s==null){//用于控制程序流程的条件表达式“s==null”恒为假...}}1.2.2 “If”语句的“then”分支无语句缺陷描述:“If”语句的“then
6、”分支无语句。缺陷危害:“If”语句的“then”分支无语句通常不是程序的本意。“If”语句的“then”分支无语句通常是遗漏了代码,可能会导致程序出错或程序功能实现不正确。修复或避错建议:补充“then”分支的代码。示例:不规范用法publicvoidexampleFun(booleancond){if(cond){//“If”语句的“then”分支无语句}}1.1.1 “If”语句的“then”分支只有分号缺陷描述:“If”语句的“then”分支只有分号。缺陷危害:“If”语句的“then”分支只有分号通常不是程序的本意。
7、“If”语句的“then”分支只有分号通常是打字错误,可能会导致“If”语句的“then”分支部分的代码在不满足判断条件时也进行执行。修复或避错建议:修复打字错误。示例:不规范用法publicvoidexampleFun(){inta=0;if(a>0);//“If”语句的“then”分支只有分号{a++;}}1.1.2 在用于控制程序流程的条件表达式中使用位运算符“&”或“
8、”缺陷描述:在用于控制程序流程的条件表达式中使用位运算符“&”或“
9、”。缺陷危害:当用于控制程序流程的条件表达式使用位运算符“&”或“
10、”时,程序的本意
11、可能为使用运算符“&&”或“
12、
13、”,可能会改变原本的判断逻辑,导致程序执行不同的分支路径。修复或避错建议:使用运算符“&&”或“
14、
15、”。示例1:不规范用法publicvoidexampleFun(intarr[]){//在用于控制程序流程的条件表达式中使用位运算符“&”if(
此文档下载收益归作者所有