FindBugs错误修改中文说明大全.docx
- 文档编号:3065466
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:96
- 大小:73.14KB
FindBugs错误修改中文说明大全.docx
《FindBugs错误修改中文说明大全.docx》由会员分享,可在线阅读,更多相关《FindBugs错误修改中文说明大全.docx(96页珍藏版)》请在冰豆网上搜索。
FindBugs错误修改中文说明大全
FindBugs错误修改中文说明大全
FindBug错误修改中文说明大全
复制你的Patternid然后用Ctrl+F快速查找定位
Security关于代码安全性防护
序号
Description
备注
1.
Dm:
Hardcodedconstantdatabasepassword(DMI_CONSTANT_DB_PASSWORD)
代码中创建DB的密码时采用了写死的密码。
2.
Dm:
Emptydatabasepassword(DMI_EMPTY_DB_PASSWORD)
创建数据库连接时没有为数据库设置密码,这会使数据库没有必要的保护。
3.
HRS:
HTTPcookieformedfromuntrustedinput(HRS_REQUEST_PARAMETER_TO_COOKIE)
此代码使用不受信任的HTTP参数构造一个HTTPCookie。
LG:
PotentiallostloggerchangesduetoweakreferenceinOpenJDK(LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE)
OpenJDK的引入了一种潜在的不兼容问题,特别是,java.util.logging.Logger的行为改变时。
它现在使用内部弱引用,而不是强引用。
–logger配置改变,它就是丢失对logger的引用,这本是一个合理的变化,但不幸的是一些代码对旧的行为有依赖关系。
这意味着,当进行垃圾收集时对logger配置将会丢失。
例如:
publicstaticvoidinitLogging()throwsException{
Loggerlogger=Logger.getLogger("edu.umd.cs");
logger.addHandler(newFileHandler());//calltochangeloggerconfiguration
logger.setUseParentHandlers(false);//anothercalltochangeloggerconfiguration
}
该方法结束时logger的引用就丢失了,如果你刚刚结束调用initLogging方法后进行垃圾回收,logger的配置将会丢失(因为只有保持记录器弱引用)。
publicstaticvoidmain(String[]args)throwsException{
initLogging();//addsafilehandlertothelogger
System.gc();//loggerconfigurationlost
Logger.getLogger("edu.umd.cs").info("Somemessage");//thisisn'tloggedtothefileasexpected
}
1.
OBL:
Methodmayfailtocleanupstreamorresource(OBL_UNSATISFIED_OBLIGATION)
这种方法可能无法清除(关闭,处置)一个流,数据库对象,或其他资源需要一个明确的清理行动。
一般来说,如果一个方法打开一个流或其他资源,该方法应该使用try/finally块来确保在方法返回之前流或资源已经被清除了。
这种错误模式基本上和OS_OPEN_STREAM和ODR_OPEN_DATABASE_RESOURCE错误模式相同,但是是在不同在静态分析技术。
我们正为这个错误模式的效用收集反馈意见。
Badpractice代码实现中的一些坏习惯
序号
Description
备注
1.
AM:
Createsanemptyjarfileentry(AM_CREATES_EMPTY_JAR_FILE_ENTRY)
调用putNextEntry()方法写入新的jar文件条目时立即调用closeEntry()方法。
这样会造成JarFile条目为空。
2.
AM:
Createsanemptyzipfileentry(AM_CREATES_EMPTY_ZIP_FILE_ENTRY)
调用putNextEntry()方法写入新的zip文件条目时立即调用closeEntry()方法。
这样会造成ZipFile条目为空。
3.
BC:
Equalsmethodshouldnotassumeanythingaboutthetypeofitsargument(BC_EQUALS_METHOD_SHOULD_WORK_FOR_ALL_OBJECTS)
equals(Objecto)方法不能对参数o的类型做任何的假设。
比较此对象与指定的对象。
当且仅当该参数不为null,并且是表示与此对象相同的类型的对象时,结果才为true。
4.
BC:
Randomobjectcreatedandusedonlyonce(DMI_RANDOM_USED_ONLY_ONCE)
随机创建对象只使用过一次就抛弃
5.
BIT:
Checkforsignofbitwiseoperation(BIT_SIGNED_CHECK)
检查位操作符运行是否合理
((event.detail&SWT.SELECTED)>0)
IfSWT.SELECTEDisanegativenumber,thisisacandidateforabug.EvenwhenSWT.SELECTEDisnotnegative,itseemsgoodpracticetouse'!
=0'insteadof'>0'.
6.
CN:
ClassimplementsCloneablebutdoesnotdefineoruseclonemethod(CN_IDIOM)
按照惯例,实现此接口的类应该使用公共方法重写Object.clone(它是受保护的),以获得有关重写此方法的详细信息。
此接口不包含clone方法。
因此,因为某个对象实现了此接口就克隆它是不可能的,应该实现此接口的类应该使用公共方法重写Object.clone
7.
CN:
clonemethoddoesnotcallsuper.clone()(CN_IDIOM_NO_SUPER_CALL)
一个非final类型的类定义了clone()方法而没有调用super.clone()方法。
例如:
B扩展自A,如果B中clone方法调用了spuer.clone(),而A中的clone没有调用spuer.clone(),就会造成结果类型不准确。
要求A的clone方法中调用spuer.clone()方法。
8.
CN:
Classdefinesclone()butdoesn'timplementCloneable(CN_IMPLEMENTS_CLONE_BUT_NOT_CLONEABLE)
类中定义了clone方法但是它没有实现Cloneable接口
9.
Co:
AbstractclassdefinescovariantcompareTo()method(CO_ABSTRACT_SELF)
抽象类中定义了多个compareTo()方法,正确的是覆写Comparable中的compareTo方法,方法的参数为Object类型,如下例:
intcompareTo(To) 比较此对象与指定对象的顺序。
10.
Co:
CovariantcompareTo()methoddefined(CO_SELF_NO_OBJECT)
类中定义了多个compareTo()方法,正确的是覆写Comparable中的compareTo方法,方法的参数为Object类型
11.
DE:
Methodmightdropexception(DE_MIGHT_DROP)
方法可能抛出异常
12.
DE:
Methodmightignoreexception(DE_MIGHT_IGNORE)
方法可能忽略异常
13.
DMI:
Don'tuseremoveAlltoclearacollection(DMI_USING_REMOVEALL_TO_CLEAR_COLLECTION)
不要用removeAll方法去clear一个集合
14.
DP:
ClassloadersshouldonlybecreatedinsidedoPrivilegedblock(DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED)
类加载器只能建立在特殊的方法体内
15.
Dm:
MethodinvokesSystem.exit(...)(DM_EXIT)
在方法中调用System.exit(...)语句,考虑用RuntimeException来代替
16.
Dm:
MethodinvokesdangerousmethodrunFinalizersOnExit(DM_RUN_FINALIZERS_ON_EXIT)
在方法中调用了System.runFinalizersOnExit或者Runtime.runFinalizersOnExit方法,因为这样做是很危险的。
17.
ES:
ComparisonofStringparameterusing==or!
=(ES_COMPARING_PARAMETER_STRING_WITH_EQ)
用==或者!
=方法去比较String类型的参数
18.
ES:
ComparisonofStringobjectsusing==or!
=(ES_COMPARING_STRINGS_WITH_EQ)
用==或者!
=去比较String类型的对象
19.
Eq:
Abstractclassdefinescovariantequals()method(EQ_ABSTRACT_SELF)
20.
Eq:
Equalschecksfornoncompatibleoperand(EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS)
equals方法检查不一致的操作。
两个类根本就是父子关系而去调用equals方法去判读对象是否相等。
publicbooleanequals(Objecto){
if(oinstanceofFoo)
returnname.equals(((Foo)o).name);
elseif(oinstanceofString)
returnname.equals(o);
elsereturnfalse;
21.
Eq:
ClassdefinescompareTo(...)andusesObject.equals()(EQ_COMPARETO_USE_OBJECT_EQUALS)
类中定义了compareTo方法但是继承了Object中的compareTo方法
22.
Eq:
equalsmethodfailsforsubtypes(EQ_G
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FindBugs 错误 修改 中文 说明 大全