自动删除旧代码神器来了!Uber开源Piranha,号称吃代码的“食人鱼”

来源丨开源最前线(ID:OpenSourceTop)

猿妹整编

链接:https://eng.uber.com/piranha/

前不久,Uber 推出了一款可以扫描源代码并删除过时代码的工具,形象地命名为 了 Piranha(食人鱼)。

Piranha可以在Uber Android和iOS代码库中运行,Uber已使用它删除了大约2000个过时代码。据介绍,该工具目前支持Objective-C、Swift和Java三种编程语言。

目前,piranha在Github上标星 572,累计Fork有 44 个(Github地址:https://github.com/uber/piranha)

Piranha的诞生

根据 Uber 官方博客的介绍,在Uber,工程师们使用功能标记来自定义我们的移动应用执行,为不同的用户组提供不同的功能。这些标志允许例如在运营的不同区域中本地化用户的体验,更重要的是,逐步向用户推出功能并尝试使用同一功能的不同变体。

但是,在某项功能已 100% 推广给用户或实验性功能被认为不成功之后,代码中的功能标志就过时了。这些非功能性特征标志代表技术负担,使开发人员难以在代码库上工作,并且可能使应用程序臃肿,需要进行不必要的操作,这些操作会影响最终用户的性能并可能影响整体应用程序的可靠性。为了使该过程自动化,Uber 开发了 Piranha。

Piranha架构

Uber 表示,Piranha 作为独立工具可执行代码重构,也可作为工作流管道的一部分。该管道可定期自动生成 diff 和任务,以清除过时的特性标识。

上图展示了Piranha管道的架构图。Piranha 会先生成一个diff,将其放入代码审查系统,该标识的原始作者为默认审查者。作者可以按原样接受diff,根据需要对其进行修改,也可以拒绝并将其标记为not being stale(未过时)。这个管道还在任务管理系统中生成了一个清理任务,以跟踪每个diff 的状态。另外, 由于开发人员并不总是能够及时地对它们采取行动,这里还引入了一个被称作PiranhaTidy的提醒机器人,以定期添加Piranha相关任务的提醒。

Piranha管道采用启发式(heuristic)方法,将超过特定时间段未修改的标识视为过时,并为它们生成diff。至于具体的时间段设置,可以自定义。根据Uber的说法,Piranha能够处理数百万行代码,平均不到3分钟即可生成diff。

使用Piranha,代码要满足什么条件

Uber提到,只要用户的项目程序代码符合3个条件,就能有效地使用Piranha,首先,程序代码库中广泛地使用功能旗标,并以特定API控制功能旗目标行为,且以Java、Swift或是Objective-C程序语言实作而成的项目,皆可以使用Piranha。Piranha有许多新计划正在进行中,像是改善Piranha产生的重构程序代码,还有要扩充Piranha以支持Kotlin和Go等其他语言的项目。

不知道你对Piranha是否感兴趣呢?

近期精彩内容推荐:  

 太真实了!有个程序员男友原来是这样的!

 终于有人把 HTTPS 原理讲清楚了!

 你真的会用 Postman 吗?

 Swift 5.3 路线图

在看点这里好文分享给更多人↓↓

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值