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