`
cantellow
  • 浏览: 848336 次
  • 性别: Icon_minigender_1
  • 来自: 草帽海贼团
社区版块
存档分类
最新评论

【分享】Findbugs反模式

    博客分类:
  • Java
阅读更多

 

FindBugs解释

FindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。之所以叫做静态分析工具,是因为它在不实际运行程序的情况对软件进行分析。使用findbugs有很多种方式,从 GUI、从命令行、使用 Ant、作为 Eclipse 插件程序和使用 Maven,甚至作为hudson持续集成的插件。

 

findbugs自己定义了一系列的检测器1.3.9版本的检测器有83Bad practice(不好的习惯),133Correctness(正确性),2Experimental(实验性问题),1种 Internationalization(国际化问题),12Malicious code vulnerability(恶意的代码),41Multithreaded correctness(线程问题),27Performance(性能问题),9Security(安全性问题),62Dodgy(狡猾的问题)。

 

可能大家更感兴趣的是它的工作原理,我们可以首先看一下eclipse插件下面的lib包:

其中的bcel.jarasm-xx.jar都是对java字节码(通过命令javap  -c  类名 反编译class文件)的操作,原理都是在类被装载虚拟机之前,动态修改类(可以直接创造类,也就是说不经过java编译器那一步),bcelapache下面的一个开源项目,而asm是由法国某电信公司的研发工程师负责。

====================================================================================

在公司内部推广findbugs的时候遇到一些阻力,其中有一个很重要的原因就是很多人认为黄色臭虫没有多大用处,为此我历时一个月对公司内部的一些代码进行了解释,大约有50多种,没用弄完,因为工作量实在太大,有些bug我自己都要想半天,还要查找很多资料才能说服别人,文档详见附件,当然都是去掉了公司业务和逻辑的,希望分享出来对有些人有用。

 

另外,代码质量和重构的分享:

【分享】部门内部《代码质量》培训

【分享】部门内部《重构》培训

  • 大小: 4.4 KB
13
1
分享到:
评论
6 楼 yuxiaokill 2011-12-20  
很好啊,难得的好东西
5 楼 scholers 2011-05-30  
支持啊,
我也是很希望用FINDEBUGS作为一个检查工具的,
并且希望能够放入持续集成的平台,作为一个必须的环节。
4 楼 cantellow 2011-05-21  
skzr.org 写道
哈哈,findbug我也用在一个已经处于维护阶段的项目中输出report
结果发现有3千多个地方需要注意,我的天,你说如果要人去修改1个需要5min
那么总工时需要:250
需要31人天,如果考虑不能满负荷和效率问题,实际上估计需要31×1.2=37.2人天
投入4人,顺利的话需2周搞定 ^ ^

成本还是挺高的

那还是要对findbugs找出的问题自己分一下类,一眼能看出的问题并且严重的就强制马上改。
3 楼 skzr.org 2011-05-21  
哈哈,findbug我也用在一个已经处于维护阶段的项目中输出report
结果发现有3千多个地方需要注意,我的天,你说如果要人去修改1个需要5min
那么总工时需要:250
需要31人天,如果考虑不能满负荷和效率问题,实际上估计需要31×1.2=37.2人天
投入4人,顺利的话需2周搞定 ^ ^

成本还是挺高的
2 楼 cantellow 2011-05-20  
sunxiaofeng1011 写道
写得不错,已经推荐给同事了,手滑这个词很经典,很有喜感

不错就猛击“顶”,嘿嘿
1 楼 sunxiaofeng1011 2011-05-20  
写得不错,已经推荐给同事了,手滑这个词很经典,很有喜感

相关推荐

    Findbugs反模式

    《FindBugs反模式》 FindBugs是一款强大的静态代码分析工具,专用于检测Java代码中的潜在错误和不良编程实践。这款工具通过分析字节码而非源代码,能够发现多种类型的常见问题,包括空指针异常、未初始化的变量、...

    FindBugs 缺陷模式

    FindBugs的特色在于其“缺陷模式”(Bug Pattern),这些模式是常见编程错误的标准化表示,可以帮助开发者识别并修复潜在的问题。下面将详细讨论FindBugs的各个方面。 一、概要 FindBugs是一个无需运行程序的静态分析...

    findbugs 1.3.9 findbugs 1.3.9

    1. **广泛覆盖的错误类型**:FindBugs 1.3.9能够检测到多种类型的潜在问题,包括空指针异常、资源泄漏、并发问题、不安全的类型转换等,这些都基于其内置的大量bug模式。 2. **高精度报告**:与其他静态分析工具...

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

    标题中的"findbugs压缩包+findbugs.jar+findbugs-ant.jar"指的是该压缩文件内包含FindBugs的主要库文件`findbugs.jar`,这是执行FindBugs分析的核心组件,它包含了各种检测规则和算法。另外,`findbugs-ant.jar`则是...

    findbugs-3.0.1.zip

    FindBugs首先将Java字节码转换为内部数据结构,然后使用一组复杂的静态分析算法扫描这些数据结构,寻找可能的问题模式。由于是静态分析,FindBugs可以在不运行代码的情况下进行检查,避免了因运行时环境差异导致的...

    findbugs3.0.2插件 myeclipse

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

    findbugs工具测试java实验报告

    FindBugs是由University of Maryland开发的一款开源工具,它主要针对Java字节码进行分析,识别出可能存在的错误模式。这些错误模式包括但不限于空指针异常、资源未关闭、并发问题、可能的算术溢出等。FindBugs的工作...

    findbugs.jar+findbugs-ant.jar

    FindBugs是一款非常知名的静态代码分析工具,它主要用于在Java代码中发现潜在的错误和缺陷。Eclipse是一款广泛使用的集成开发环境(IDE),对于Java开发者来说尤其重要。将FindBugs集成到Eclipse中,可以帮助开发者...

    findbugs最新源代码20081008版本的

    在20081008版本中,FindBugs包含了丰富的Bug模式库,这些模式涵盖了常见的编程错误,如空指针异常、资源未关闭、并发问题等。 源代码的结构分析是理解FindBugs的关键。在提供的压缩包中,"eclipsePlugin-1.3.6....

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

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

    findbugs2.0插件包

    - **增强的错误检测**:FindBugs 2.0相比早期版本增加了更多的错误模式,可以检测出更多类型的潜在问题。 - **更高的准确性**:通过对字节码的深度分析,减少了误报的可能性,提高了报告的准确性。 - **性能优化*...

    FindBugs安装及配置使用说明

    通过检查类文件和JAR包,FindBugs与一系列预定义的缺陷模式进行匹配,从而找出可能存在的问题。这种静态分析方法无需实际运行程序,可以提前识别出许多潜在的错误。 **安装FindBugs插件** 在Eclipse环境中安装...

    findbugs最新版本 1.3.8

    它能够识别出近400种不同类型的错误模式,这些模式被分类为不同的警告级别,包括"可疑"、"可能"和"肯定"。 2. **集成开发环境(IDE)支持**:edu.umd.cs.findbugs.plugin.eclipse_1.3.8.20090315这个文件名表明该...

    findbugs-1.3.9.rar

    FindBugs的工作原理是通过分析字节码,识别出可能的错误模式。例如,它会检查是否存在未初始化的字段、是否有可能抛出但未被捕获的异常、是否有多余的对象创建等。每个检测到的问题都被赋予一个等级,如"Error"、...

    findBugs学习总结

    在提供的"findbugs_bug描述的中英文对照.xls"文件中,你可以找到所有bug模式的详细解释,包括它们的英文名称、中文翻译以及可能出现的问题类型和解决方案。这对于理解和解决findBugs报告中的问题非常有帮助。 **与...

    findbugs与ant结合

    FindBugs 和 Apache Ant 都是Java开发中常用的工具,前者是用于检测代码质量问题的静态分析工具,后者则是一个构建自动化工具。本文将详细介绍如何将 FindBugs 与 Ant 结合,以生成 HTML 报告,帮助开发者更好地理解...

    FindBugs完全使用手册

    3. **使用模式**:FindBugs通常采用访问者模式(Visitor Pattern)进行分析,这种设计模式使得工具能够在不影响原有代码结构的基础上添加新的分析逻辑。 #### 三、FindBugs的安装与配置 FindBugs的最新版本为1.3.9,...

    findbugs(3.01).zip

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

Global site tag (gtag.js) - Google Analytics