备案 控制台
开发者社区 云效DevOps 文章 正文

阿里云云效智能化代码平台的探索与实践

简介: 2020年6月13日,在2020阿里巴巴研发效能峰会“架构设计与代码智能专场”中阿里巴巴高级技术专家张玉明(玄坛)发表题为《阿里巴巴智能化代码平台的探索与实践》的主题演讲,详细介绍了阿里巴巴打造智能化代码管理平台的起因、技术难点和解决思路以及应用案例,并发布云效智能研发助手“云豆”。本文节选自玄坛的分享,为方便开发者阅读,删除“背景”介绍部分,将集中讲解云效代码管理平台中智能化技术的应用以及实现原理。

2020年6月13日,在2020阿里巴巴研发效能峰会“架构设计与代码智能专场”中阿里巴巴高级技术专家张玉明(玄坛)发表题为《阿里巴巴智能化代码平台的探索与实践》的主题演讲,详细介绍了阿里巴巴打造智能化代码管理平台的起因、技术难点和解决思路以及应用案例,并发布云效智能研发助手“云豆”。本文节选自玄坛的分享,为方便开发者阅读,删除“背景”介绍部分,将集中讲解云效代码管理平台中智能化技术的应用以及实现原理。
人工智能赋能开发者 解决软件研发问题
作为一名开发者,在日常工作中会遇到哪些问题?主要有以下四点:需求不明确或需求经常变动;缺陷难发现:在开发的代码中经常隐藏难以发现的BUG;编码效率低:编码效率不够高,没办法合理安排编码时间;线上问题难定位。

有没有解决以上问题的灵丹妙药呢?云效团队给出的解法是“工具+数据+智能”。其实我们每天在使用的云效代码管理平台、钉钉等都是非常好用的工具。在这些工具基础之上,结合大数据、智能化手段是否可以在代码编写提效、代码质量、安全提升方面做一些探索呢?
01.PNG
首先看一下我们在“大数据”方面是如何做的。在阿里巴巴集团内部的代码管理平台上每天都会产生大量代码数据,我们将其中公开的代码离线存储到代码仓库中去构建代码数仓。基于代码数仓可以构建代码图谱,比如我们会以代码、用户、代码库这些维度进行抽象,将其转化为实体,并通过对这些实体关系的标签化,从而构建代码画像、用户画像、代码库画像。进而为上层的智能化服务提供有力的数据支撑。同时我们以代码为中心,去拉通研发数据、协作数据、应用运行数据,去构建研发图谱,围绕整个研发生命周期去提供数据方面的支撑。

02.PNG

那么有了这些数据,我们可以做什么事情?基于评论数据,结合智能化手段,可以做到需求分析自动化,比如可以基于前台用户咨询的问题,结合智能化手段来帮助产品经理明确用户诉求,提炼产品文档。基于代码数据,可以实现代码分析自动化,如可以应用到代码缺陷检测和代码自动编写等领域中。基于用户的操作数据,可以做到软件测试自动化,如现在很火爆的UI测试、Mock测试等。基于日志数据,可以实现故障诊断自动化,如日志自动打点、日志智能分析以及服务智能降级等。

云效推智能研发助手“云豆” 代码评审更智能

接下来看一下我们是如何在云效代码管理平台(Codeup)中将代码智能化能力进行落地的。首先来看代码评审。

03.PNG

传统的代码评审分为三个阶段:新建评审、评审中、评审结束。在这三个阶段中,用户都会产生哪些行为呢?在新建评审阶段,首先需要选定某个分支,然后选择评审人,最后需要填写评审描述,通过这三步操作就新建了一个评审任务。在评审中,评审者首先要查看评审文件,然后提出问题,最后由开发者解决问题。如果评审通过,并完成合并代码,则评审结束。

在上述过程中存在哪些痛点呢?在选择评审人环节,开发者经常不知道应该选择谁作为这段代码的评审者;在评审环节,评审者写不清评审描述;变更文件过多,无法有效评审;在评审结束环节,经常需要人工去解决代码冲突这类问题。

其实有“痛点”就有“机会点”,针对这些在代码评审过程中的痛点,我们还可以做什么呢?比如,是否可以智能推荐评审人?智能生成评审描述?是否可以对改动过多的“大评审”进行自动化拆解?在出现代码冲突时,是否可以进行智能化修复?
https://yunxiao-video.oss-cn-beijing.aliyuncs.com/fenghui/jEG8iVExT1pxUxAMRQt_268072585024_hd_hq.mp4?spm=a2c6h.14478567.J_2510131820.3.767c2e76ro4wIg&file=jEG8iVExT1pxUxAMRQt_268072585024_hd_hq.mp4
请大家看一下这支视频,视频中出现的可爱形象是云效智能研发助手——云豆。“云豆”可以在智能引导环节分享更规范的工作方法,在智能评审环节快速定位问题高效完成工作,在智能答疑环节推荐最优解法。比如在新建评审环节,当选择好评审分支后,云豆可以智能推荐最佳评审者;云豆支持预估评审耗时,并可以根据预估评审耗时合理安排评审优先级,帮助开发者利用好碎片时间评审。在代码质量方面,云豆具备自动化质量和安全检测能力,并可自动推荐修复方案。

05.PNG

我们可以将云效智能研发助手“云豆”提供的智能化评审过程抽象为上面这张图,当一个开发者新建了一个代码评审,云豆可以结合智能化及传统自动化检测手段对这段代码进行全方位的检测,并给出一个非常综合的评审意见。此时评审者只需要在云豆提供的评审意见之上,结合自己的工作经验及对业务逻辑的理解给出补充的评审意见即可。

智能研发助手云豆背后的能力:代码缺陷检测与补丁推荐-PRECFIX
在云效智能研发助手云豆提供的智能评审过程中,究竟涉及哪些智能化的能力呢?首先,我们来看代码缺陷检测与补丁推荐技术-PRECFIX。

06.PNG

在日常研发工作中,我们经常会用到P3C、PMD、FindBugs等传统自动化检测工具,但这些工具并不能完全解决阿里巴巴面临的代码质量问题。因为传统工具多是基于规则匹配,泛化能力不强,基于业务场景的缺陷很难识别出来。因此我们希望有一种对缺陷类型泛化能力比较强的缺陷检测方法或者工具,于是提出PRECFIX方法(Patch Recommendation by Empirically Clustering)。PRECFIX的目标是通过智能化手段,可以实现毫秒级检测,能够修复部分偏业务缺陷,并给出对应的补丁推荐方案。

PRECFIX代码检测过程主要分为三个阶段:风险识别、缺陷定位、补丁推荐。这个过程会涉及行为数据、代码数据、日志数据的处理,以及聚类算法、推荐算法、代码建模、特征提取、深度学习等算法技术。

PRECFIX的技术实现思路其实并不复杂,首先我们从阿里巴巴集团内部海量的公开代码数据中提取代码提交(Commit)信息,基于一定规则挖掘出“缺陷修复对”(缺陷代码片段和补丁代码片段的组合),然后通过聚类算法将相似的“缺陷修复对”聚类,提取出对应的代码模板。在用户发起评审时,系统会自动扫描变更代码,若与缺陷模板库匹配,则会推荐给用户补丁模板用于修复。

07.PNG

PRECFIX方法已经在阿里巴巴集团内部落地,其误报率在5%以下,在内部公开代码库中扫描出了800多种缺陷类型,3万多个缺陷,提取出了3000多个补丁模板。
智能研发助手云豆背后的能力:评审耗时预估
08.PNG
当存在多个待处理评审的情况时,“评审耗时预估”可以帮助评审人预知评审的工作量,合理安排评审时间,利用碎片化时间进行充分的评审,提升评审效率。

“评审耗时预估”的技术实现思路是怎样的呢?首先从几百万次的代码评审历史浏览数据中抽取特征,包括评审总行数、编程语言、历史评审时长、历史逐行时长等几十个维度的特征,从而去训练机器学习模型。当一个开发者提交了代码评审时,“云豆”会从他提交的diff文件中提取这些特征,从而估算这次评审需要的耗时。

智能研发助手云豆背后的能力:敏感信息检测SecretRadar

09.PNG

近年来,业内发生多起敏感信息(API Key、 Database credential、Private token)通过某些站点被无意识地泄露出去的事件,给企业带来了安全风险。开发者和企业管理者亟需一款稳定健全的敏感信息检测方法和系统。通过调研我们了解到,目前已有的敏感信息检工具要么单纯考虑规则匹配,要么采用信息熵技术实现,其召回率或准确率均无法满足预期。因此我们在规则匹配和信息熵技术的基础上,结合了多层检测模型和上下文语义检测,打造了一款敏感信息检测工具 ——SecretRadar。

10.PNG

SecretRadar的技术实现思路主要分为三层,第一层采用规则匹配这种传统敏感信息识别技术,“规则匹配”具有良好的准确度和扩展性,但是非常依赖比较固化的长度、前缀、变量名,难以应对不同开发者的不同编码风格,容易造成漏报。针对难以固定规则捕捉的场景,在第二层我们采用了信息熵算法。信息熵算法用于衡量代码行混乱程度,对随机生成型密钥和随机身份信息识别效果良好。但信息熵算法也有其局限性,伴随召回的提升是误报率的增加。因此在第三层我们采用了模板聚类的方法进行过滤优化。针对信息熵结果集聚合提取常见关键字,并结合上下文分析完成二次过滤。同时通过问题的修复情况建立二分类数据集,完成算法优化。进而从词法识别迭代为语义识别。

智能研发助手云豆背后的能力:代码补全
代码补全是当前代码智能化领域研究的热点。目前代码补全工具主要分为三种:基于语法解析器的代码补全;基于统计机器学习的代码补全;基于深度学习的代码补全。基于语法解析器的代码补全工具最为大家熟知,我们平时使用的IDE中内置的补全工具基本都属于这类。这种补全工具有个问题,就是补全结果没有进行合理排序。基于统计机器学习的代码补全工具不仅可以给出更加合理的补全候选方案,还可以从“补全概率”的维度对候选方案进行排序。但这种补全方式也有其局限性,推荐的结果比较固定。

最近几年,随着NLP(自然语言处理)领域对自然语言建模能力的大幅度提升,这种能力也被应用到代码补全上。相对于基于统计机器学习的代码补全工具而言,基于深度学习的代码补全系统能够更大范围的了解上下文语义,并结合大量数据,给开发者提供动态的代码补全推荐。当然这种方式在训练阶段以及推理计算时会需要更强大的算力,因此在普通的PC机上基本没办法使用这种系统。业内通常的做法是将训练好的模型部署到远端服务器上,本地去进行实时查询,因此对网络的依赖比较强。

在代码补全的探索中我们遇到很多挑战和难点,主要有四个方面:不完整代码上下文理解难度大;代码片段补全准确率要求极高,对错误的容忍度非常低;多Token补全搜索空间无限大,算法效率和准确度难以提升;代码中单词的数目是无限大的,一般模型难以处理如此大的词表。

针对以上问题,我们的策略是采用“算法手段+工程手段”相结合的解决方案。算法方面,采用本地+深度模型共同补全,挑选合适的分词算法(如BPE分词算法),并结合规则匹配的手段进行实现。在工程方面,通过整合现有语法服务给用户带来综合体验的提升。

11.PNG

我们的代码补全流程设计如图所示,分为预处理阶段、实时补全阶段、后处理阶段。在预处理阶段,会进行变量/字符串替换、分词、索引变量等处理。在实时补全阶段,采取本地个性化补全模型和云端深度补全模型相结合的方法,然后对多模型候选项进行合并、筛选和重排。在后处理阶段,会进行变量名替换和填充、语义格式化等操作,并将最终补全候选方案推荐给开发者。

总结:
目前云效智能研发助手“云豆”主要可提供智能代码评审、评审耗时预估、智能推荐评审人、代码补全等智能化能力,未来“云豆”还可以结合开发者个人研发习惯,提供更多功能。云豆已经集成在云效代码管理平台(Codeup)中,大家可以登录云效官网免费“领养”。

以上内容节选自张玉明(玄坛)的主题演讲《阿里巴巴智能化代码平台的探索与实践》,如果想了解完整分享内容可以进入2020阿里巴巴研发效能峰会官方网站收看回放视频。

想了解更多信息,观看阿里巴巴研发效能峰会精彩回放: https://developer.aliyun.com/topic/2020/1?s=主论坛&v=2728

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
SVN版本控制系统
SVN是现在软件开发之中的主流软件版本控制工具,在工作之中利用SVN可以有效的解决多人开发的代码管理问题,本课程将为读者讲解SVN服务器的配置以及基于MyEclipse的SVN客户端插件的配置与使用,并且在讲解之中着重讲解了冲突的产生于解决。
Yvonne
目录
相关文章
x7yi7cdbllm4q
|
1天前
|
OLAP 数据处理 Apache
众安保险 CDP 平台:借助阿里云数据库 SelectDB 版内核 Apache Doris 打破数据孤岛,人群圈选提速4倍
众安保险在CDP(Customer Data Platform,客户数据平台)建设中,通过引入阿里云数据库SelectDB版内核Apache Doris,成功打破了数据孤岛,并显著提升了人群圈选的速度
x7yi7cdbllm4q
12 1
众所周知
|
1天前
|
弹性计算 运维 监控
【阿里云云原生专栏】自动化运维的艺术:阿里云云原生平台的自动化运维工具集
【5月更文挑战第28天】阿里云云原生平台提供全面的自动化运维工具,涵盖监控告警、资源管理、部署更新、故障自愈、安全管理和数据备份等方面,简化运维工作,增强系统稳定性。通过智能工具集,运维人员能专注于业务优化,实现高效运维,为企业数字化转型提供有力支持。
众所周知
109 3
众所周知
|
1天前
|
供应链 Cloud Native 安全
【阿里云云原生专栏】云原生与区块链的交响曲:阿里云 BaaS 平台的应用展望
【5月更文挑战第28天】阿里云BaaS平台融合云原生与区块链技术,提供一站式便捷、高性能且安全的区块链服务。在供应链和金融等领域应用广泛,如智能合约示例所示,助力数字化转型。未来,两者融合将深化,创造更多应用模式。企业和开发者应把握机遇,借助阿里云BaaS平台开创未来。
众所周知
143 1
众所周知
|
1天前
|
运维 监控 安全
【阿里云云原生专栏】云原生时代的 DevSecOps:阿里云的安全开发流程实践
【5月更文挑战第28天】在云原生时代,面对安全新挑战,阿里云践行DevSecOps理念,将安全贯穿于开发运维全过程。通过安全需求分析、设计、代码审查、测试及持续监控,确保云原生应用安全。例如,Kubernetes配置中加入安全设置。阿里云还提供多种安全服务和工具,如身份认证、云防火墙等,助力用户构建安全可靠的云应用,为数字化转型保驾护航。
众所周知
40 4
龙大吉
|
2天前
|
弹性计算 运维 监控
【阿里云弹性计算】云上自动化运维实践:基于阿里云ECS的自动化部署与管理
【5月更文挑战第27天】阿里云ECS自动化运维实践:借助ECS API和SDK实现自动化部署,通过Python示例展示实例创建。利用Ansible、Docker等工具进行配置管理和容器化,结合CloudMonitor和Auto Scaling实现监控告警及资源动态调整,提升运维效率和系统稳定性。
龙大吉
16 0
众所周知
|
2天前
|
Cloud Native 安全 Serverless
【阿里云云原生专栏】低代码开发在云原生平台的应用:阿里云低代码服务探索
【5月更文挑战第27天】在云原生时代,低代码开发凭借其图形化界面和预构建模块,简化了应用开发,提升了效率。阿里云积极探索低代码领域,推出函数计算FC和应用配置中心ACM等服务。FC让开发者无需关注基础设施,仅需少量代码即可实现应用部署,而ACM则提供动态配置管理,增强应用灵活性。阿里云的这些服务为企业数字化转型提供了高效、安全的解决方案,预示着低代码开发在云原生平台上的重要地位。
众所周知
159 1
众所周知
|
4天前
|
存储 Prometheus 运维
【阿里云云原生专栏】云原生下的可观测性:阿里云 ARMS 与 Prometheus 集成实践
【5月更文挑战第25天】阿里云ARMS与Prometheus集成,为云原生环境的可观测性提供强大解决方案。通过集成,二者能提供全面精准的应用监控,统一管理及高效告警,助力运维人员及时应对异常。集成示例代码展示配置方式,但需注意数据准确性、监控规划等问题。这种集成将在云原生时代发挥关键作用,不断进化以优化用户体验,推动业务稳定发展。
众所周知
118 0
众所周知
|
5天前
|
运维 Cloud Native 持续交付
【阿里云云原生专栏】从零到一搭建云原生应用:阿里云云原生应用平台实战教程
【5月更文挑战第24天】本文档是一份阿里云云原生应用平台的实战教程,介绍了如何从零开始搭建云原生应用。内容涵盖云原生应用的特点(容器化、微服务、CI/CD和自动化运维)以及阿里云提供的服务,如容器服务、服务网格和CI/CD工具。教程详细讲解了创建容器集群、编写Dockerfile、构建镜像、部署应用、配置服务网格和设置CI/CD的步骤。通过本文,读者将学会利用阿里云平台开发和管理云原生应用。
众所周知
258 0
jinan小哥
|
6天前
|
弹性计算 安全 关系型数据库
阿里云产品在技术探索中的实践和思考
本文讲述了作者在使用阿里云产品进行技术探索的实践中,如何借助ECS、RDS、OSS、SLB和VPC构建高可用分布式系统。从最初的虚拟主机服务到全面的云服务,阿里云帮助解决了性能、负载均衡、数据存储和网络安全等问题。在面对性能优化、成本控制和安全管理的挑战时,作者通过监控、调整和采用安全措施确保了系统的高效运行。未来,作者将继续在云计算领域探索,利用AI、大数据及物联网技术驱动业务创新和增长。
jinan小哥
51 0
龙大吉
|
6天前
|
存储 弹性计算 大数据
【阿里云弹性计算】阿里云ECS在大数据处理中的应用:高效存储与计算实践
【5月更文挑战第23天】阿里云ECS在大数据处理中发挥关键作用,提供多样化实例规格适应不同需求,尤其大数据型实例适合离线计算。通过集成分布式文件系统如OSS,实现大规模存储,而本地存储优化提升I/O性能。弹性扩容和计算优化实例确保高效运行,案例显示使用ECS能提升处理速度并降低成本。结合阿里云服务,ECS构建起强大的数据处理生态,推动企业创新和数字化转型。
龙大吉
25 0

云效DevOps

热门文章

最新文章

  • 1
    阿里云云效研发效能提升和敏捷实施 36 计 资料合集
  • 2
    智研未来,直击 AI DevOps,阿里云用户交流日杭州站来啦!
  • 3
    阿里云代码管理平台云效Codeup亮相,为企业代码安全护航
  • 4
    研发效能提升 36 计第一课:互联网时代研发效能的挑战和应对之道
  • 5
    研发效能提升 36 计第二课:照亮问题,效能提升从可视化交付过程开始
  • 6
    阿里巴巴云效平台成功助力国内首个DevOps标准建设!
  • 7
    通义灵码保姆级教程:官网、安装、使用指南、常见问题、线上活动、官方答疑
  • 8
    DevOps 进阶实践课,连续 4 期,看看有你想听的吗?
  • 9
    云效产品使用报错问题之流水线通过控制台创建的用yaml实现失败如何解决
  • 10
    云效流水线 Flow测评报告
  • 1
    蓝易云 - 基于Jenkins自动打包并部署docker环境
    4
  • 2
    从DevOps实践者的角度谈谈云效Flow
    11
  • 3
    从DevOps实践者的角度谈谈云效Flow
    9
  • 4
    云效流水线 Flow 评测
    9
  • 5
    蓝易云 - ubuntu设置系统代理
    16
  • 6
    maven打包插件maven-jar-plugin与spring-boot-maven-plugin
    15
  • 7
    DevOps 进阶实践课,连续 4 期,看看有你想听的吗?
    528
  • 8
    智研未来,直击 AI DevOps,阿里云用户交流日杭州站来啦!
    5857
  • 9
    【sheetjs】纯前端如何实现Excel导出下载和上传解析?
    51
  • 10
    网站空间与服务器,有什么关系和区别
    31
  • 相关课程

    更多
  • 跟阿里云技术专家学习智能推荐系统
  • 阿里云负载均衡SLB实战演练
  • 云原生基础概念及阿里云云原生产品介绍
  • 阿里云图数据库GDB入门与应用
  • 企业上云攻略-阿里云网络产品应用系列教程
  • 阿里云物联网平台专题介绍
  • 相关电子书

    更多
  • 阿里云云原生 Serverless 技术实践营 PPT 演讲
  • 阿里云产品十月刊
  • 基于阿里云构建博学谷平台实时湖仓
  • 相关实验场景

    更多
  • 使用阿里云ECS监控您的特斯拉
  • 使用阿里云ECS安装家用内网穿透服务
  • 在阿里云百炼大模型中快速创建企业知识应用
  • 使用阿里云ECS搭建一套网页IDE
  • 使用阿里云ECS搭建自己的持续集成服务
  • 阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
  • 下一篇
    2024年阿里云免费云服务器及学生云服务器申请教程参考

    PHP网站源码宜昌网站seo优化报价布吉seo网站推广报价西宁至尊标王价格淮安网站制作设计报价钦州网络营销价格吉安企业网站制作推荐南京外贸网站建设中卫百度网站优化排名哪家好南澳网络广告推广公司开封优化价格鞍山网络营销哪家好邵阳网络推广推荐阜阳网站推广方案报价长治外贸网站设计多少钱湖州建网站价格贵港建网站哪家好韶关模板网站建设多少钱徐州SEO按天计费报价无锡seo网站优化推荐塘坑网站推广公司衢州建设网站哪家好绵阳营销网站价格上海关键词按天收费蚌埠推广网站多少钱江门建设网站六安网站优化哪家好乐山模板网站建设价格长春企业网站建设报价沧州百度竞价包年推广哪家好芜湖网站排名优化公司歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

    PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化