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