科技诗刻|阿里巴巴智能化代码平台的探索与实践(节选)

2020年6月13日 , 在2020阿里巴巴研发效能峰会''架构设计与代码智能专场''中阿里巴巴高级技术专家张玉明(玄坛)发表题为《阿里巴巴智能化代码平台的探索与实践》的主题演讲 , 详细介绍了阿里巴巴打造智能化代码管理平台的起因、技术难点和解决思路以及应用案例 , 并发布云效智能研发助手''云豆'' 。 本文节选自玄坛的分享 , 为方便开发者阅读 , 删除''背景''介绍部分 , 将集中讲解云效代码管理平台中智能化技术的应用以及实现原理 。
人工智能赋能开发者解决软件研发问题
作为一名开发者 , 在日常工作中会遇到哪些问题?主要有以下四点:需求不明确或需求经常变动;缺陷难发现:在开发的代码中经常隐藏难以发现的BUG;编码效率低:编码效率不够高 , 没办法合理安排编码时间;线上问题难定位 。
有没有解决以上问题的灵丹妙药呢?云效团队给出的解法是''工具+数据+智能'' 。 其实我们每天在使用的云效代码管理平台、钉钉等都是非常好用的工具 。 在这些工具基础之上 , 结合大数据、智能化手段是否可以在代码编写提效、代码质量、安全提升方面做一些探索呢?
科技诗刻|阿里巴巴智能化代码平台的探索与实践(节选)
文章图片
首先看一下我们在''大数据''方面是如何做的 。 在阿里巴巴集团内部的代码管理平台上每天都会产生大量代码数据 , 我们将其中公开的代码离线存储到代码仓库中去构建代码数仓 。 基于代码数仓可以构建代码图谱 , 比如我们会以代码、用户、代码库这些维度进行抽象 , 将其转化为实体 , 并通过对这些实体关系的标签化 , 从而构建代码画像、用户画像、代码库画像 。 进而为上层的智能化服务提供有力的数据支撑 。 同时我们以代码为中心 , 去拉通研发数据、协作数据、应用运行数据 , 去构建研发图谱 , 围绕整个研发生命周期去提供数据方面的支撑 。
科技诗刻|阿里巴巴智能化代码平台的探索与实践(节选)
文章图片
那么有了这些数据 , 我们可以做什么事情?基于评论数据 , 结合智能化手段 , 可以做到需求分析自动化 , 比如可以基于前台用户咨询的问题 , 结合智能化手段来帮助产品经理明确用户诉求 , 提炼产品文档 。 基于代码数据 , 可以实现代码分析自动化 , 如可以应用到代码缺陷检测和代码自动编写等领域中 。 基于用户的操作数据 , 可以做到软件测试自动化 , 如现在很火爆的UI测试、Mock测试等 。 基于日志数据 , 可以实现故障诊断自动化 , 如日志自动打点、日志智能分析以及服务智能降级等 。
云效推智能研发助手''云豆''代码评审更智能
接下来看一下我们是如何在云效代码管理平台(Codeup)中将代码智能化能力进行落地的 。 首先来看代码评审 。
科技诗刻|阿里巴巴智能化代码平台的探索与实践(节选)
文章图片
传统的代码评审分为三个阶段:新建评审、评审中、评审结束 。 在这三个阶段中 , 用户都会产生哪些行为呢?在新建评审阶段 , 首先需要选定某个分支 , 然后选择评审人 , 最后需要填写评审描述 , 通过这三步操作就新建了一个评审任务 。 在评审中 , 评审者首先要查看评审文件 , 然后提出问题 , 最后由开发者解决问题 。 如果评审通过 , 并完成合并代码 , 则评审结束 。
在上述过程中存在哪些痛点呢?在选择评审人环节 , 开发者经常不知道应该选择谁作为这段代码的评审者;在评审环节 , 评审者写不清评审描述;变更文件过多 , 无法有效评审;在评审结束环节 , 经常需要人工去解决代码冲突这类问题 。
其实有''痛点''就有''机会点'' , 针对这些在代码评审过程中的痛点 , 我们还可以做什么呢?比如 , 是否可以智能推荐评审人?智能生成评审描述?是否可以对改动过多的''大评审''进行自动化拆解?在出现代码冲突时 , 是否可以进行智能化修复?