Удаление устаревшего кода Uber с открытым исходным кодом Piranha


Uber выпустил версию Piranha с открытым исходным кодом, инструмента, который сканирует исходный код, чтобы удалить код, связанный с устаревшими или устаревшими флагами функций.

Piranha работает в Uber в рамках постоянного конвейера для его кодовых баз Android и iOS и использовалась для удаления около двух тысяч устаревших флагов функций и связанного с ними кода. Uber утверждает, что это привело к созданию более чистой, безопасной, производительной и удобной в обслуживании базы кода.

Piranha предназначена для решения проблем, вызванных постепенным развертыванием приложений с новыми функциями. Команда Uber использует флаги функций, чтобы включить это, а также экспериментирует с новыми функциями. В некоторых случаях, даже после того, как цель флага достигнута, код, относящийся к флагу функции, не удаляется, что Uber называет устаревшим флагом. Оставление кода в приложении означает, что он излишне сложнее, чем должен быть. Команда Uber заявляет, что это также означает, что флаги могут мешать работе других экспериментальных флагов, например, вложения под флагом, который всегда является ложным.

Piranha — это инструмент для автоматического рефакторинга кода, связанного с устаревшими флагами. На более высоком уровне входными данными для инструмента являются имя флага и ожидаемое поведение после указания списка API, связанных с флагами, в файле свойств. Piranha будет использовать эти входные данные для автоматического рефакторинга кода в соответствии с ожидаемым поведением.

Инструмент автоматически генерирует дифференциальные версии — различия — для удаления кода, соответствующего устаревшим флагам функций. Piranha принимает в качестве входных данных название флага, ожидаемое лечение и имя автора флага. Он анализирует абстрактные синтаксические деревья (AST) программы для создания рефакторингов, которые упаковываются в файл diff. Разница передается автору флага для дальнейшего изучения. Затем автор может принять решение о фиксации изменений в главном файле, выполнив любые дополнительные рефакторинги перед его размещением.

Текущий репозиторий на GitHub содержит три независимых версии Piranha, по одной для каждого из трех поддерживаемых языков: Objective-C, Swift и Java.


Добавить комментарий