Контроль за стилем кода — Кирилл Борисов
Контроль за 
стилем кода 
PEP8, pyflakes и все-все-все.
Здравствуйте :) 
Борисов Кирилл, разработчик 
6 лет профессионального программирования 
Python, C/C++, Java 
Работал над АСУ, учетными системами
Теория
Возникающие проблемы 
Ручная проверка чревата ошибками. 
Люди ленятся проверять сами. 
Контролировать манеру написания кода. 
“Особые” правила.
Как это делается в Python? 
PEP8 - базовый свод рекомендаций по 
оформлению кода. 
Инструменты: 
pep8 - соблюдение правил PEP8. 
pylint - именование элементов кода и т.д. 
pyflakes - логические ошибки в коде. 
flake8 - pep8 + pyflakes + плагины
Наш выбор 
flake8 
https://gitlab.com/pycqa/flake8 
Три в одном: pep8, pyflakes, mccabe 
Часто обновляется 
Легко расширяется 
Много готовых плагинов
Где проверять? 
Интеграция с IDE (PyCharm, Emacs, vi) 
VCS pre-commit hooks (git, Mercurial, SVN) 
CI (Jenkins, TeamCity) 
Внешние средства (imhotep, ReviewBot,…)
Git pre-commit hook
Jenkins 
Интеграция через связку плагинов analysis-core 
+ warnings 
Запуск на каждый коммит pep8, pyflakes, … 
Графики трендов 
“Ломать” сборку при превышении количества 
предупреждений
Case study
Яндекс.Паспорт 
Интегрированные pep8 в IDE
Яндекс.Паспорт 
Интегрированные pep8 в IDE 
Git pre-commit hooks: 
– flake8 
– flake8-debug 
– flake8-print 
– flake8-passport
Яндекс.Паспорт 
Интегрированные pep8 в IDE 
Git pre-commit hooks: 
– flake8 
– flake8-debug 
– flake8-print 
– flake8-passport 
imhotep + github-webhook-wrapper
Что ещё проверять? 
Отладочный код (pdb, ipdb…) 
Цикломатическая сложность 
Копипаста 
Неоптимальные конструкции в коде
Практика: расширяем flake8
flake8-todo
flake8-commas
flake8-print
Вопросы?
Спасибо!
Полезные ссылки 
PEP8 
https://www.python.org/dev/peps/pep-0008 
pep8 
https://pypi.python.org/pypi/pep8 
pyflakes 
https://pypi.python.org/pypi/pyflakes 
flake8 
https://gitlab.com/pycqa/flake8
Полезные ссылки 
imhotep 
https://github.com/justinabrahms/imhotep 
github-webhook-wrapper 
https://github.com/datafolklabs/github-webhook-wrapper 
Jenkins warnings plugin 
https://wiki.jenkins-ci.org/display/JENKINS/Warnings+Plugin 
Jenkins + flake8 + tox 
http://www.mediawiki.org/wiki/Continuous_integration/Tutorials/ 
Test_your_python

More Related Content

PDF
Контроль за качеством кода
PDF
Кирилл Борисов. Code style_checking_v2. PyCon Belarus 2015
PPTX
Спецкурс-2015. Занятие 04 (часть 1). Конфигурации, сборка проекта, автоматизи...
PPTX
Опыт Автоматизации тестирования
PPTX
Спецкурс-2015. Занятие 05. Системы контроля версий
PPTX
Php and frameworks
PDF
Отладка в Python: 2016 edition
PPTX
Чем Python плох для стартапа?
Контроль за качеством кода
Кирилл Борисов. Code style_checking_v2. PyCon Belarus 2015
Спецкурс-2015. Занятие 04 (часть 1). Конфигурации, сборка проекта, автоматизи...
Опыт Автоматизации тестирования
Спецкурс-2015. Занятие 05. Системы контроля версий
Php and frameworks
Отладка в Python: 2016 edition
Чем Python плох для стартапа?

What's hot (19)

PDF
SECON'2016. Бартунов Олег, Карьера в Open Source
PDF
Грабли автоматизации. Учимся на чужих ошибках
PDF
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
PDF
Повышаем и следим за качеством PHP кода
PDF
О пользе Open Source
PPTX
Как писать на PHP и не стать быдло-кодером
PDF
CodeFest 2011. Климова Н. — FitNesse, полезный для проекта, или история одно...
PDF
Применение языка Go в инфраструктурных проектах
PDF
Можно ли обойтись без тестировщиков
PDF
Михаил Коробов: Как перейти на Python 3
PDF
Как мы делаем раскладку Календаря@Mail.Ru
PPTX
Как не подавиться большим старым проектом. Юрий Минаев ➠ CoreHard Autumn 2019
PDF
История про OpenSource в Яндексе
PDF
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
PDF
Rust - GDG DevFest 2016 Nizhny Novgorod
PPTX
Локализационное тестирование носителями языков
PDF
flag{жив_ли_CTF_в _Казахстане?} (@fuzzyf10w && @n0z3r0) CTF Team: b1n4ry4rms
PDF
Общие технологии между несколькими проектами в Яндексе
PPTX
YouLead Tomsk 2012 — Constantin Kaplinsky
SECON'2016. Бартунов Олег, Карьера в Open Source
Грабли автоматизации. Учимся на чужих ошибках
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
Повышаем и следим за качеством PHP кода
О пользе Open Source
Как писать на PHP и не стать быдло-кодером
CodeFest 2011. Климова Н. — FitNesse, полезный для проекта, или история одно...
Применение языка Go в инфраструктурных проектах
Можно ли обойтись без тестировщиков
Михаил Коробов: Как перейти на Python 3
Как мы делаем раскладку Календаря@Mail.Ru
Как не подавиться большим старым проектом. Юрий Минаев ➠ CoreHard Autumn 2019
История про OpenSource в Яндексе
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Rust - GDG DevFest 2016 Nizhny Novgorod
Локализационное тестирование носителями языков
flag{жив_ли_CTF_в _Казахстане?} (@fuzzyf10w && @n0z3r0) CTF Team: b1n4ry4rms
Общие технологии между несколькими проектами в Яндексе
YouLead Tomsk 2012 — Constantin Kaplinsky
Ad

Viewers also liked (13)

PDF
Григорий Липин: Автоматизация нагрузочного тестирования
PDF
«CI. Jenkins. 2GIS» — Игорь Павлов, 2ГИС
PDF
Дмитрий Пронин – Python для веба
PPTX
Openstack Third-Party CI and the review of a few Openstack Infrastructure pro...
PDF
jobDSL plugin: настройка jenkins ci скриптом
PPTX
Проблемы производительности open source библиотек
PDF
Непрерывный анализ качества кода с помощью SonarQube
PPTX
Highload в ВУЗе идеализм, расчётливый менеджмент или пустые надежды / Артем К...
PDF
Ceph BlueStore - новый тип хранилища в Ceph / Максим Воронцов, (Redsys)
PPT
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
PDF
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
PDF
It meetup cd
PDF
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Григорий Липин: Автоматизация нагрузочного тестирования
«CI. Jenkins. 2GIS» — Игорь Павлов, 2ГИС
Дмитрий Пронин – Python для веба
Openstack Third-Party CI and the review of a few Openstack Infrastructure pro...
jobDSL plugin: настройка jenkins ci скриптом
Проблемы производительности open source библиотек
Непрерывный анализ качества кода с помощью SonarQube
Highload в ВУЗе идеализм, расчётливый менеджмент или пустые надежды / Артем К...
Ceph BlueStore - новый тип хранилища в Ceph / Максим Воронцов, (Redsys)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
It meetup cd
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Ad

More from Yandex (20)

PDF
Предсказание оттока игроков из World of Tanks
PDF
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
PDF
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
PDF
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
PDF
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
PDF
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
PDF
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
PDF
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
PDF
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
PDF
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
PDF
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
PDF
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
PDF
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
PDF
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
PDF
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
PDF
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
PDF
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
PDF
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
PDF
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
PDF
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Предсказание оттока игроков из World of Tanks
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...

Контроль за стилем кода — Кирилл Борисов