【分享】Findbugs反模式

 

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包:

【分享】Findbugs反模式

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

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

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

 

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

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

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

你可能感兴趣的:(eclipse,maven,虚拟机,ant,电信)