- 浏览: 31363 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
donsun:
<div class="quote_title ...
FindBugs缺陷类型统计分析(部分) -
donsun:
哈哈,对不住大家,iteye粘贴表格非常吃力。所以内有耐性就没 ...
FindBugs缺陷类型统计分析(部分) -
蛤蟆仙人:
详细点的吧 资料太难找
FindBugs缺陷类型统计分析(部分) -
baihongsheng:
Method checks to see if result ...
FindBugs缺陷类型统计分析(部分) -
refar:
怎么没了?作者写symbian没饭吃所以写不下去了?
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; } } |
描述 |
不起作用的掩码 |
详细 |
当掩码值设置不合理或判断方式错误时会导致掩码值无论为什么都无法满足程序分支遍历要求,可能是设计或编码问题导致,请确认程序逻辑是否正确。 双目“ | ”运算符表达式中包含常量,则这个表达式的值必然大于等于这个常量,如果比较的值为一个小于该常量的另一个常量,则该条件永远不会满足。 |
重要级别 |
|
评论
哈哈,写Symbian已经是历史了,现在改写Android了:)
给详细谢谢呗
发表评论
-
优酷屏蔽广告方法(2014-11-11已验证)
2014-11-07 17:57 697广告是免费媒体网站 ... -
转载:网站分析KPI汇总
2012-06-24 14:24 842转载:网站分析KPI汇总 ... -
转载:网站分析基础概念之网页与网页浏览数
2012-06-24 14:23 797转载:网站分析基础概念之网页与网页浏览数 网站分析基础 ... -
转载:网站分析基础概念之访问数
2012-06-24 14:22 752网站分析基础概念之访问数 ... -
转载:网站分析基础概念之维度与度量
2012-06-24 14:21 955网站分析基础概念之维度与度量 ... -
网站分析的烦恼连载(优化篇下)
2012-06-12 13:31 755原文出处:数码林博客 http://blog.digital ... -
网站分析-这里好像有问题!(一)
2012-06-12 13:29 762原文出处:数码林博客 ... -
网站分析-这里好像有问题!(二)
2012-06-12 13:28 708原文出处:数码林博客 http://blog.digital ... -
网站分析的烦恼连载(战略篇上)
2012-06-12 13:26 670原文出处:数码林博客 ... -
Symbian开发异常处理框架
2010-06-17 13:49 867Symbian开发异常处理框架 ... -
WM应用开发中DotNet Compact framework版本的选择
2010-05-31 08:44 1484WM应用开发中DotNet Compact framewo ... -
Symbian移动端SSL改造方案调研——基于主线程创建活动对象与SSL服务器交互模型
2010-05-30 13:46 1401Symbian移动端SSL改造方案调研 ——基于主线程创 ... -
DotNet托管C# VS DotNet托管C# 调用C++本地代码
2010-05-28 15:45 1564DotNet托管C# VS DotNet托管C# 调用C++本 ... -
java mem report vm java 虚拟机 http web 2.0 web3.0 c# doc vba
2010-05-24 17:03 850java mem report vm java 虚拟机 ht ... -
Java系统内存泄漏分析
2010-05-21 15:23 1623Java系统内存泄漏分析报 ... -
数据中心无缝热迁移解决方案
2010-05-18 14:48 55数据中心无缝热迁移解 ... -
FindBugs在项目中的应用
2010-05-18 09:04 1307FindBugs在项目中的应用 目录 1 FINDBUGS ... -
Symbian内存优化方案
2010-05-17 12:50 986Symbian内存优化方案 1 ...
相关推荐
StatsCheckstyle.jar可能就是Checkstyle的定制版或者增强版,提供特定的统计分析功能。 PMD则是另一种静态代码分析工具,它的重点在于检测代码中的潜在问题和不良编程习惯。PMD可以找出未使用的局部变量、过长的...
FindBugs是一个静态分析工具,用于在Java程序中发现可能存在的bug。它通过检查类或者JAR文件,将字节码与一组缺陷模式进行对比以发现可能的问题。FindBugs不注重代码风格和格式,而是专注于检测真正的bug及潜在的...
根据统计数据,30%至70%的代码逻辑设计和编码缺陷可以通过静态代码分析来发现并修复。 #### 静态代码分析工具的优势 使用静态代码分析工具的优势在于能够自动执行静态代码分析,快速定位代码中的隐藏错误和缺陷。...
有许多专门的测试工具被广泛应用,如Stanford大学的Metal用于C/C++,马里兰大学的FindBugs用于Java,以及PMD、Klocwork、CodeSonar、Coverity Prevent等,这些都是针对不同编程语言的静态代码分析工具,用于检测潜在...
Findbugs 是一款典型的静态测试工具,可以帮助 Android 程序员在不运行代码的情况下查找代码缺陷,并在检测完毕后生成一份详细的报告,统计代码中的高优先级报警和低优先级报警,对所有报警进行归类,并进行详细...
4. **缺乏代码标准**:通过集成工具如 PMD、CheckStyle 和 Findbugs,SonarQube 可以检查代码是否遵循预设的编码规范,提升代码一致性。 5. **注释不足或过多**:适量的注释有助于提高代码可读性,但过多的注释可能...
代码覆盖率通常包括行覆盖率、分支覆盖率、条件覆盖率等多种类型。行覆盖率是最基础的,表示被执行的代码行数占总代码行数的比例。分支覆盖率则关注条件语句(如if、switch)中的每个分支是否都被执行到。EClemma...
- **测试报告生成**:通过测试工具自动生成详尽的测试报告,包括覆盖率统计、缺陷列表等。 #### 第三方测试服务 除了内部测试外,还可以借助第三方测试服务来获得更广泛的测试覆盖,例如: - **Testin**:提供...
2. 潜在的缺陷:使用同样的规则检测工具来识别潜在的代码缺陷,帮助开发者早期发现问题。 3. 糟糕的复杂度分布:SonarQube分析代码的复杂度分布,如过高的文件、类或方法复杂度可能会导致维护困难。 4. 重复代码:...
它不仅可以进行静态代码分析,检测潜在的代码缺陷、漏洞和坏味道,还可以追踪代码质量趋势,提供改善建议。SonarQube可以与JaCoCo集成,接收其提供的覆盖率报告,进一步丰富代码质量评估。 【sonar进行对java代码...
Maven 中的 FireBug 检查插件是通过 findbugs-maven-plugin 实现的,该插件提供了对 Java 代码的 FireBug 检查功能,能够检测出代码中的 bug 和缺陷。通过该插件,开发者可以对代码进行 FireBug 检查,提高代码的...