测试动态 / 行业资讯 /Uber 开源 Piranha,可自动删除过时代码
Uber 开源 Piranha,可自动删除过时代码
2020-03-20 浏览次数:1224
Uber 开源了一款自动化工具 Piranha,该工具能够自动从应用程序代码库中删除过时的和未使用的代码。

▲Piranha,意为“食人鱼”

根据 Uber 官方博客的介绍,开发 Piranha 的初衷是消除过时代码带来的负面影响。当一项特性已 100% 推送给用户后,或某些实验性功能失败后,代码中的特性标识(feature flags)就已过时。而它可能导致技术债的产生,使应用程序变得更加臃肿,开发人员为此要执行更多不必要的操作,甚至可能影响到程序的整体性能。消除技术债不仅耗时,也会影响到新功能的开发。

为了使该过程自动化,Uber 开发了 Piranha,它可以通过扫描源代码,来删除与过时的特性标识相关的代码,从而使代码库更清洁、更安全、性能更高,且更易于维护。对于企业来说,Piranha 有助于加快开发周期、降低维护成本,并改善用户体验。

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 的 Android 和 iOS 代码库中运行了相当长一段时间,被用来删除了约两千个过时的特性标识及相关代码。开源后的 Piranha 包含三个独立的版本,分别支持三种不同的语言:Objective-C、Swift 和 Java。

接下来,Piranha 有可能会扩展至更多语言,Uber 号召更多开发人员来一起为它做出贡献。

文章转载自 OSCHINA 社区

专业测试,找专业团队,请联系我们!
咨询软件测试 400-607-0568