目前已转至个人博客,本系列地址:Lam's Blog - Knowledge as Action
EI_EXPOSE_REP
May expose internal representation by returning reference to mutable object
返回一个易变对象引用并把它保存在对象字段中时会暴露对象内部的字段描述,如果接受不守信任的代码访问或者没有检查就去改变易变对象的会涉及对象的安全和其他重要属性的安全。返回一个对象的新副本,在很多情况下更好的办法。
EI_EXPOSE_REP2
May expose internal representation by incorporating reference to mutable object
此代码把外部可变对象引用存储到对象的内部表示。如果实例受到不信任的代码的访问和没有检查的变化危及对象和重要属性的安全。存储一个对象的副本,在很多情况下是更好的办法。
FI_PUBLIC_SHOULD_BE_PROTECTED
Finalizer should be protected, not public
一个类中的finalize()方法必须声明为protected,而不能为public类型
MS_EXPOSE_REP
Public static method may expose internal representation by returning array
一个public类型的静态方法返回一个数组,可能引用内部属性的暴露。任何代码调用此方法都可以自由修改底层数组。一个解决办法是返回一个数组的副本。
MS_FINAL_PKGPROTECT
Field should be both final and package protected
一个静态字段可能被恶意代码或另外一个包所改变的。字段可以放到protected包中也可以定义为final类型的以避免此问题。
MS_MUTABLE_ARRAY
Field is a mutable array
一个定义为final类型的静态字段引用一个数组时它可以被恶意代码或在另其他包中所使用。这些代码可以自由修改数组的内容。
MS_MUTABLE_HASHTABLE
Field is a mutable Hashtable
一个定义为final类型的静态字段引用一个Hashtable时可以被恶意代码或者在其他包中被调用,这些方法可以修改Hashtable的值。
MS_OOI_PKGPROTECT
Field should be moved out of an interface and made package protected
将域尽量不要定义在接口中,并声明为包保护
在接口中定义了一个final类型的静态字段,如数组或哈希表等易变对象。这些对象可以被恶意代码或者在其他包中被调用,为了解决这个问题,需要把它定义到一个具体的实体类中并且声明为保护类型以避免这种错误。
MS_PKGPROTECT
Field should be package protected
一个静态字段是可以改变的恶意代码或其他的包访问修改。可以把这种类型的字段声明为final类型的以防止这种错误。
其他文章(持续更新)
FindBugs:简介与使用
FindBugs 规则整理:CORRECTNESS
FindBugs 规则整理:Bad Practice
FindBugs 规则整理:Style & Dodgy
FindBugs 规则整理:Multithreaded Correctness
FindBugs 规则整理:Security & Experimental
FindBugs 规则整理:Performance
FindBugs 规则整理:Internationalization
引用
整合以下文章过程中发现部分存在翻译错误,已做修正,同时感谢以下文章作者
FindBugs规则整理
网友评论