Uber 开源 Piranha,可自动删除过时代码
Uber 开源了一款自动化工具 Piranha,该工具能够自动从应用程序代码库中删除过时的和未使用的代码。
▲Piranha,意为“食人鱼”
根据 Uber 官方博客的介绍,开发 Piranha 的初衷是消除过时代码带来的负面影响。当一项特性已 100% 推送给用户后,或某些实验性功能失败后,代码中的特性标识(feature flags)就已过时。而它可能导致技术债的产生,使应用程序变得更加臃肿,开发人员为此要执行更多不必要的操作,甚至可能影响到程序的整体性能。消除技术债不仅耗时,也会影响到新功能的开发。
为了使该过程自动化,Uber 开发了 Piranha,它可以通过扫描源代码,来删除与过时的特性标识相关的代码,从而使代码库更清洁、更安全、性能更高,且更易于维护。对于企业来说,Piranha 有助于加快开发周期、降低维护成本,并改善用户体验。
目前为止,Piranha 已经在 Uber 的 Android 和 iOS 代码库中运行了相当长一段时间,被用来删除了约两千个过时的特性标识及相关代码。开源后的 Piranha 包含三个独立的版本,分别支持三种不同的语言:Objective-C、Swift 和 Java。
Piranha 首先会输入标识的名称、预期的处理行为以及标识作者的名称,接着分析程序的抽象语法树(AST)以生成适当的重构,并将其打包到 diff 中,分配给对应的作者进一步检查,作者可以将更改提交到主代码库,或者在必要时执行其他重构。
Uber 表示,Piranha 作为独立工具可执行代码重构,也可作为工作流管道的一部分。该管道可定期自动生成 diff 和任务,以清除过时的特性标识。
上图展示了 Piranha 管道的架构图。Piranha 会先生成一个 diff,将其放入代码审查系统,该标识的原始作者为默认审查者。作者可以按原样接受 diff,根据需要对其进行修改,也可以拒绝并将其标记为 not being stale(未过时)。这个 管道还在任务管理系统中生成了一个清理任务,以跟踪每个 diff 的状态。另外, 由于开发人员并不总是能够及时地对它们采取行动,这里还引入了一个被称作 PiranhaTidy 的提醒机器人,以定期添加 Piranha 相关任务的提醒。
Piranha 管道采用启发式(heuristic)方法,将超过特定时间段未修改的标识视为过时,并为它们生成 diff。至于具体的时间段设置,可以自定义。根据 Uber 的说法,Piranha 能够处理数百万行代码,平均不到 3 分钟即可生成 diff。
接下来,Piranha 有可能会扩展至更多语言,Uber 号召更多开发人员来一起为它做出贡献。
有关 Piranha 的更多信息可查看 Uber 博客原文: https://eng.uber.com/piranha/
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
谷歌宣布暂停 Chrome 和 Chrome OS 的版本更新
谷歌今日发公告称,将暂时中断Chrome 和 Chrome OS 的版本更新,并优先考虑安全和稳定性。 公告全文如下: 由于目前的工作日程已调整,我们正在暂停即将推出的 Chrome 和 Chrome OS 版本。我们的主要目标是确保它们继续稳定、安全以及对依赖它们的任何人可靠地工作。我们将继续优先考虑与安全相关的所有更新,这些更新将包含在 Chrome 80 中。请关注此博客以获取更新。 通常,Chrome 和 Chrome OS 的更新每六周发布一次,目前由于远程工作带来的工作计划调整,谷歌选择暂时中断新版本发布。 昨天,也就是这则公告发布的前一天,Chrome 开发者还发帖介绍了Chrome 81 的新特性,并表示 Chrome 81 即将推出。而谷歌并未说明这样的中断状态何时会结束,目前看来,还要再等上一阵子。 外媒 TechCrunch 指出,由于新冠疫情在全球范围内的影响,谷歌办公室人员数量大大减少,不少员工在家工作,这就影响了 Chrome 和 Chrome OS 项目的开发进度,而且受影响的不仅仅是上述两个项目,Android 应用程序的审核也受影响,可能需要更长时间。...
- 下一篇
每日一博 | 揭秘 vivo 如何打造千万级 DAU 活动中台
本文首发于 vivo互联网技术 微信公众号 链接: https://mp.weixin.qq.com/s/Ka1pjJKuFwuVL8B-t7CwuA 作者:悟空中台研发团队 一、缘起 - 什么是悟空活动中台? 随着 vivo 互联网用户量级不断增加,应用商店、官网商城、 游戏中心和浏览器等 vivo 官方产品相继进入存量用户运营时代。在这种大背景下,营销活动日益增多,传统活动开发模式已经不能满足井喷式且多样化的需求,项目开发和产品运营过程中遇到种种困难: 1. 浏览器团队开发的活动组件, 商城活动项目能否拿来复用? 2. 游戏中心团队开发的 H5 页面,会员活动项目能否拿来复用? 3. H5 项目发布周期较长,修改文案需要重新上线,能否把活动运营效率最大化? 4. 轻 H5 业务能否节省相应配比的服务端和测试人力? 5.各 BU 业务不同,活动后台系统过多,研发效率和运营效率低下,导致数据孤岛现象严重。 6.研发轮子过多,问题场景没有标准的解决方案,营销活动常见问题没有官方团队进行统一收集沉淀。 7.非业务 H5 需求,如招聘、节日、活动报名等,需使用外部的建站产品且数据安全风险高。...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Hadoop3单机部署,实现最简伪集群
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果