findbugs不过多介绍了,对于这个主题找了一些资料,没有找到一个完整的介绍,要么是介绍怎么写detector,要么就是没有完整的介绍怎么配置生效,下面主要介绍一下怎么配置其生效,至于怎么写这个detector还是有很多资料说明的,不过在些也重复一下。

一、自定义detector

1 ForbidSystemOutClass检测类

packagecom.test.findbugs;importorg.apache.bcel.classfile.Code;importedu.umd.cs.findbugs.BugInstance;importedu.umd.cs.findbugs.BugReporter;importedu.umd.cs.findbugs.bcel.OpcodeStackDetector;public class ForbidSystemOutClass extendsOpcodeStackDetector {privateBugReporter bugReporter;publicForbidSystemOutClass(BugReporter bugReporter) {this.bugReporter =bugReporter;

}

@Overridepublic voidvisit(Code obj) {super.visit(obj);

}

@Overridepublic void sawOpcode(intseen) {if (seen ==GETSTATIC) {if ("java/lang/System".equals(getClassConstantOperand())&& ("out".equals(getNameConstantOperand()) || "error".equals(getNameConstantOperand()))) {

bugReporter.reportBug(new BugInstance("SYSTEM_OUT_ERROR", HIGH_PRIORITY)

.addClassAndMethod(this).addSourceLine(this));

}

}

}

}

View Code

参考:http://blog.csdn.net/franklies/article/details/6830534

https://www.ibm.com/developerworks/cn/java/j-findbug2/

至于里面的一些相关逻辑不在此探讨之内;

2 findbugs.xml

View Code

3 messages.xml

detector decription]]>

short decription

long decription

System.out can't be released, you must delete it.]]>

System.out can't allow

View Code

参考:http://www.warski.org/staticaccess.html,这两个xml文件直接是从这个开源工程里面拿出来修改的

自定义检测规则主要有这三个步骤,写完这三个,剩下的工作就是编译配置;

二、编译配置

主要是编写ant脚本

Builds the Systemout Checker.

View Code

使用ant命令:

ant dist

编译过程如下:

在ant配置脚本中已经默认把生成的testFindBugs.jar包放到findbugs安装目录里面的plugin中,对于自定义的规则,打成jar包后,放在这个plugin目录就会自动生效,而不是像网上介绍的那样放在findbugs.jar包中。

三、检测

Builds the Systemout Checker.

View Code

使用ant命令:

ant findbugs

过程如下:

ok了,可以在工程的bin目录下,看到findbugs检测生成的结果findbugs_result.xml文件,至此整个过程结束,以上只上讲解了一个配置及过程,至于findbugs规则的具体编写以及findbugs.xml、message.xml里面的每个符号代表的意思没有涉及,向findbugs迈出了一步,接下来还是需要更多的时间摸索。

另外怎么在eclipse的插件中配置自定义的规则还是个问题,试过,可以把规则加进来,但检测的时候却没有生效,目前还没有找到原因。

附上demo:

右键保存这张图片到本地,然后把扩展名改成zip,解压就OK了。

java自定义findbugs规则_findbugs自定义规则并配置实现检测相关推荐

  1. element-UI框架使用validate.js的form校验规则(+自定义验证代码)- 应用篇

    文章目录 element-UI除了官方给出的校验规则,还可以自定义(举例如下) 代码示例: 参考文章: element-UI除了官方给出的校验规则,还可以自定义(举例如下) element-UI框架f ...

  2. [js]vee-validate自定义告警信息和自定义规则

    https://vee-validate.logaretm.com/v2/guide/rules.html#date-format-params 本身框架自带很多验证,但是如果想自定义规则或者国际化, ...

  3. [JAVA EE] JPA 查询用法:自定义查询,分页查询

    项目已上传:https://codechina.csdn.net/qq_36286039/javaee 自定义查询 问题:内置的crud功能不满足需求时如何添加自定义查询? 几种自定义查询方法 方法命 ...

  4. java变量的定义有哪些规则_Java变量详解

    Java变量 什么是变量 定义 变量就是在程序运行过程中其值会发生改变的量.变量就是一个可以存储数据的容器. 比如定义学生的平均绩点为GPA这便是一个变量 这个学期GPA为3.7下个学期则可能会变成3 ...

  5. java 实现规则引擎_Java规则引擎 Easy Rules

    1.  Easy Rules 概述 Easy Rules是一个Java规则引擎,灵感来自一篇名为<Should I use a Rules Engine?>的文章 规则引擎就是提供一种可选 ...

  6. java 自定义自增_自定义全局自增ID生成器

    看了网上很多生成自增ID的策略,最终给出的都是雪花算法,leaf算法.但是却没有满足咱们对于自定义生成规则的需求. 在业务上有一部分ID往往是有规则的,比如某个产品的订单号往往是"产品标志+ ...

  7. Java虚拟机JVM学习06 自定义类加载器 父委托机制和命名空间的再讨论

    Java虚拟机JVM学习06 自定义类加载器 父委托机制和命名空间的再讨论 创建用户自定义的类加载器 要创建用户自定义的类加载器,只需要扩展java.lang.ClassLoader类,然后覆盖它的f ...

  8. java自定义jsp标签_Javaweb自定义jsp标签

    自定义标签 用户定义的一种自定义的jsp标记,当一个含有自定义标签的jsp页面被jsp引擎编译成Servlet时,tag标签被转化成了对一个称为标签处理类的对象的操作.于是当jsp页面被jsp引擎转化 ...

  9. 五十八、深入了解 Java 中的注解和自定义注解

    @Author:Runsen @Date:2020/7/9 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...

最新文章

  1. AI 技术发展飞快,高校 AI 教师的知识储备能满足学生旺盛的求知欲吗?
  2. NLP新秀prompt跨界出圈,清华刘知远最新论文将它应用到VLM图像端
  3. 谈中型项目下的编码技巧二
  4. MapReduce基础开发之四参数传递
  5. python 框架和 spring mvc_Django和Spring MVC,该选择哪个框架进行Web开发学习?
  6. 数据中心智能安防新突破:腾讯觅踪亮相DCD
  7. cocos2d-x 中文 乱码问题
  8. python xlrd读取文件报错_python中xlrd库如何实现文件读取?
  9. python 多继承与super使用详解_Python super()方法、多继承以及MRO顺序
  10. [VNC] 远程连接 Xfce4 桌面 tab 键不能自动补全
  11. 挤房工具发布--支持最新版浩方和VS平台
  12. 我的软考高项考试之旅
  13. Python-F.softmax(dim)中dim使用理解
  14. SAP系统常用配置参数设定
  15. 【钉钉考勤打卡】--上传打卡记录
  16. Win10切换Administrator账户
  17. matlab绘四叶玫瑰线,玫瑰线 - calculus的日志 - 网易博客
  18. unittest+tomorrow+BeautifulReport实现自动化测试的多线程
  19. 图书管理系统之读者信息管理实现
  20. 2022-2028年中国保险经纪产业竞争现状及投资前景展望报告

热门文章

  1. 洛谷-P1169 棋盘制作(悬线法)
  2. StreamSets基本使用
  3. c语言mooc gps数据处理的数据_科研成果快报第102期:多GNSS观测数据质量分析软件...
  4. CC2530之点亮LED
  5. 新角度解读C++内联函数的前世今生(上)(详细必看)
  6. 微机接口课设 汽车控制系统 C语言源代码 Proteus 8086
  7. java List截取
  8. 分类目录网和搜索引擎的对比分析
  9. 2018年中国(上海)国际乐器本特历奈特钢琴荣耀参展
  10. PHP的垃圾回收机制-PHP高级面试题+详解