本期案例由lzmoonlight贡献。

近日,来自深信服的研发lzmoonlight,利用AI辅助编程工具Costrict定位多平台的采集器Pagent的句柄泄露问题,将原本人工操作需要2-3天的代码审查工作,压缩到只需要2小时内完成。

他表示,Costrict检查了所有相关的句柄操作,没有遗漏任何潜在风险点,并准确识别出了最严重的进程句柄处理问题,修复人工审查容易忽略的细节。

来看他的分享。

1. 案例背景

深信服桌面云产品研发部维护的pagent项目是一个多平台的系统监控采集器,用于采集CPU、内存、进程、线程等系统数据并上报到iom平台。最近内部在Windows平台上发现了严重的句柄泄漏问题,导致进程长时间运行后句柄数量持续增长,最终影响系统性能和稳定性。

传统的排查方式需要开发人员手动分析大量代码,重点关注Windows API调用(如windows.CloseHandle等),耗时耗力且容易遗漏。面对这个复杂的问题,我们尝试借助AI辅助编程工具Costrict来提高排查效率。

2. 案例实操

第一步:提供项目背景和问题描述

首先,我给AI提供了一段背景信息:

这个项目是一个多平台的采集器pagent,用来采集cpu、内存,进程,线程等数据,上报到iom平台,但是这个进程在运行时发现了一些句柄泄露问题,尤其是windows端,泄漏非常明显,帮我分析代码,看看哪里有可能出现句柄泄漏。

第二步:引导AI了解项目结构 

其次,我让AI查看项目根目录,了解整体结构:

<list_files> <path>.</path> <recursive>false</recursive> </list_files>
第三步:逐步深入分析关键代码 

接下来,引导AI从主程序开始,逐步分析Windows相关的关键模块:

查看主程序文件,了解Windows特定的初始化和清理逻辑分析Windows采集器的核心文件重点查看DLL相关的初始化和清理代码深入分析进程信息采集相关的代码检查性能计数器相关的句柄管理
第四步:提供具体的分析方向 

当我发现AI过于关注panic处理时,我及时调整了分析重点:

主要关注一下windows.CloseHandle的时候,是不是会有些句柄没有释放,pannic的情况比较极端,不用过多考虑。

第五步:让AI重点关注具体的技术细节 

我引导AI重点关注以下几个方面的句柄操作:

  • windows.OpenProcess 和 windows.CloseHandle 的配对使用

  • PDH性能计数器句柄的创建和释放

  • 进程快照句柄的管理

  • 事件句柄和注册表句柄的处理

3. 案例效果

1) 全面的问题识别

AI成功识别出了6个主要的句柄泄漏风险点,包括:

  • 进程快照句柄泄漏

  • 进程句柄处理不当(最严重)

  • PDH查询句柄泄漏(高风险)

  • 证书验证句柄泄漏

  • 事件句柄泄漏

  • 注册表句柄泄漏

2) 具体的代码定位

AI不仅发现了问题,还精确定位到了具体的代码行和函数,例如:

  • agent/collector/windows/process.go:484-494 中的进程句柄处理

  • agent/collector/windows/process.go:617-668 中的PDH查询句柄管理

  • common/utils/utils_windows.go:295-300 中的事件句柄处理

3) 实用的修复建议

AI提供了具体的代码修复示例,包括:

  • 句柄有效性检查机制

  • 改进的defer使用方式

  • 错误处理优化策略

相比之前实现了效果的大幅提升。

  • 效率提升:原本需要2-3天的代码审查工作,在2小时内完成;

  • 覆盖度提升:AI检查了所有相关的句柄操作,没有遗漏任何潜在风险点;

  • 准确性提升:AI准确识别出了最严重的进程句柄处理问题,这是人工审查容易忽略的细节。

4. 经验总结

这次AI辅助编程的实践让我深刻体会到,AI工具在代码审查和问题排查方面具有明显优势。它能够快速理解项目结构,系统性分析代码逻辑,准确识别潜在问题,并提供实用的解决方案。

关键的成功因素包括:

  • 清晰的问题描述:明确告诉AI要解决什么问题;

  • 逐步引导:从整体到局部,引导AI深入分析;

  • 及时调整:根据AI的分析结果,及时调整分析重点;

  • 技术细节聚焦:引导AI关注具体的技术实现细节。

AI并不是要替代开发人员,而是成为我们强大的助手。它能够处理大量重复性的分析工作,让开发人员能够专注于更复杂的设计和架构问题。希望大家在实际工作中多尝试使用AI辅助编程工具,把它融入到日常的开发流程中。


Costrict是一款开源、免费的IDE插件,具备代码生成、代码审查、代码补全等能力,支持本地化部署。如果你也有好的使用案例,欢迎分享出来,让我们一起探索AI辅助编程的最佳实践,共同提升AI编程的开发效率和代码质量。我们会赠送额外的600 Credits,供你体验Claude、Gemini等更加丰富的模型资源~

欢迎大家收藏、体验、保持跟进,并给我们提供宝贵的建议~

🔥体验方式:打开Visual Studio Code,插件市场搜索“Costrict”并安装。
开源地址:https://github.com/zgsm-ai/costrict
👉官网:https://costrict.ai/
✅投稿
:邮件至zgsm@sangfor.com.cn或添加下方小助手投稿

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐