`
plkong
  • 浏览: 176852 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

findbugs 网络收集

 
阅读更多

[hyddd的FindBugs分析记录][M X OBL] Method may fail to clean up stream or resource

[M X OBL] Method may fail to clean up stream or resource [OBL_UNSATISFIED_OBLIGATION]

This method may fail to clean up (close, dispose of) a stream, database object, or other resource requiring an explicit cleanup operation.

In general, if a method opens a stream or other resource, the method should use a try/finally block to ensure that the stream or resource is cleaned up before the method returns.

This bug pattern is essentially the same as the OS_OPEN_STREAM and ODR_OPEN_DATABASE_RESOURCE bug patterns, but is based on a different (and hopefully better) static analysis technique. We are interested is getting feedback about the usefulness of this bug pattern. To send feedback, either:

In particular, the false-positive suppression heuristics for this bug pattern have not been extensively tuned, so reports about false positives are helpful to us.

See Weimer and Necula, Finding and Preventing Run-Time Error Handling Mistakes , for a description of the analysis technique.

 

这个BUG想说明的是:有些资源打开了,但在函数结束的时候却没有关闭。比如:数据库连接......

虽然JAVA有垃圾回收机制,但是,自己打开的资源需要自己手动关闭,否则有可能直到程序退出,JRE才会清理你打开的资源。这里FindBugs建议在try/finally里面关闭打开的资源,在关闭之前,还要判断资源是否为Null,或者再加一层异常捕获处理噢~

以下是一些可能关闭资源失败的例子:

-----------------------------------------------情况1-----------------------------------------

 

复制代码
//
FileOutputStream fs  =   null ;
try {
  fs 
=   new  FileOutputStream(clearTableFile);
  fs.close();    
// 当出异常时候fs关闭失败,所以应该在finally中关闭
}
catch ( ){
//
}
复制代码

-----------------------------------------------情况2-----------------------------------------

 

复制代码
//
Properties props  =   new  Properties();
try{
  props.store(
new  FileOutputStream(configFile), configFile);   // new FileOutputStream(configFile)没有释放。
}
catch( ){
  //
}
复制代码

-----------------------------------------------情况3-----------------------------------------

 

  //
  FileOutputStream fs  =   new  FileOutputStream(clearTableFile);
  //     (里没有做异常处理,如果中间出异常了,异常会抛往上层,这时fs就没能释放了。
  fs.close();    
  //


http://www.ibm.com/developerworks/cn/java/j-dyn0414/index.html

http://bcel.sourceforge.net/docs/index.html

http://findbugs.sourceforge.net/api/edu/umd/cs/findbugs/ba/BlockType.html

http://code.google.com/p/findbugs/wiki/DetectorPluginTutorial

http://www.ibm.com/developerworks/java/library/j-findbug1/#resources
分享到:
评论

相关推荐

    网络上搜集的Findbugs在Ant下的配置方法

    **Findbugs在Ant下的配置方法** FindBugs是一款开源的静态代码分析工具,主要用于检测Java代码中的潜在错误、坏味道和安全漏洞。它通过分析字节码而非源代码,能够发现许多编译器无法捕获的问题。在Ant构建环境中...

    国内SRC漏洞挖掘技巧与经验分享

    通过静态代码分析工具,如PMD、FindBugs,可以自动检查出一些常见的编程错误。人工审计则更注重逻辑层面的漏洞,如权限控制、输入验证等。 4. **Web应用漏洞**:国内SRC中,Web应用漏洞占比较大。SQL注入、XSS跨站...

    藏经阁-手机卫士性能优化方案.pdf

    这包括使用埋点收集信息,对常规性能如电量消耗、网络交互进行监控。同时,文档提到了观察者工具和性能分析工具,例如AspectJ重写器,它是一种基于Java的面向切面编程工具,用于在编译时期静态植入代码,以收集运行...

    创业公司移动测试体系,非常详细的移动测试点

    - **数据分析工具**:如Kafka+HDFS+ImpalaSQL+Spark+Hue等,用于收集、存储、处理和展示大量的测试数据。 - **测试报告生成**:通过测试工具自动生成详尽的测试报告,包括覆盖率统计、缺陷列表等。 #### 第三方测试...

    Lab-5-1160300314-朱明彦-Report1

    - **CheckStyle与FindBugs的比较**:两者都能提升代码质量,但CheckStyle侧重于风格和格式,而FindBugs专注于找出可能导致运行时错误的问题。 2. **Java I/O**: - **多种I/O实现方式**:Java提供了多种I/O实现,...

    andr 测试用测试用

    10. **崩溃日志分析**:当应用出现错误时,收集并分析崩溃日志有助于定位问题。Firebase Crashlytics和Google Play Console的崩溃报告功能是常用的分析工具。 文件名为“android核心分析”可能包含对Android系统...

    java 性能和系统软件

    如JaCoCo用于代码覆盖率测试,FindBugs和SonarQube帮助检测潜在的代码问题,而JMeter和 Gatling则用于压力测试,确保应用在高负载下仍能稳定运行。 综上所述,Java性能优化涵盖了JVM调优、代码编写、系统配置、并发...

    手机卫士性能演进历程-刘刚

    - **FindBugs**:一种Java程序错误检测工具,可以检测出代码中可能存在的bug,并提供相应的解决方案。 - 可以配置过滤器来排除不必要的警告。 - 结合插件化框架,实现更高效的代码质量控制。 2. **代码红线和安全...

    AttackDetection

    通过工具如FindBugs、PMD、Checkstyle进行静态代码分析,查找潜在的安全漏洞和不良编程习惯。 六、持续监控与响应 1. Zabbix、Nagios等监控工具可实时监控系统性能和异常事件,及时报警。 2. 配合SIEM(安全信息...

    java开发测试

    4.IO流:用于读写文件、网络通信等,包括字节流、字符流、对象流等。 5. 多线程:Java支持多线程编程,可以并发执行任务,提高程序效率。 二、开发工具 1.Eclipse或IntelliJ IDEA:主流的Java集成开发环境,提供...

    Android-Crash-:Android程序Crash时的异常上报

    4. **本地日志存储**:在异常发生时,除了向服务器发送报告,还可以选择将关键的日志信息存储在设备本地,这样即使在无网络连接的情况下,当网络恢复时也能上传这些信息。 5. **用户反馈**:添加用户反馈机制,允许...

    UnCaught-Exception:Android中未捕获的异常。 (很遗憾,应用已关闭)错误处理程序

    - 通过编写单元测试来验证代码的正确性,以及使用静态代码分析工具(如FindBugs、Lint)找出潜在的问题,可以在开发阶段发现并修复异常。 8. **异常分类与处理策略** - 不同类型的异常可能需要不同的处理策略。...

    BEA_WebLogic平台下J2EE调优攻略

    针对不同的操作系统(如HP-UX、Solaris、AIX、Linux和Windows),采取相应的调优措施,如调整文件描述符数量、网络缓冲区大小等。 #### 第五章 性能监控和性能分析 ##### 5.1 性能瓶颈 识别系统中的性能瓶颈,并...

    awesome-java-security:令人敬畏的Java安全资源:sunglasses::hot_beverage::locked_with_key:

    "awesome-java-security"是一个收集了大量与Java安全相关的优秀资源的项目,旨在帮助开发者们更好地理解和实践Java安全。该项目包含了各种静态分析工具、安全测试方法以及安全相关的工具集合,为Java开发者提供了一...

    test-android-app:测试安卓项目

    9. **代码质量检查**:静态代码分析工具,如FindBugs、PMD和Checkstyle,可以帮助开发者在编码阶段就发现潜在的问题,提高代码质量。 10. **崩溃日志分析**:在应用运行时,可以通过Crashlytics或Firebase Crash ...

    IDEA中Gradle学习指南.pdf

    为了提高构建速度以及解决访问国外源可能存在的网络问题,通常会更改Gradle的镜像源为国内镜像源。具体步骤是在`GRADLE_USER_HOME`目录下创建一个名为`init.gradle`的文件,并在其中配置新的镜像源地址。例如,可以...

    非常好的软件测试PPT资料

    Beta 测试则是面向外部用户的测试,主要目的是收集用户反馈。 - **目的**: Alpha 测试旨在尽早发现问题;Beta 测试旨在获取真实用户的使用反馈。 #### 2.5 系统测试 **2.5.1 恢复测试** - **定义**: 测试软件在...

Global site tag (gtag.js) - Google Analytics