如何在不重新打包的情况下高效调试 find-sec-bugs 新增检测器

聖光之護

聖光之護

2026-07-11

230人浏览

原创

如何在不重新打包的情况下高效调试 find-sec-bugs 新增检测器

本文介绍如何在 intellij idea 等 ide 中直接调试 find-sec-bugs 的自定义检测器,无需反复构建 jar 包,通过单元测试驱动和远程调试两种方式实现快速开发与问题定位。

本文介绍如何在 intellij idea 等 ide 中直接调试 find-sec-bugs 的自定义检测器,无需反复构建 jar 包,通过单元测试驱动和远程调试两种方式实现快速开发与问题定位。

在 find-sec-bugs 项目中开发新检测器(Detector)时,完全不必每次修改后都执行 mvn package 并手动替换 CLI 中的 plugins.jar——这种做法低效且易出错。推荐采用以下两种高效、可复现的调试方式:

✅ 方式一:通过单元测试本地调试(推荐首选)

find-sec-bugs 官方为每个检测器均提供了标准的 JUnit 测试用例(如 FileUploadFilenameDetectorTest),其核心逻辑是:

  • 使用 SpotBugsFramework 加载当前项目中的 FSB 插件类路径;
  • 扫描指定的测试字节码(.class 或 .jar);
  • 断言是否触发预期的漏洞告警(BugInstance)。

你只需:

  1. 在 findsecbugs-plugin/src/test/java/ 下新建测试类(建议命名如 YourCustomDetectorTest.java);
  2. 复制已有测试结构,将待测类路径指向你修改/新增的 Detector 类;
  3. 在测试方法中设置断点 → 右键 → Debug 'YourCustomDetectorTest',IDE 将直接进入你的 Detector visitMethod()、sawOpcode() 等生命周期方法。

示例测试片段(简化版):

Amazon Quick
Amazon Quick

亚马逊推出的生成式桌面AI智能体工作台

下载
@Test
public void testYourDetector() throws Exception {
    String[] files = {"path/to/YourVulnerableClass.class"};
    BugReporter reporter = new SelfCheckingBugReporter();

    // 自动加载当前模块中所有 Detector(含你刚写的)
    SpotBugsFramework.runAnalysis(files, reporter, 
        new Class>[]{YourCustomDetector.class});

    assertEquals(1, reporter.getBugCount()); // 断言触发一条告警
}

⚠️ 注意事项:确保 Maven 依赖已正确导入(尤其是 spotbugs, findsecbugs-plugin),且测试运行时使用 "Use classpath of module: findsecbugs-plugin"(IDEA 中右键测试 → Run Configurations → Use classpath of module)。

? 方式二:远程调试 CLI(适用于真实场景验证)

当需验证 Detector 在完整 CLI 流程中的行为(如多 JAR 分析、参数传递、报告生成等),可启用 JVM 远程调试:

  1. 修改 cli/findsecbugs.sh(Linux/macOS)或 cli/findsecbugs.bat(Windows):
    • 在 java 命令行中添加 JVM 参数(插入到 -jar 之前):
      -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=127.0.0.1:8000
  2. 启动 CLI(例如 ./findsecbugs.sh -textui -progress -output report.txt target/app.jar);
  3. 在 IDEA 中配置 Remote JVM Debug
    Host: 127.0.0.1,Port: 8000 → 点击 ▶️ 连接;
  4. 在 Detector 源码中设置断点,CLI 执行扫描时将自动命中。

✅ 优势:真实环境复现、支持复杂输入;
⚠️ 注意:suspend=n 表示启动不挂起,若需在 main 入口前断点,请改用 suspend=y 并等待 IDE 连接后再继续。

? 总结

场景 推荐方式 关键优势
快速验证 Detector 逻辑、opcode 解析、bug 报告条件 单元测试本地调试 启动快、断点精准、可自动化回归
验证 CLI 集成、跨类分析、报告输出等端到端行为 CLI 远程调试 环境真实、覆盖完整执行链路

无论哪种方式,均无需重新打包整个项目——只要你的 Detector 类被 IDE 正确编译并纳入测试/运行类路径,即可实时调试。这是 find-sec-bugs 社区推荐的标准开发实践,大幅降低 Java 静态分析插件的入门门槛。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
墨刀AI提示词教学
墨刀AI提示词教学

本合集由PHP中文网精心整理,为您提供全面的墨刀AI提示词教学。内容涵盖高质量原型撰写公式与实操窍门,助您轻松掌握AI设计工具。无论是零基础入门还是进阶技巧,都能让您快速上手,大幅提升产品设计与协作效率。

2026.08.04

8

21

墨刀AI完整入门
墨刀AI完整入门

PHP中文网为您倾力打造墨刀AI保姆级入门指南完整版!本合集从零基础讲起,涵盖AI生成原型、提示词优化、图片转原型及多轮对话等核心功能。无论您是新手还是进阶用户,都能轻松掌握产品设计全流程。快来PHP中文网,一键解锁高效设计技巧,让想法即刻成型!

2026.08.04

5

20

墨刀AI进阶技巧
墨刀AI进阶技巧

本合集由PHP中文网精心整理,为您提供墨刀AI核心进阶策略指南。内容涵盖高效提示词写作、原型智能生成与微调、结构化导图制作及行业分析报告输出等实战技巧。助您轻松掌握AI设计工具,大幅提升产品设计与团队协作效率。

2026.08.04

7

14

火山引擎实名认证失败怎么办
火山引擎实名认证失败怎么办

火山引擎实名认证失败可能与证件信息填写错误、姓名或企业信息不一致、证件照片不清晰、营业执照状态异常、手机号验证失败或审核资料不完整有关。本专题整理个人认证、企业认证、资料上传、审核退回、重新提交和认证不通过的常见处理方法。

2026.08.04

4

10

火山引擎域名备案流程详解
火山引擎域名备案流程详解

火山引擎域名备案适合需要在火山引擎云服务器、对象存储、CDN或网站服务上绑定域名的用户参考。本专题整理备案入口、账号实名认证、备案类型选择、主体信息填写、网站信息提交、资料上传、初审核验、管局审核和备案失败排查,帮助用户完成网站上线前的备案流程。

2026.08.04

0

10

火山引擎DNS解析配置步骤
火山引擎DNS解析配置步骤

使用火山引擎DNS解析网站域名时,需要确认域名已完成管理接入,并正确配置服务器IP、CNAME地址或验证记录。本专题整理域名添加、记录类型选择、TTL设置、解析状态检查、备案和访问测试等流程,适合新手搭建网站时参考。

2026.08.04

2

10

火山引擎对象存储使用教程
火山引擎对象存储使用教程

火山引擎对象存储适合用于网站图片、视频文件、备份数据、静态资源和应用附件管理。本专题整理TOS控制台入口、存储桶创建、地域选择、权限设置、文件上传、访问链接生成、CDN加速、费用查看和常见上传或访问失败问题,帮助用户快速掌握对象存储基础操作。

2026.08.04

1

10

火山引擎云服务器使用教程
火山引擎云服务器使用教程

火山引擎云服务器使用教程适合第一次购买、部署和管理云服务器的用户参考。本专题整理控制台入口、实例创建、地域和配置选择、系统镜像设置、安全组放行、远程连接、网站部署、续费计费和常见连接失败问题,帮助用户快速完成云服务器基础使用流程。

2026.08.04

5

10

火山引擎API Key绑定大模型教程
火山引擎API Key绑定大模型教程

火山引擎API Key怎么绑定大模型适合需要在火山方舟、应用后台、脚本工具或AI编程软件中调用模型的开发者参考。本专题整理控制台服务开通、API Key创建、模型权限检查、模型ID选择、Base URL填写、调用测试和鉴权失败排查,帮助用户完成从密钥到模型调用的配置流程。

2026.08.04

2

10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.4万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 131.8万人学习