×

3天代码审查工作现在只需2小时!用Costrict告别加班
  

Costrict 1308

{{ttag.title}}
本帖最后由 Costrict 于 2025-9-2 17:44 编辑

本期案例由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查看项目根目录,了解整体结构:
  1. <list_files> <path>.</path> <recursive>false</recursive> </list_files>
复制代码
第三步:逐步深入分析关键代码
接下来,引导AI从主程序开始,逐步分析Windows相关的关键模块:
  1. 查看主程序文件,了解Windows特定的初始化和清理逻辑
  2. 分析Windows采集器的核心文件
  3. 重点查看DLL相关的初始化和清理代码
  4. 深入分析进程信息采集相关的代码
  5. 检查性能计数器相关的句柄管理
复制代码
第四步:提供具体的分析方向
当我发现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等更加丰富的模型资源~
欢迎大家收藏、体验、保持跟进,并给我们提供宝贵的建议~

打赏鼓励作者,期待更多好文!

打赏
暂无人打赏

166087 发表于 2025-9-6 11:17
  
好文章,学习学习有助于工作
发表新帖
热门标签
全部标签>
2025年技术争霸赛
GIF动图学习
标准化排查
每日一问
产品连连看
功能体验
新版本体验
纪元平台
高手请过招
每日一记
排障笔记本
网络基础知识
社区新周刊
排障那些事
【 社区to talk】
信服课堂视频
技术圆桌
原创分享
2023技术争霸赛专题
平台使用
每周精选
2024年技术争霸赛
安全效果
畅聊IT
答题自测
专家问答
技术笔记
在线直播
MVP
安装部署配置
升级
安全攻防
上网策略
测试报告
日志审计
问题分析处理
流量管理
运维工具
用户认证
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
产品预警公告
玩转零信任
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
卧龙计划
华北区拉练
天逸直播
以战代练
秒懂零信任
技术晨报
技术盲盒
山东区技术晨报
文档捉虫
齐鲁TV
华北区交付直播
北京区每日一练
场景专题
故障笔记
西北区每日一问
升级&主动服务
高频问题集锦
POC测试案例
全能先锋系列
云化安全能力
专家说
热门活动
产品动态
行业实践
产品解析
关键解决方案

本版版主

8
7
2

发帖

粉丝

关注

2
5
0

发帖

粉丝

关注

0
1
0

发帖

粉丝

关注

36
16
1

发帖

粉丝

关注

1
1
0

发帖

粉丝

关注

本版达人