在现代软件开发过程中,项目逐渐庞大复杂,遗留代码和过时功能的清理显得尤为重要。如何高效安全地删除无用代码,成为提升团队协作速度和代码质量的必备技能。近年来,生成式人工智能(GenAI)的兴起为这一难题提供了新的解决思路。本文将详细介绍如何借助谷歌的Gemini 2.0以及少量Python脚本,实现对大型项目中上百个构建文件中的代码自动删除,从而显著简化维护工作,提高项目运行效率。 背景介绍 在软件项目中,构建系统扮演着至关重要的角色。以Pigweed项目为例,此前其文档构建依赖于GN构建系统,随后迁移至Bazel构建工具以获得更好的性能和可维护性。
尽管迁移完成且Bazel构建稳定运行,但遗留的GN构建文件仍需同时维护,这导致开发者在文档构建等任务上需要兼顾两个体系,影响了效率和专注度。因此,彻底停用旧GN文档构建成为提升团队效率的必然选择。 任务重点是从所有BUILD.gn文件中删除与文档生成相关的功能代码,即所谓的docgen特性,包括关键词如pw_docgen、pw_doc_group等。传统的正则表达式自动化虽具备一定可行性,但对复杂结构和语法变动的处理存在局限。为此,尝试利用Gemini 2.0的自然语言理解和生成能力,通过设计合理提示语(prompt),辅助Python脚本自动化处理这一批量化编辑任务。 自动化思路与流程 整个自动化流程分为几个关键步骤。
首先,遍历项目源代码目录,通过Python脚本收集所有文件路径,并筛选出扩展名为BUILD.gn的构建文件。进一步通过简单的文件内容关键字检测,过滤出包含指定docgen关键字的文件,明确处理目标范围。 接着,针对筛选出的每个目标文件,结合预先设计好的文本指令(prompt)传递给Gemini 2.0的生成模型接口,请求生成删除docgen相关代码后的文件内容。生成结果再经过Python脚本清理格式(如去除多余的反引号标记),并覆盖写回原文件,实现自动化代码删除。此方法兼顾了传统自动化的可靠性和生成式AI的灵活性,解决了单纯使用正则表达式无法精准捕捉代码块的问题。 技术实现细节 Python脚本核心部分主要涉及文件系统操作、Git忽略规则检查以及与Gemini API的交互。
脚本首先利用os.walk收集路径,通过调用git check-ignore命令排除已被Git忽略的文件和目录,确保处理范围精准无冗余。文件筛选函数则依次经过后缀判断和内容关键字匹配以定位docgen代码。 针对每个符合条件的BUILD.gn文件,脚本读取其当前内容,合并包含编辑要求的prompt文本,通过google-genai官方库中Client的模型接口调用,提交给“gemini-2.0-flash”模型。模型依据提示返回剔除相关docgen代码后的完整文件内容。由于模型的输出文本习惯添加Markdown风格的三重反引号标识块,脚本额外处理以清理多余标记,最终写入源文件,实现文件的“智能更新”。 在实际运行中,脚本保持单线程顺序处理文件,以防止API配额限制并简化异常管理。
提示文本设计精细,明确告知该任务仅需删除包含指定关键词的代码,不允许更改其他代码行,确保生成内容高度符合预期。 实战运行效果与挑战 此次自动化运行修改了235个文件,体现了Gemini强大的代码理解和生成能力。令人欣喜的是,修改后项目构建基本无误,显示了AI删除代码的高准确度。如遇到少数小问题,例如个别遗漏的引号或代码块不当修改等,均能通过后续代码格式化工具自动修复,整体合格率高达99%以上。 自动化实现为项目节省了大量人力,原本需要逐个手工编辑文件的繁琐过程被缩减为20分钟脚本运行时间,加快了开发迭代周期。成本方面,API调用花费大约30至40美元,若提前完善脚本逻辑并减少调试次数,则成本可控制在10至20美元区间,仍属经济高效方案。
遇到的挑战包括模型有时过于“谨慎”或“过于自由”地修改代码,比如删除了额外与docgen相关的功能代码(如pw_size_diff),或遗留空白语法块。此后通过及时迭代提示文档和关键词列表,进一步优化了自动删除范围和准确度。插件工具如pw format也帮助团队统一了代码格式,解决了生成过程中新行处理不一致的问题。 Gemini作为混合自动化方案的核心优势 本次实践正体现了“混合自动化”理念的价值,即针对不同问题采用各自最优工具综合应用。项目构建文件的收集、筛选等“机械重复”任务利用传统Python编程完成,保证效率和稳定性;而对实际代码细节理解和改写,则由Gemini基于深度学习语言模型完成,灵活应对复杂语法和上下文依赖。 这一策略充分发挥了生成式AI在代码理解层面的优势,避免了传统规则和模式匹配方法的瓶颈。
未来此方式可以扩展至其他复杂代码重构、迁移和清理任务,使开发者释放更多精力专注于更具创造性的工作。它代表了软件工程朝着智能辅助辅助阶段迈进的重要方向。 总结展望 通过结合Gemini 2.0强大的自然语言与代码理解能力,以及Python在文件处理和自动化脚本中的灵活性,成功实现了对大规模GN构建文件中指定文档生成代码的自动删除,推动了Pigweed项目的构建系统升级和维护简化。实际运行中取得的高准确度、低成本和显著时间节约,为类似大规模遗留代码清理问题提供了可借鉴范例。 未来,随着生成式AI模型的不断迭代和API服务的普及,更多复杂的代码编辑和审查任务将能够自动化完成。开发者应积极探索混合自动化模式,实现人工智能与传统工具的最佳结合,推动软件开发效率和质量的跨越式提升。
随着生态体系完善,智能辅助代码清理、重构、测试乃至设计将成为主流,进一步释放软件开发的创新潜力。