ImageVerifierCode 换一换
格式:DOCX , 页数:196 ,大小:78.01KB ,
资源ID:8986568      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8986568.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(FindBugs规则整理 中文版资料.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

FindBugs规则整理 中文版资料.docx

1、FindBugs规则整理 中文版资料FindBugs1.3.9规则整理FindBugs1.3.9规则整理Findbugs中把影响代码质量分为以下几个部分:Security 关于代码安全性防护序号Description备注1. Dm: Hardcoded constant database password (DMI_CONSTANT_DB_PASSWORD)代码中创建DB的密码时采用了写死的密码。2. Dm: Empty database password (DMI_EMPTY_DB_PASSWORD)创建数据库连接时没有为数据库设置密码,这会使数据库没有必要的保护。3. HRS: HTTP

2、cookie formed from untrusted input (HRS_REQUEST_PARAMETER_TO_COOKIE)此代码使用不受信任的HTTP参数构造一个HTTP Cookie。4. HRS: HTTP Response splitting vulnerability (HRS_REQUEST_PARAMETER_TO_HTTP_HEADER)在代码中直接把一个HTTP的参数写入一个HTTP头文件中,它为HTTP的响应暴露了漏洞。5. SQL: Nonconstant string passed to execute method on an SQL statement

3、(SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE)该方法以字符串的形式来调用SQLstatement的execute方法,它似乎是动态生成SQL语句的方法。这会更容易受到SQL注入攻击。6. XSS: JSP reflected cross site scripting vulnerability (XSS_REQUEST_PARAMETER_TO_JSP_WRITER)在代码中在JSP输出中直接写入一个HTTP参数,这会造成一个跨站点的脚本漏洞。Experimental序号Description备注1. LG: Potential lost logger c

4、hanges due to weak reference in OpenJDK (LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE)OpenJDK的引入了一种潜在的不兼容问题,特别是,java.util.logging.Logger的行为改变时。它现在使用内部弱引用,而不是强引用。logger配置改变,它就是丢失对logger的引用,这本是一个合理的变化,但不幸的是一些代码对旧的行为有依赖关系。这意味着,当进行垃圾收集时对logger配置将会丢失。例如:public static void initLogging() throws Exception Logger lo

5、gger = Logger.getLogger(edu.umd.cs); logger.addHandler(new FileHandler(); / call to change logger configuration logger.setUseParentHandlers(false); / another call to change logger configuration该方法结束时logger的引用就丢失了,如果你刚刚结束调用initLogging方法后进行垃圾回收,logger的配置将会丢失(因为只有保持记录器弱引用)。public static void main(Strin

6、g args) throws Exception initLogging(); / adds a file handler to the logger System.gc(); / logger configuration lost Logger.getLogger(edu.umd.cs).info(Some message); / this isnt logged to the file as expected2. OBL: Method may fail to clean up stream or resource (OBL_UNSATISFIED_OBLIGATION)这种方法可能无法清

7、除(关闭,处置)一个流,数据库对象,或其他资源需要一个明确的清理行动。一般来说,如果一个方法打开一个流或其他资源,该方法应该使用try / finally块来确保在方法返回之前流或资源已经被清除了。这种错误模式基本上和OS_OPEN_STREAM和ODR_OPEN_DATABASE_RESOURCE错误模式相同,但是是在不同在静态分析技术。我们正为这个错误模式的效用收集反馈意见。Bad practice代码实现中的一些坏习惯序号Description备注1. AM: Creates an empty jar file entry (AM_CREATES_EMPTY_JAR_FILE_ENTRY

8、)调用putNextEntry()方法写入新的 jar 文件条目时立即调用closeEntry()方法。这样会造成JarFile条目为空。2. AM: Creates an empty zip file entry (AM_CREATES_EMPTY_ZIP_FILE_ENTRY)调用putNextEntry()方法写入新的 zip 文件条目时立即调用closeEntry()方法。这样会造成ZipFile条目为空。3. BC: Equals method should not assume anything about the type of its argument (BC_EQUALS_M

9、ETHOD_SHOULD_WORK_FOR_ALL_OBJECTS)equals(Object o)方法不能对参数o的类型做任何的假设。比较此对象与指定的对象。当且仅当该参数不为 null,并且是表示与此对象相同的类型的对象时,结果才为 true。4. BC: Random object created and used only once (DMI_RANDOM_USED_ONLY_ONCE)随机创建对象只使用过一次就抛弃5. BIT: Check for sign of bitwise operation (BIT_SIGNED_CHECK)检查位操作符运行是否合理(event.detai

10、l & SWT.SELECTED) 0)If SWT.SELECTED is a negative number, this is a candidate for a bug. Even when SWT.SELECTED is not negative, it seems good practice to use != 0 instead of 0.6. CN: Class implements Cloneable but does not define or use clone method (CN_IDIOM)按照惯例,实现此接口的类应该使用公共方法重写 Object.clone(它是受

11、保护的),以获得有关重写此方法的详细信息。此接口不 包含 clone 方法。因此,因为某个对象实现了此接口就克隆它是不可能的,应该实现此接口的类应该使用公共方法重写 Object.clone7. CN: clone method does not call super.clone() (CN_IDIOM_NO_SUPER_CALL)一个非final类型的类定义了clone()方法而没有调用super.clone()方法。例如:B扩展自A,如果B中clone方法调用了spuer.clone(),而A中的clone没有调用spuer.clone(),就会造成结果类型不准确。要求A的clone方法中

12、调用spuer.clone()方法。8. CN: Class defines clone() but doesnt implement Cloneable (CN_IMPLEMENTS_CLONE_BUT_NOT_CLONEABLE)类中定义了clone方法但是它没有实现Cloneable接口9. Co: Abstract class defines covariant compareTo() method (CO_ABSTRACT_SELF)抽象类中定义了多个compareTo()方法,正确的是覆写Comparable中的compareTo方法,方法的参数为Object类型,如下例:int

13、compareTo(T o) 比较此对象与指定对象的顺序。10. Co: Covariant compareTo() method defined (CO_SELF_NO_OBJECT)类中定义了多个compareTo()方法,正确的是覆写Comparable中的compareTo方法,方法的参数为Object类型11. DE: Method might drop exception (DE_MIGHT_DROP)方法可能抛出异常12. DE: Method might ignore exception (DE_MIGHT_IGNORE)方法可能忽略异常13. DMI: Dont use re

14、moveAll to clear a collection (DMI_USING_REMOVEALL_TO_CLEAR_COLLECTION)不要用removeAll方法去clear一个集合14. DP: Classloaders should only be created inside doPrivileged block (DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED)类加载器只能建立在特殊的方法体内15. Dm: Method invokes System.exit(.) (DM_EXIT)在方法中调用System.exit(.)语句,考虑用Ru

15、ntimeException来代替16. Dm: Method invokes dangerous method runFinalizersOnExit (DM_RUN_FINALIZERS_ON_EXIT)在方法中调用了System.runFinalizersOnExit 或者Runtime.runFinalizersOnExit方法,因为这样做是很危险的。17. ES: Comparison of String parameter using = or != (ES_COMPARING_PARAMETER_STRING_WITH_EQ)用=或者!=方法去比较String类型的参数18. E

16、S: Comparison of String objects using = or != (ES_COMPARING_STRINGS_WITH_EQ)用=或者!=去比较String类型的对象19. Eq: Abstract class defines covariant equals() method (EQ_ABSTRACT_SELF)20. Eq: Equals checks for noncompatible operand (EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS)equals方法检查不一致的操作。两个类根本就是父子关系而去调用eq

17、uals方法去判读对象是否相等。public boolean equals(Object o) if (o instanceof Foo) return name.equals(Foo)o).name); else if (o instanceof String) return name.equals(o); else return false;21. Eq: Class defines compareTo(.) and uses Object.equals() (EQ_COMPARETO_USE_OBJECT_EQUALS)类中定义了compareTo方法但是继承了Object中的compa

18、reTo方法22. Eq: equals method fails for subtypes (EQ_GETCLASS_AND_CLASS_CONSTANT)类中的equals方法可能被子类中的方法所破坏,当使用类似于Foo.class = o.getClass()的判断时考虑用this.getClass() = o.getClass()来替换23. Eq: Covariant equals() method defined (EQ_SELF_NO_OBJECT)类中定义了多个equals方法。正确的做法是覆写Object中的equals方法,它的参数为Object类型的对象。24. FI:

19、Empty finalizer should be deleted (FI_EMPTY)为空的finalizer方法应该删除。一下关于finalizer的内容省略25. GC: Unchecked type in generic call (GC_UNCHECKED_TYPE_IN_GENERIC_CALL)This call to a generic collection method passes an argument while compile type Object where a specific type from the generic type parameters is e

20、xpected. Thus, neither the standard Java type system nor static analysis can provide useful information on whether the object being passed as a parameter is of an appropriate type.26. HE: Class defines equals() but not hashCode() (HE_EQUALS_NO_HASHCODE)方法定义了equals方法却没有定义hashCode方法27. HE: Class defin

21、es hashCode() but not equals() (HE_HASHCODE_NO_EQUALS) 类定义了hashCode方法去没有定义equal方法28. HE: Class defines equals() and uses Object.hashCode() (HE_EQUALS_USE_HASHCODE)一个类覆写了equals方法,没有覆写hashCode方法,使用了Object对象的hashCode方法29. HE: Class inherits equals() and uses Object.hashCode() (HE_INHERITS_EQUALS_USE_HA

22、SHCODE)子类继承了父类的equals方法却使用了Object的hashCode方法30. IC: Superclass uses subclass during initialization (IC_SUPERCLASS_USES_SUBCLASS_DURING_INITIALIZATION)子类在父类未初始化之前使用父类对象实例public class CircularClassInitialization static class InnerClassSingleton extends CircularClassInitialization static InnerClassSing

23、leton singleton = new InnerClassSingleton(); static CircularClassInitialization foo = InnerClassSingleton.singleton;31. IMSE: Dubious catching of IllegalMonitorStateException (IMSE_DONT_CATCH_IMSE)捕捉违法的监控状态异常,例如当没有获取到对象锁时使用其wait和notify方法32. ISC: Needless instantiation of class that only supplies sta

24、tic methods (ISC_INSTANTIATE_STATIC_CLASS)为使用静态方法而创建一个实例对象。调用静态方法时只需要使用类名+静态方法名就可以了。33. It: Iterator next() method cant throw NoSuchElementException (IT_NO_SUCH_ELEMENT)迭代器的next方法不能够抛出NoSuchElementException34. J2EE: Store of non serializable object into HttpSession (J2EE_STORE_OF_NON_SERIALIZABLE_OB

25、JECT_INTO_SESSION)在HttpSession对象中保存非连续的对象35. JCIP: Fields of immutable classes should be final (JCIP_FIELD_ISNT_FINAL_IN_IMMUTABLE_CLASS) The class is annotated with net.jcip.annotations.Immutable, and the rules for that annotation require that all fields are final. .36. NP: Method with Boolean retu

26、rn type returns explicit null (NP_BOOLEAN_RETURN_NULL)返回值为boolean类型的方法直接返回null,这样会导致空指针异常37. NP: equals() method does not check for null argument (NP_EQUALS_SHOULD_HANDLE_NULL_ARGUMENT)变量调用equals方法时没有进行是否为null的判断38. NP: toString method may return null (NP_TOSTRING_COULD_RETURN_NULL)toString方法可能返回nul

27、l39. Nm: Class names should start with an upper case letter (NM_CLASS_NAMING_CONVENTION)类的名称以大写字母名称开头40. Nm: Class is not derived from an Exception, even though it is named as such (NM_CLASS_NOT_EXCEPTION)类的名称中含有Exception但是却不是一个异常类的子类,这种名称会造成混淆41. Nm: Confusing method names (NM_CONFUSING)令人迷惑的方面命名42

28、. Nm: Field names should start with a lower case letter (NM_FIELD_NAMING_CONVENTION)非final类型的字段需要遵循驼峰命名原则43. Nm: Use of identifier that is a keyword in later versions of Java (NM_FUTURE_KEYWORD_USED_AS_IDENTIFIER)验证是否是java预留关键字44. Nm: Use of identifier that is a keyword in later versions of Java (NM

29、_FUTURE_KEYWORD_USED_AS_MEMBER_IDENTIFIER)验证是否时java中的关键字45. Nm: Method names should start with a lower case letter (NM_METHOD_NAMING_CONVENTION)方法名称以小写字母开头46. Nm: Class names shouldnt shadow simple name of implemented interface (NM_SAME_SIMPLE_NAME_AS_INTERFACE)实现同一接口实现类不能使用相同的名称,即使它们位于不同的包中47. Nm:

30、Class names shouldnt shadow simple name of superclass (NM_SAME_SIMPLE_NAME_AS_SUPERCLASS)继承同一父类的子类不能使用相同的名称,即使它们位于不同的包中48. Nm: Very confusing method names (but perhaps intentional) (NM_VERY_CONFUSING_INTENTIONAL)很容易混淆的方法命名,例如方法的名称名称使用使用大小写来区别两个不同的方法。49. Nm: Method doesnt override method in superclas

31、s due to wrong package for parameter (NM_WRONG_PACKAGE_INTENTIONAL)由于错误引用了不同包中相同类名的对象而不能够正确的覆写父类中的方法import alpha.Foo;public class A public int f(Foo x) return 17; import beta.Foo;public class B extends A public int f(Foo x) return 42; public int f(alpha.Foo x) return 27; 50. ODR: Method may fail to close database resource (ODR_OPEN_DATABA

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

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