4. Совершенно согласен, отличный инструмент!
Идеален для интерактивного рефакторинга
Нет возможностей для массовой обработки
Слишком простые инструменты
Не все пользуются PyCharm
4
«Почему не PyCharm?»
5. Отличное решение!
Но подходит только в простых случаях:
• Малое количество файлов
• Небольшие объемы кода (< 5 тысяч срок)
• Вносимые изменения элементарны или интуитивны
5
«Я руками быстрее справлюсь!»
6. Файлов с исходным кодом: 1124
Строчек кода: 253 473 (~ 75% - тесты)
Тестов: 10 991
Общий объем: 220 мегабайт
6
Наши цифры: Яндекс.Паспорт
8. Наличие тестов или тестировщиков
Есть представление о нужном результате
Изменения потенциально стоят затраченного времени
Легкое безумие :)
8
Необходимые условия
9. 1. Преобразуем исходный код в удобную структуру
2. Пропускаем структуручерез фильтр
3. Применяем эвристику
4. Вносим изменения
5. Выгружаем обратно исходный код
9
Методика внесения изменений
15. tokenize - разбиение исходника на токены
ast - построение абстрактного синтаксического дерева
… - отсутствие модулей для вывода исходника в текст
15
Стандартная библиотека Python
18. Надстройка над библиотекой baron
Удобный механизм запросов
Работает с FST (!= AST)
Разбирает только Python 2
Сохраняет информацию о стиле:
RedBaron(source_code).dumps() == source_code
18
redbaron
https://github.com/Psycojoker/redbaron
19. Предназначено для работы с исходным кодом
Сохраняет информацию о форматировании узлов
Более удобная для восприятия структура
“Под капотом” - JSON
19
FST: Full Source Tree
21. Надстройка над библиотекой baron
Удобный механизм запросов
Работает с FST (!= AST)
Разбирает только Python 2
Сохраняет информацию о стиле:
RedBaron(source_code).dumps() == source_code
21
redbaron
https://github.com/Psycojoker/redbaron
22. Большой набор стандартных рефакторингов
Немного статического анализа
Документация сильно отстает от кода
Требует указания мест применения
Отлично работает в связке с IDE / другими библиотеками
22
rope
https://github.com/python-rope