代码生成:摆脱开发例行公事
来自IT控股公司T1的DevOps工程师的一篇文章解释了如何在开发生命周期的各个阶段实现代码生成,从简单片段到运行时生成。作者介绍了使用拼接、Jinja2模板以及语法树(AST和CST)来修改现有代码,并讨论了LLM和模型上下文协议(MCP)的未来。文章给出了从代码格式化器开始,并使用OpenAPI-generator和Cookiecutter等工具的实用建议。
这篇文章由IT控股公司T1的DevOps工程师伊万撰写,强调代码生成对于确保代码符合OpenAPI等指定模式至关重要,可防止模式与实现之间出现偏差。作者概述了自动化的级别:IDE片段、开发时生成、通用模块(如API客户端、消息模式)的生成、构建时生成(如嵌入后端URL、许可证密钥)、部署时生成以及运行时生成(用于无代码/低代码环境,例如PyTest)。文中详细介绍了生成器的创建方法:简单的字符串拼接、使用Jinja2进行多语言支持的模板化、以及利用Python中的抽象语法树(AST)重构现有代码,但AST会丢失注释和格式。通过libcst使用具体语法树(CST)可以保留注释和风格,从而实现安全重构。文章还讨论了大型语言模型(LLM)和模型上下文协议(MCP)的潜力,通过赋予模型与代码库交互的工具来减少幻觉,并提到了诸如'oh my pi'之类的智能体。实用建议包括从代码格式化器开始、使用OpenAPI生成器处理服务契约、以及使用Cookiecutter生成微服务模板。结论是,代码生成能扩展规模并清理代码库,但需要正确选择工具。
来源: Habr — хаб ИИ —
原文
