Uber开源Piranha,可自动删除过

北京皮肤科医院治疗 http://m.39.net/pf/a_4781492.html

Uber开源了一款自动化工具Piranha,该工具能够自动从应用程序代码库中删除过时的和未使用的代码。

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

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

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

Piranha首先会输入标识的名称、预期的处理行为以及标识作者的名称,接着分析程序的抽象语法树(AST)以生成适当的重构,并将其打包到diff中,分配给对应的作者进一步检查,作者可以将更改提交到主代码库,或者在必要时执行其他重构。

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

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

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

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




转载请注明:http://www.aierlanlan.com/rzgz/1589.html

  • 上一篇文章:
  •   
  • 下一篇文章: