`
donsun
  • 浏览: 30004 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

FindBugs缺陷类型统计分析(部分)

阅读更多

FindBugs缺陷类型统计分析(部分)

 

目录

1 正确性警告(CORRECTNESS WARNINGS )    4
1.1 AM: CREATES AN EMPTY JAR FILE ENTRY    4
1.2 AM: CREATES AN EMPTY ZIP FILE ENTRY    4
1.3 BC: IMPOSSIBLE CAST    4
1.4 BC: INSTANCEOF WILL ALWAYS RETURN FALSE    5
1.5 BIT: INCOMPATIBLE BIT MASKS    5
1.6 BIT: INCOMPATIBLE BIT MASKS    6
1.7 BIT: INCOMPATIBLE BIT MASKS    6
1.8 BIT: BITWISE OR OF SIGNED BYTE VALUE    7
1.9 BOA: CLASS OVERRIDES A METHOD IMPLEMENTED IN SUPER CLASS ADAPTER WRONGLY    8
1.10 CN: CLASS IMPLEMENTS CLONEABLE BUT DOES NOT DEFINE OR USE CLONE METHOD    8
1.11 CN: CLONE METHOD DOES NOT CALL SUPER.CLONE()    8
1.12 CO: ABSTRACT CLASS DEFINES COVARIANT COMPARETO() METHOD    9
1.13 CO: COVARIANT COMPARETO() METHOD DEFINED    10
1.14 DE: METHOD MIGHT DROP EXCEPTION    10
1.15 DE: METHOD MIGHT IGNORE EXCEPTION    11
1.16 DLS: OVERWRITTEN INCREMENT    11
1.17 NP: POSSIBLE NULL POINTER DEREFERENCE DUE TO RETURN VALUE OF CALLED METHOD    12
1.18 NP: METHOD CALL PASSES NULL FOR UNCONDITIONALLY DEREFERENCED PARAMETER    12
1.19 NP: METHOD CALL PASSES NULL FOR UNCONDITIONALLY DEREFERENCED PARAMETER    13
1.20 NP: NON-VIRTUAL METHOD CALL PASSES NULL FOR UNCONDITIONALLY DEREFERENCED PARAMETER    13
1.21 NP: STORE OF NULL VALUE INTO FIELD ANNOTATED NONNULL    13
1.22 NP: READ OF UNWRITTEN FIELD    13
1.23 NS: QUESTIONABLE USE OF NON-SHORT-CIRCUIT LOGIC    14
1.24 NM: CLASS DEFINES EQUAL(); SHOULD IT BE EQUALS()?    14
1.25 NM: CONFUSING METHOD NAMES    14
1.26 NM: CLASS DEFINES HASHCODE(); SHOULD IT BE HASHCODE()?    15
1.27 NM: CLASS DEFINES TOSTRING(); SHOULD IT BE TOSTRING()?    15
1.28 NM: APPARENT METHOD/CONSTRUCTOR CONFUSION    15
1.29 NM: VERY CONFUSING METHOD NAMES    16
1.30 ODR: METHOD MAY FAIL TO CLOSE DATABASE RESOURCE    16
1.31 ODR: METHOD MAY FAIL TO CLOSE DATABASE RESOURCE ON EXCEPTION    17
1.32 OS: METHOD MAY FAIL TO CLOSE STREAM    18
1.33 OS: METHOD MAY FAIL TO CLOSE STREAM ON EXCEPTION    18
1.34 QBA: METHOD ASSIGNS BOOLEAN LITERAL IN BOOLEAN EXPRESSION    19
1.35 QF: COMPLICATED, SUBTLE OR WRONG INCREMENT IN FOR-LOOP    19
1.36 RC: SUSPICIOUS REFERENCE COMPARISON    20
1.37 RCN: REDUNDANT COMPARISON OF NON-NULL VALUE TO NULL    20
1.38 RCN: REDUNDANT COMPARISON OF TWO NULL VALUES    21
1.39 RCN: REDUNDANT NULLCHECK OF VALUE KNOWN TO BE NON-NULL    21
1.40 RCN: REDUNDANT NULLCHECK OF VALUE KNOWN TO BE NULL    21
1.41 RCN: NULLCHECK OF VALUE PREVIOUSLY DEREFERENCED    21
1.42 RE: INVALID SYNTAX FOR REGULAR EXPRESSION    22
1.43 RE: "." USED FOR REGULAR EXPRESSION    22
1.44 RR: METHOD IGNORES RESULTS OF INPUTSTREAM.READ()    22
1.45 RR: METHOD IGNORES RESULTS OF INPUTSTREAM.SKIP()    23
1.46 RV: RANDOM VALUE FROM 0 TO 1 IS COERCED TO THE INTEGER 0    23
1.47 RV: METHOD CHECKS TO SEE IF RESULT OF STRING.INDEXOF IS POSITIVE    23
1.48 RV: METHOD DISCARDS RESULT OF READLINE AFTER CHECKING IF IT IS NONNULL    23
1.49 RV: REMAINDER OF 32-BIT SIGNED RANDOM INTEGER    24
1.50 RV: METHOD IGNORES RETURN VALUE    24
1.51 SA: SELF ASSIGNMENT OF FIELD    24
2 国际化警告(INTERNATIONALIZATION WARNINGS )    24
2.1 DM: METHOD INVOKES DUBIOUS STRING.TOUPPERCASE() OR STRING.TOLOWERCASE; USE THE LOCALE PARAMETERIZED VERSION INSTEAD    25
3 多线程正确性警告(MULTITHREADED CORRECTNESS WARNINGS )    25
3.1 RU: INVOKES RUN ON A THREAD (DID YOU MEAN TO START IT INSTEAD?)    25
3.2 SC: CONSTRUCTOR INVOKES THREAD.START()    25
3.3 SP: METHOD SPINS ON FIELD    26
3.4 SWL: METHOD CALLS THREAD.SLEEP() WITH A LOCK HELD    26
3.5 TLW: WAIT WITH TWO LOCKS HELD    26
3.6 UG: UNSYNCHRONIZED GET METHOD, SYNCHRONIZED SET METHOD    27
3.7 UL: METHOD DOES NOT RELEASE LOCK ON ALL PATHS    27
3.8 UL: METHOD DOES NOT RELEASE LOCK ON ALL EXCEPTION PATHS    28
3.9 UW: UNCONDITIONAL WAIT IN METHOD    28
3.10 VO: A VOLATILE REFERENCE TO AN ARRAY DOESN'T TREAT THE ARRAY ELEMENTS AS VOLATILE    28
3.11 WS: CLASS'S WRITEOBJECT() METHOD IS SYNCHRONIZED BUT NOTHING ELSE IS    29
3.12 WA: CONDITION.AWAIT() NOT IN LOOP IN METHOD    29
3.13 WA: WAIT NOT IN LOOP IN METHOD    29
4 安全脆弱代码警告(MALICIOUS CODE VULNERABILITY WARNINGS )    30
4.1 EI: METHOD MAY EXPOSE INTERNAL REPRESENTATION BY RETURNING REFERENCE TO MUTABLE OBJECT    30
4.2 EI2: METHOD MAY EXPOSE INTERNAL REPRESENTATION BY INCORPORATING REFERENCE TO MUTABLE OBJECT    30
5 性能问题(PERFORMANCE WARNINGS)    30
5.1 DM: METHOD INVOKES DUBIOUS BOOLEAN CONSTRUCTOR; USE BOOLEAN.VALUEOF(...) INSTEAD    30
6 不提倡的风格(STYLE WARNINGS)    31
6.1 BC: QUESTIONABLE CAST TO ABSTRACT    31

 

1 正确性警告(Correctness Warnings )

1.1 AM: Creates an empty jar file entry

 

项目

内容

BugID

AM_CREATES_EMPTY_JAR_FILE_ENTRY

错误范式

ZipEntry zipEntry=new ZipEntry(fileTo);

zipOutputStream.putNextEntry(zipEntry);

zipOutputStream.closeEntry();     

正确范式

ZipEntry zipEntry=new ZipEntry(fileTo);

zipOutputStream.putNextEntry(zipEntry);

// do something

FileInputStream fileInputStream=new FileInputStream(file);

while((n=fileInputStream.read(rgb))>-1)

{

        zipOutputStream.write(rgb,0,n);

}

fileInputStream.close();

// do end

zipOutputStream.closeEntry();

zipOutputStream.close();

描述

建了一个空的 Jar 文件

详细

建了一个空的 Jar 文件,在 putNextEntry() closeEntry() ,没有做任何写入操作。

重要级别

 

 

1.2 AM: Creates an empty zip file entry

 

项目

内容

BugID

AM_CREATES_EMPTY_ZIP_FILE_ENTRY

错误范式

同上

正确范式

同上

描述

同上

详细

同上

重要级别

 

 

1.3 BC: Impossible cast

 

项目

内容

BugID

BC_IMPOSSIBLE_CAST

错误范式

Object obj = new Object();

Vector list = (Vector)obj;

正确范式

 

描述

必然会导致类型转换异常( ClassCastException )的表达式

详细

导致该错误的几种情况:

<!-- [if !supportLists]-->1.  <!-- [endif]-->无公共基类类型进行显示类型转换

<!-- [if !supportLists]-->2.  <!-- [endif]-->纯基类型向派生类显示类型转换

<!-- [if !supportLists]-->3.  <!-- [endif]-->继承链中非公共节点间进行显示类型转换

 

重要级别

 

 

1.4 BC: instanceof will always return false

 

项目

内容

BugID

BC_IMPOSSIBLE_INSTANCEOF

错误范式

public boolean isBusy()

{

        return false;

}

正确范式

 

描述

某个方法始终返回 false

详细

如果有方法始终返回 false ,那么就要考虑到是不是编码的时候有所遗漏或者会导致逻辑错误,需要谨慎对待。

重要级别

 

 

 

1.5 BIT: Incompatible bit masks

 

项目

内容

BugID

BIT_AND

错误范式

public static final int M_SHOW_WINDOW = 0x01;

public static final int M_WINDOW_VISIBLE = 0x11;

 

public boolean isVisible(int mask)

{

       

        if ((mask & M_SHOW_WINDOW) == M_WINDOW_VISIBLE)

        {

                return true;

        }

        else

        {

                return false;

        }

}

正确范式

public static final int M_SHOW_WINDOW = 0x01;

public static final int M_WINDOW_VISIBLE = 0x11;

 

public boolean isVisible(int mask)

{

       

        if ((mask & M_SHOW_WINDOW) == M_SHOW_WINDOW)

        {

                return true;

        }

        else

        {

                return false;

        }

}

描述

不起作用的掩码

详细

当掩码值设置不合理或判断方式错误时会导致掩码值无论为什么都无法满足程序分支遍历要求,可能是设计或编码问题导致,请确认程序逻辑是否正确。

双目“ & ”运算符表达式中包含常量,则这个表达式的值必然小于等于这个常量,如果比较的值为一个大于该常量的另一个常量,则该条件永远不会满足。

重要级别

 

 

1.6 BIT: Incompatible bit masks

 

项目

内容

BugID

BIT_AND_ZZ

错误范式

public static final int M_SHOW_WINDOW = 0x0;

 

public boolean isVisible(int mask)

{

       

        if ((mask & M_SHOW_WINDOW) == M_WINDOW_VISIBLE)

        {

                return true;

        }

        else

        {

                return false;

        }

}

正确范式

public static final int M_SHOW_WINDOW = 0x01;

 

public boolean isVisible(int mask)

{

       

        if ((mask & M_SHOW_WINDOW) == M_WINDOW_VISIBLE)

        {

                return true;

        }

        else

        {

                return false;

        }

}

描述

不起作用的掩码

详细

当掩码值设置不合理或判断方式错误时会导致掩码值无论为什么都无法满足程序分支遍历要求,可能是设计或编码问题导致,请确认程序逻辑是否正确。

0 不能作为功能掩码,否则表达式 (mask & 0) ==0) 始终为真,功能掩码失效。

重要级别

 

 

 

1.7 BIT: Incompatible bit masks

 

项目

内容

BugID

BIT_IOR

错误范式

public static final int M_SHOW_WINDOW = 0x11;

public static final int M_WINDOW_VISIBLE = 0x01;

 

public boolean isVisible(int mask)

{

       

        if ((mask | M_SHOW_WINDOW) == M_WINDOW_VISIBLE)

        {

                return true;

        }

        else

        {

                return false;

        }

}

正确范式

public static final int M_SHOW_WINDOW = 0x01;

public static final int M_WINDOW_VISIBLE = 0x11;

 

public boolean isVisible(int mask)

{

       

        if ((mask | M_SHOW_WINDOW) == M_WINDOW_VISIBLE)

        {

                return true;

        }

        else

        {

                return false;

        }

}

描述

不起作用的掩码

详细

当掩码值设置不合理或判断方式错误时会导致掩码值无论为什么都无法满足程序分支遍历要求,可能是设计或编码问题导致,请确认程序逻辑是否正确。

双目“ | ”运算符表达式中包含常量,则这个表达式的值必然大于等于这个常量,如果比较的值为一个小于该常量的另一个常量,则该条件永远不会满足。

重要级别

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论
5 楼 donsun 2012-03-23  
refar 写道
怎么没了?作者写symbian没饭吃所以写不下去了?

哈哈,写Symbian已经是历史了,现在改写Android了:)
4 楼 donsun 2012-03-23  
哈哈,对不住大家,iteye粘贴表格非常吃力。所以内有耐性就没有贴完。因为都是原创,写起来挺费劲的。
3 楼 蛤蟆仙人 2012-02-01  
详细点的吧 资料太难找
2 楼 baihongsheng 2011-05-24  
Method checks to see if result of String.indexOf is positive

给详细谢谢呗
1 楼 refar 2011-03-28  
怎么没了?作者写symbian没饭吃所以写不下去了?

相关推荐

    Findbugs缺陷等级对照表

    Findbugs缺陷等级对照表

    Findbugs缺陷等级对照表(中文)

    一直在找Findbugs缺陷等级对照表,但是找到的大多都是英文的,这给因为不好的兄弟姐妹带来了一些困难,尤其是初学者,希望这个文档能给你们带来帮助!

    FindBugs 缺陷模式

    FindBugs 缺陷模式FindBugs 缺陷模式FindBugs 缺陷模式FindBugs 缺陷模式FindBugs 缺陷模式

    findBugs缺陷详解.chm

    如何进行findbugs规则设置,进行问题的缺陷分析。 如何进行findbugs规则设置,进行问题的缺陷分析。

    findbugs错误类型的中文解释

    findbugs错误类型的中文解释 findbugs 错误类型 中文解释 bug type

    Findbugs缺陷等级对照表.pdf

    Findbugs缺陷等级对照表.pdf

    findbugs的错误类型整理

    共整理了findbugs错误类型37个,有错误举例,同时附有正确写法。

    Findbugs缺陷详解与英文代号的对照表

    Findbugs缺陷详解与英文代号的对照表

    FindBugs Java静态代码分析工具

    FindBugs是一款Java静态代码分析工具,与其他静态分析工具(如Checkstyle和PMD)不同,FindBugs 不注重样式或者格式,它专注于寻找真正的缺陷或者潜在的性能问题,它可以帮助java工程师提高代码质量以及排除隐含的...

    最新版Findbugs和缺陷详解与英文代号的对照表

    最新版的findbugs及缺陷详解与英文代号的对照表

    Findbugs 缺陷详解与英文代号的对照表

    rule.findbugs.IMSE_DONT_CATCH_...rule.findbugs.BX_BOXING_IMMEDIATELY_UNBOXED.name=性能 - 基本类型包装之后立刻解包 rule.findbugs.IJU_SETUP_NO_SUPER.name=使用错误 - TestCase定义的setUp没有调用super.setUp()

    findbugs 1.3.9 findbugs 1.3.9

    findbugs 1.3.9 findbugs 1.3.9 findbugs 1.3.9 findbugs 1.3.9 findbugs 1.3.9 findbugs 1.3.9

    java代码缺陷自动分析工具之FindBugs介绍.pdf

    java代码缺陷自动分析工具之FindBugs介绍.pdf

    findbugs3.0.2插件 myeclipse

    FindBugs通过检查类文件或 JAR文件,将字节码与一组缺陷模式进行对比从而发现代码缺陷,完成静态代码分析。FindBugs既提供可视化 UI 界面,同时也可以作为 Eclipse插件使用。文本将主要使用将 FindBugs作为 ...

    findbugs-2.0.1

    在这个由两部分组成的系列文章的第一部分中,高级软件工程师 Chris Grindstaff 分析了 FindBugs 如何帮助提高代码质量以及排除隐含的缺陷。代码质量工具的一个问题是它们容易为开发人员提供大量但并非真正问题的问题...

    findbugs插件使用文档

    findbugs插件使用文档

    findbugs(3.01).zip

    FindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。不是通过分析类文件的形式或结构来确定...

    findbugs插件 myeclipse

    FindBugs通过检查类文件或 JAR文件,将字节码与一组缺陷模式进行对比从而发现代码缺陷,完成静态代码分析。FindBugs既提供可视化 UI 界面,同时也可以作为 Eclipse插件使用。文本将主要使用将 FindBugs作为 Eclipse...

    findbugs(静态代码分析插件)

    1、将下载回来的zip包解压,得到文件夹:edu.umd.cs.findbugs.plugin.eclipse_1.3.9.20090821, 将该文件夹拷贝到myeclipse安装目录下common/plugins目录下。我的目录结构:D:\Genuitec\MyEclipse8.5\Common\...

Global site tag (gtag.js) - Google Analytics