`
cantellow
  • 浏览: 842320 次
  • 性别: 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 缺陷模式FindBugs 缺陷模式FindBugs 缺陷模式FindBugs 缺陷模式

    Findbugs反模式

    NULL 博文链接:https://cantellow.iteye.com/blog/1051248

    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

    findbugs3.0.2插件 myeclipse

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

    findbugs(3.01).zip

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

    findbugs插件 myeclipse

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

    findbugs-annotations-1.3.9-1-API文档-中文版.zip

    赠送jar包:findbugs-annotations-1.3.9-1.jar; 赠送原API文档:findbugs-annotations-1.3.9-1-javadoc.jar; 赠送源代码:findbugs-annotations-1.3.9-1-sources.jar; 赠送Maven依赖信息文件:findbugs-...

    findbugs-3.0.1.ta

    FindBugs是一个匹配编译代码模式,而非使用bug数据库的工具。当提供源代码时,FindBugs还可高亮显示检测出bug的代码行。 在它的3.0.1版本中,FindBugs继续保持着数以百计的bug描述。根据bug的严重程度,FindBugs将...

    代码检测findbugs1.3.4

    插件安装时,我们只需在eclipse根目录下新建一个【links】目录,然后在里面创建【.link】扩展名的文件,在里面写上类似于【path=F:\\IDE\\eclipsePlugin\\findbugs\\findbugs1.3.4】这样的配置信息,不就可以统一...

    findbugs-2.0.1

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

    findbugs.jar包

    findbugs.jar开发findbugs自定义插件

    SonarQube的FindBugs插件sonar-findbugs-plugin.jar,包含FindBugs Security Audit等规则

    SonarQube的FindBugs插件sonar-findbugs-plugin.jar(版本:4.0.1-SNAPSHOT),包含FindBugs Security Audit等规则,可以离线集成到sonarqube。

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

    用于findbugs安装配置,及findbugs结果导出分析文档

    findbugs最新版本 1.3.8

    findbugs最新版本 1.3.8 最新版本。

    findbugs.jar+findbugs-ant.jar

    eclipse安装findbugs后,需要导出html报告需要的两个jar包

    findbugs-1.3.7.zip

    findbugs-1.3.7.zip,findbugs-1.3.7.zip,findbugs-1.3.7.zip

    findbugs最新源代码20081008版本的

    findbugs源代码 有喜欢研究的下载吧

    findbugs,jad反编译插件包

    findbugs,jad反编译插件包,以后可能用的到,先保存。

    findbugs3.0.1

    FindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。 代码质量工具的一个问题是它们容易为...

    findbugs for idea

    findbugs

Global site tag (gtag.js) - Google Analytics