Uber Open Sources Piranha Stale Code Remover
Wednesday, 25 March 2020

Uber has released an open source version of Piranha, a tool that scans source code to delete code related to stale, or obsolete, feature flags.

Piranha is run at Uber in an ongoing pipeline for its Android and iOS codebases and has been used to remove around two thousand stale feature flags and their related code. Uber says it has led to a cleaner, safer, more performant, and more maintainable code base.

piranha

Piranha is designed to overcome the problems caused by gradual rollouts of apps with new features. The Uber team uses feature flags to enable this, along with experimenting with new features. In a few cases, even after the purpose of the flag is accomplished, the code pertaining to the feature flag is not removed, which Uber refers to as a stale flag. Leaving the code in the app means its unnecessarily more complex than it needs to be. The Uber team says it also means the flags can interfere with other experimental flags in ways such as nesting under a flag that is always false.

Piranha is a tool to automatically refactor code related to stale flags. At a higher level, the input to the tool is the name of the flag and the expected behavior, after specifying a list of APIs related to flags in a properties file. Piranha will use these inputs to automatically refactor the code according to the expected behavior.

The tool automatically generates differential revisions - diffs - to delete code corresponding to stale feature flags. Piranha takes as input the name of the flag, expected treatment behavior, and the name of the flag’s author. It analyzes the abstract syntax trees (ASTs) of the program to generate refactorings which are packaged into a diff. The diff is assigned to the author of the flag for further inspection. The author can then choose to commit the changes to the master, performing any additional refactorings before landing it.

The current repository on GitHub contains three independent versions of Piranha, one for each of the three supported languages: Objective-C, Swift, and Java.

piranha

More Information

Pirhana On GitHub

Related Articles

Scientist Lets You Refactor Live

Refactoring to Kotlin Codelab

Java Dependency Analysis and Modularization

 

To be informed about new articles on I Programmer, sign up for our weekly newsletter, subscribe to the RSS feed and follow us on, Twitter, Facebook or Linkedin.

Banner


Linux Doubles Market Share
08/05/2020

Linux usage more than doubled during April, increasing from a share of 1.36 percent of all desktop operating systems in March to 2.87 percent in April. Much of the increase was seen in Ubunt [ ... ]



This Is The Year Of Linux On The Desktop - Via Windows
22/05/2020

Windows and Linux are natural enemies, but they have been growing closer together recently. Build 2020 sees them join at the GUI. Could this be the year of the Linux desktop at long last? If it is, wh [ ... ]


More News

{laodposition comment}

Last Updated ( Wednesday, 25 March 2020 )