FindBugs错误修改中文说明大全Word格式文档下载.docx

上传人:b****5 文档编号:15976405 上传时间:2022-11-17 格式:DOCX 页数:96 大小:73.14KB
下载 相关 举报
FindBugs错误修改中文说明大全Word格式文档下载.docx_第1页
第1页 / 共96页
FindBugs错误修改中文说明大全Word格式文档下载.docx_第2页
第2页 / 共96页
FindBugs错误修改中文说明大全Word格式文档下载.docx_第3页
第3页 / 共96页
FindBugs错误修改中文说明大全Word格式文档下载.docx_第4页
第4页 / 共96页
FindBugs错误修改中文说明大全Word格式文档下载.docx_第5页
第5页 / 共96页
点击查看更多>>
下载资源
资源描述

FindBugs错误修改中文说明大全Word格式文档下载.docx

《FindBugs错误修改中文说明大全Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《FindBugs错误修改中文说明大全Word格式文档下载.docx(96页珍藏版)》请在冰豆网上搜索。

FindBugs错误修改中文说明大全Word格式文档下载.docx

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("

).info("

Somemessage"

//thisisn'

tloggedtothefileasexpected

OBL:

Methodmayfailtocleanupstreamorresource(OBL_UNSATISFIED_OBLIGATION)

这种方法可能无法清除(关闭,处置)一个流,数据库对象,或其他资源需要一个明确的清理行动。

一般来说,如果一个方法打开一个流或其他资源,该方法应该使用try/finally块来确保在方法返回之前流或资源已经被清除了。

这种错误模式基本上和OS_OPEN_STREAM和ODR_OPEN_DATABASE_RESOURCE错误模式相同,但是是在不同在静态分析技术。

我们正为这个错误模式的效用收集反馈意见。

Badpractice代码实现中的一些坏习惯

AM:

Createsanemptyjarfileentry(AM_CREATES_EMPTY_JAR_FILE_ENTRY)

调用putNextEntry()方法写入新的jar文件条目时立即调用closeEntry()方法。

这样会造成JarFile条目为空。

Createsanemptyzipfileentry(AM_CREATES_EMPTY_ZIP_FILE_ENTRY)

调用putNextEntry()方法写入新的zip文件条目时立即调用closeEntry()方法。

这样会造成ZipFile条目为空。

BC:

Equalsmethodshouldnotassumeanythingaboutthetypeofitsargument(BC_EQUALS_METHOD_SHOULD_WORK_FOR_ALL_OBJECTS)

equals(Objecto)方法不能对参数o的类型做任何的假设。

比较此对象与指定的对象。

当且仅当该参数不为null,并且是表示与此对象相同的类型的对象时,结果才为true。

4.

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.

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.

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.

CovariantcompareTo()methoddefined(CO_SELF_NO_OBJECT)

类中定义了多个compareTo()方法,正确的是覆写Comparable中的compareTo方法,方法的参数为Object类型

11.

DE:

Methodmightdropexception(DE_MIGHT_DROP)

方法可能抛出异常

12.

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.

MethodinvokesSystem.exit(...)(DM_EXIT)

在方法中调用System.exit(...)语句,考虑用RuntimeException来代替

16.

MethodinvokesdangerousmethodrunFinalizersOnExit(DM_RUN_FINALIZERS_ON_EXIT)

在方法中调用了System.runFinalizersOnExit或者Runtime.runFinalizersOnExit方法,因为这样做是很危险的。

17.

ES:

ComparisonofStringparameterusing==or!

=(ES_COMPARING_PARAMETER_STRING_WITH_EQ)

用==或者!

=方法去比较String类型的参数

18.

ComparisonofStringobjectsusing==or!

=(ES_COMPARING_STRINGS_WITH_EQ)

用==或者!

=去比较String类型的对象

19.

Eq:

Abstractclassdefinescovariantequals()method(EQ_ABSTRACT_SELF)

20.

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.

ClassdefinescompareTo(...)andusesObject.equals()(EQ_COMPARETO_USE_OBJECT_EQUALS)

类中定义了compareTo方法但是继承了Object中的compareTo方法

22.

equalsmethodfailsforsubtypes(EQ_G

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1