如何无需重新打包项目调试find-sec-bugs新检测器及在IDEA中调试?
关于Find-Sec-Bugs新增检测器的调试与开发问题解答
1. 新增检测器时必须打包替换findsecbugs-cli中的plugins.jar吗?
不用每次都做这种繁琐操作。Find-Sec-Bugs基于FindBugs的插件体系,你完全可以在本地开发环境中直接加载自己的检测器代码,不需要反复打包替换到cli的plugins.jar里。
2. 能否直接在IDEA中调试自己编写的源代码?
当然可以,具体步骤如下:
- 把Find-Sec-Bugs的源码导入IDEA,它是Maven管理的项目,导入后会自动处理依赖。
- 新建你的检测器类,继承
BaseDetector或对应功能的父类,实现核心的detect方法。 - 配置Run/Debug Configuration:选择Java Application,主类指定为
edu.umd.cs.findbugs.Main(这是FindBugs的主入口,Find-Sec-Bugs作为插件运行在它之上)。然后在VM参数里添加-Dfindbugs.plugin.loadpath=你的检测器模块的编译输出目录,或者直接把你的检测器模块添加到项目依赖中,确保FindBugs能加载到你的代码。 - 设置断点后启动调试模式,就能直接在IDEA里调试自己的检测器代码了。
3. 如何快速调试和修改代码?
- 开启IDEA自动编译:打开
Settings -> Build, Execution, Deployment -> Compiler,勾选Build project automatically。在Debug模式下修改代码后,按Ctrl+F9(Mac为Cmd+F9)重新编译,大部分小改动不需要重启调试进程,FindBugs会重新加载插件类。 - 准备小型测试项目:写一个包含你要检测的漏洞场景的小型Java项目,每次调试都用这个项目作为分析目标,比分析大型项目快得多,能快速看到检测器的效果。
- 编写单元测试:给你的检测器写单元测试,继承
DetectorTestCase,在测试方法里指定测试类和预期触发的bug模式。每次修改代码后跑单元测试就能快速验证逻辑,也可以直接调试单元测试,定位问题更高效。
内容的提问来源于stack exchange,提问作者timer 9527
相关产品推荐
相关产品推荐

