`

findbugs的一些错误说明

 
阅读更多

1. equals比较不同的对象类型
Call to equals() comparing different types
This method calls equals(Object) on two references of different class types with no common subclasses. Therefore, the objects being compared are unlikely to be members of the same class at runtime (unless some application classes were not analyzed, or dynamic class loading can occur at runtime). According to the contract of equals(), objects of different classes should always compare as unequal; therefore, according to the contract defined by java.lang.Object.equals(Object), the result of this comparison will always be false at runtime.
说的是equals要比较相同的对象类型

2,可能产生空指针异常
Possible null pointer dereference
A reference value dereferenced here might be null at runtime.  This may lead to a NullPointerException when the code is executed.

3.从未使用的本地变量
Dead store to local variable
This instruction assigns a value to a local variable, but the value is not read by any subsequent instruction. Often, this indicates an error, because the value computed is never used.
Note that Sun's javac compiler often generates dead stores for final local variables. Because FindBugs is a bytecode-based tool, there is no easy way to eliminate these false positives.

4.应该是一个静态内部类
Should be a static inner class

This class is an inner class, but does not use its embedded reference to the object which created it.  This reference makes the instances of the class larger, and may keep the reference to the creator object alive longer than necessary.  If possible, the class should be made static.

5.方法名称第一个字母小写
Method names should start with an lower case letter

Methods should be verbs, in mixed case with the first letter lowercase, with the first letter of each internal word capitalized.


6.用包装类的valueOf代替NEW
解释:因为用new Integer(int) 这样的方式会产生一个新的对象
而当编译时用valueOf则会被缓存,并且速度更快。
Method invokes inefficient Number constructor; use static valueOf instead

Using new Integer(int) is guaranteed to always result in a new object whereas Integer.valueOf(int) allows caching of values to be done by the compiler, class library, or JVM. Using of cached values avoids object allocation and the code will be faster.

 

 

7.Dead store to local variable 本地变量存储了闲置不用的对象
举例:
List accountCoList = new ArrayList();
我们为accountCoList新建了一个对象,但是程序的后面并没有使用这个这个新建对象。
建议改为:
List accountCoList = null;

 

8.Write to static field from instance method 向static字段中写入值
举例:
 private static DBRBO dbrBO;
 public final void refresh() {
        danskeBankBO = null;
        dbrBO = null;
        fileAndPathBO = null;
    }
建议改为:
去掉static。


9. Load of known null value 大体意思是加载了null的对象。
举例
        if (null == boList) {

            for (int i = 0; i < boList.size(); i++) {
                entityList.add(productBOToEntity(boList.get(i)));
            }
        }

 

 15.Inefficient use of keySet iterator instead of entrySet iterator
这个意思是说请用遍历Entry的方式替换keySet,因为前者比后者效率高。
很多人都这样遍历Map,没错,但是效率很低,先一个一个的把key遍历,然后在根据key去查找value,这不是多此一举么,为什么不遍历entry(桶)然后直接从entry得到value呢?它们的执行效率大概为1.5:1(有人实际测试过)。

 

16.Method call passes null for nonnull parameter

    对参数为null的情况没做处理

    例

 

public void method1() {
   String ip = null;
  try {
   ip = InetAddress.getLocalHost().getHostAddress();
  } catch (UnknownHostException e) {
   e.printStackTrace();
  }
  long ipCount = countIpAddress(ip); // 可能会传入空引用
                               //...
}

 long countIpAddress(String ip) {
  long ipNum = 0;
  String[] ipArray = ip.split("\\.");
}

 

修改后:

public void method1() {
   String ip = null;
  try {
   ip = InetAddress.getLocalHost().getHostAddress();
  } catch (UnknownHostException e) {
   e.printStackTrace();
  }
  long ipCount = countIpAddress(ip); // 可能会传入空引用
                               //...
}

 long countIpAddress(String ip) {
  long ipNum = 0;
  if (ip == null) {
   return 0;          //或者抛出异常
  }
  String[] ipArray = ip.split("\\.");
                               //...
}

 

注意:函数入口需要交验入参的合法性。

 

分享到:
评论

相关推荐

    eclipse插件FindBugs错误分析说明

    以下是一些常见FindBugs错误的解释和修改建议。 1. EC_UNRELATED_TYPESBug 错误描述:在调用equals()方法比较不同类型的对象时发生此错误。 Patternid: EC_UNRELATED_TYPES,类型:EC,类别:CORRECTNESS。 解释:...

    findbugs1.3.8错误类型说明及中文对照

    findbugs1.3.8错误类型说明及中文对照

    FindBugs错误分析说明.pdf

    以上就是在FindBugs中常见的几个错误类型,以及对它们的分析和修正建议。FindBugs作为一个静态代码分析工具,对Java开发者的代码质量提升有极大的帮助。通过识别这些典型的编码问题和潜在bug,开发者可以提高代码的...

    Findbugs配置及说明.docx

    下面是对FindBugs配置及其说明的详细解释: **一、FindBugs配置** 在Eclipse或IntelliJ IDEA等集成开发环境中,FindBugs的配置通常在项目的`Project-&gt;Properties`菜单下。进入`Findbugs`配置界面,你可以找到以下...

    findbugs安装使用说明

    `FindBugs`是一款开源的静态代码分析工具,专门用于检测Java代码中的潜在错误和不良实践。它通过分析字节码来找出可能的问题,而无需实际运行程序。这个工具可以帮助开发者在编码阶段就发现并修复问题,从而提高软件...

    FindBugs安装及配置使用说明

    完成配置后,FindBugs会在指定的优先级级别下运行,分析结果会显示在Bug Explorer视图中,包括错误的详细信息、严重程度和建议的修复措施。开发者可以根据这些信息来改进代码,提高代码质量和稳定性。 **其他说明**...

    java代码分析工具findbugs安装使用说明及常见错误

    - 查阅官方文档和社区资源,了解更详细的FindBugs用法和错误类型。 - 使用FindBugs的命令行版本对持续集成(CI)流程进行集成,实现自动化代码质量检查。 - 配置FindBugs的排除过滤器,针对特定项目需求定制分析规则。...

    findbugs安装说明和简单使用说明

    FindBugs是一款强大的静态代码分析工具,能够帮助开发者发现Java程序中的潜在错误和编程缺陷。它通过分析程序的字节码来查找可能导致错误的行为模式,从而提高代码质量和可维护性。 #### 二、FindBugs安装指南 ###...

    FindBugs安装与使用说明

    FindBugs是一款开源的静态代码分析工具,主要用于Java程序的错误检测。它能够帮助开发者在代码运行前找出潜在的bug,提高代码质量和可维护性。本篇文章将详细介绍FindBugs的安装过程以及如何在实际项目中使用。 一...

    findbugs压缩包+findbugs.jar+findbugs-ant.jar

    描述中提到的"用于findbugs安装配置,及findbugs结果导出分析文档",意味着这个压缩包不仅提供了FindBugs的基础软件,还可能包含配置文件、示例、或者说明文档,帮助用户安装、配置FindBugs,并理解其分析结果。...

    myeclipse上安装FindBugs步骤和使用说明

    - **FindBugs**是一款用于Java应用程序的静态代码分析工具,能够帮助开发者发现代码中可能存在的错误或潜在问题。 - **优点**: - 提高代码质量。 - 减少后期维护成本。 - 有助于遵循最佳编程实践。 - **应用场景...

    findbugs修改说明

    《FindBugs修改说明》 FindBugs是一款开源的静态代码分析工具,它主要用于检测Java代码中的潜在问题,包括可能的错误、不好的编程习惯以及性能优化建议等。这款工具通过对代码进行深度分析,帮助开发者在运行时之前...

    findbugs使用说明

    FindBugs 使用说明 FindBugs 是一个静态分析工具,用于检查 Java 字节码,查找可能存在的 bug 和代码缺陷。它可以检查未关闭的数据库连接、缺少必要的 null 检查、多余的 null 检查、多余的 if 后置条件、相同的...

    Findbugs Checkstyle Jupiter使用说明

    FindBugs Checkstyle Jupiter 使用说明 FindBugs 是一个静态代码分析工具,用于检测 Java 代码中的错误和不良编程实践。它可以帮助开发者在编码过程中发现问题,从而提高代码质量。 FindBugs 使用说明 FindBugs ...

    Findbugs安装及使用说明

    通过以上步骤,你可以有效地利用FindBugs来提升代码质量,避免潜在的运行时错误,并进行性能优化。在实际开发过程中,根据项目需求和团队规范,适时调整FindBugs的设置,使其更好地服务于代码质量管理。

    FindBugs安装和使用说明

    FindBugs的一些错误模式检测器依赖于类层次信息,因此提供完整的类层次结构将使分析结果更准确。 3. 运行分析:添加所有档案、目录和源代码目录后,点击“完成”按钮开始分析Jar文件中的类。分析可能需要一些时间,...

    FindBugs安装及使用说明

    ### FindBugs安装及使用说明 #### 一、FindBugs简介 FindBugs是一款针对Java代码进行静态分析的强大工具,旨在帮助开发人员快速定位并修复潜在的代码问题。通过深度扫描源代码,FindBugs能够检测出各种常见的编程...

    findbugs-3.0.1.zip

    FindBugs是一款广受欢迎的开源工具,用于检测Java代码中的潜在错误和不良编程习惯。在"findbugs-3.0.1.zip"这个压缩包中,包含了FindBugs 3.0.1版本的详细资料和软件本身。本文将深入探讨FindBugs的功能、工作原理...

Global site tag (gtag.js) - Google Analytics