过去几个月, 利用生成式 AI 理解遗留代码库 这一领域取得了显著进展。主流工具如 GitHub Copilot 已被广泛宣传能够帮助现代化改造遗留代码库。类似 Sourcegraph Cody 等工具,也正在让开发者更轻松地导航和理解整个代码库。这些工具综合运用多种生成式 AI 技术提供上下文感知(Context-aware)的帮助,极大地简化了对复杂遗留系统的分析与处理。此外,S3LLM 等专业框架则展示了大语言模型(LLMs)如何有效处理大规模科学计算软件(例如 Fortran 或 Pascal),将 GenAI 强化的代码理解能力推广到传统企业 IT 以外的场景。我们认为,鉴于全球范围内大量的遗留代码,这种技术未来将持续获得更多关注并加速普及。
生成式 AI (GenAI) 和大型语言模型 (LLMs) 能帮助开发人员编写和理解代码。尤其是在处理遗留代码库时,这种帮助显得尤为有用,特别是当文档质量差、过时或具有误导性时。自我们上次讨论此话题以来, 利用生成式 AI 理解遗留代码库 的技术和产品得到了进一步的发展,我们已经成功实践了一些方法,尤其是在帮助大型机现代化改造的逆向工程中。我们使用的一个特别有前景的技术是 retrieval-augmented generation (RAG) 方法,其中信息检索基于代码库的知识图谱。知识图谱可以保留代码库的结构化信息,而这往往超出了 LLM 从文本代码中推导的内容。这对于那些不具备自我描述性和一致性的遗留代码库尤其有帮助。另一个提升代码理解的机会是,图谱可以通过现有的或 AI 生成的文档、外部依赖关系、业务领域知识等内容进一步丰富,从而让 AI 的工作更加轻松。
生成式人工智能(GenAI)和大语言模型(LLMs)可以帮助开发者编写和理解代码。在实际应用中,目前主要体现在较小的代码片段,但更多的产品和技术正在涌现,用于 利用 GenAI 理解遗留代码库 。这在遗留代码库文档记录不完整、或者过时的文档具有误导性时尤其有用。例如,Driver AI 或 bloop 使用了 RAG ,结合了语言智能、代码搜索与 LLMs,以帮助用户在代码库中定位自己的位置。更大的上下文窗口的新兴模型也将帮助这些技术更适配大型代码库。GenAI 对遗留代码的另一个有前景的应用是在大型机(mainframe)现代化领域,这里的瓶颈通常围绕着需要理解现有代码库、并将这种理解转化为现代化项目需求的逆向工程师。这些逆向工程师有了 GenAI 的帮助可以更快地完成工作。