前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于抽象语法树AST和git webhook的代码即文档方案

基于抽象语法树AST和git webhook的代码即文档方案

原创
作者头像
mooner
发布2022-12-04 18:56:44
6040
发布2022-12-04 18:56:44
举报
文章被收录于专栏:记录和分享记录和分享

一、导语

在日常web开发中,接口文档的撰写和维护必不可少。开发人员日常面对的挑战就是撰写接口文档的耗时及维护更新的费心费力。本文介绍一种通过对代码的抽象语法树AST解析,来从代码本身获取接口的定义从而渲染出接口文档;再配合git的分支管理和webhook来实现随着代码的变更更新文档及按照git的分支维护历史版本的文档,并订阅文档的变化。此外基于获取到的文档元数据可为前端代码结构体自动生成、安全扫描、测试代码等提供自动对接能力。

二、通过抽象语法树AST解析代码获取接口定义

本节以java代码为例介绍解析AST的核心原理,如下图所示。

descript
descript

如上图所示,对于写好的原始java代码,从其对应的AST中获取包名+类名+字段名组合的同项目内全局唯一的标识,附加业务信息(如类型、注解、注释等)记录到数据库。接口查看的时候按照同项目、同包、同类的父子关系检索出一个接口涉及的所有信息,渲染出如下所示的接口文档。

descript
descript

这样开发人员只需安心写代码和维护代码中的注解注释等辅助说明信息,接口文档即会随着代码的变更更新,无需专门抽出经历撰写和维护接口文档了。

三、通过git webhook获取代码变更和版本维护

上一节介绍了核心原理,本节介绍下业务实现。现在代码托管使用git比较多,git提供了webhook能力,通过webhook能力可以及时获取到代码的提交及变更的代码。开发人员提交代码后,文档平台获取到变更的文件,通过获取代码文件的AST更新数据库中的记录,即实现了接口文档的及时更新。具体流程如下:

descript
descript

四、扩展

基于获取到的文档元数据,还可进行如下扩展。

  1. 主动提醒文档的变更信息,让对接方及时了解变更;
  2. 提供mock服务,可先定义接口契约即可联调;
  3. 接口版本间差异对比,直观了解变化;
  4. 对接测试用例平台,提供契约,减少测试人员重复输入;
  5. 前端等类sdk生成,减少开发人员手动录入请求和响应接口的时间。

欢迎沟通交流。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、导语
  • 二、通过抽象语法树AST解析代码获取接口定义
  • 三、通过git webhook获取代码变更和版本维护
  • 四、扩展
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com