Code style checking - yandexdownload.cdn.yandex.net/company/experience/python_party/... · 2018. 5....

23

Transcript of Code style checking - yandexdownload.cdn.yandex.net/company/experience/python_party/... · 2018. 5....

Page 1: Code style checking - yandexdownload.cdn.yandex.net/company/experience/python_party/... · 2018. 5. 15. · PEP8 - базовый свод рекомендаций по оформлению
Page 2: Code style checking - yandexdownload.cdn.yandex.net/company/experience/python_party/... · 2018. 5. 15. · PEP8 - базовый свод рекомендаций по оформлению

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

PEP8, pyflakes и все-все-все.

Page 3: Code style checking - yandexdownload.cdn.yandex.net/company/experience/python_party/... · 2018. 5. 15. · PEP8 - базовый свод рекомендаций по оформлению

Здравствуйте :)

Борисов Кирилл, разработчик

6 лет профессионального программирования

Python, C/C++, Java

Работал над АСУ, учетными системами

Page 4: Code style checking - yandexdownload.cdn.yandex.net/company/experience/python_party/... · 2018. 5. 15. · PEP8 - базовый свод рекомендаций по оформлению

Теория

Page 5: Code style checking - yandexdownload.cdn.yandex.net/company/experience/python_party/... · 2018. 5. 15. · PEP8 - базовый свод рекомендаций по оформлению

Возникающие проблемы

Ручная проверка чревата ошибками. Люди ленятся проверять сами. Контролировать манеру написания кода. “Особые” правила.

Page 6: Code style checking - yandexdownload.cdn.yandex.net/company/experience/python_party/... · 2018. 5. 15. · PEP8 - базовый свод рекомендаций по оформлению

Как это делается в Python?

PEP8 - базовый свод рекомендаций по оформлению кода. Инструменты: pep8 - соблюдение правил PEP8. pylint - именование элементов кода и т.д. pyflakes - логические ошибки в коде. flake8 - pep8 + pyflakes + плагины

Page 7: Code style checking - yandexdownload.cdn.yandex.net/company/experience/python_party/... · 2018. 5. 15. · PEP8 - базовый свод рекомендаций по оформлению

Наш выбор

flake8 https://gitlab.com/pycqa/flake8 Три в одном: pep8, pyflakes, mccabe Часто обновляется Легко расширяется Много готовых плагинов

Page 8: Code style checking - yandexdownload.cdn.yandex.net/company/experience/python_party/... · 2018. 5. 15. · PEP8 - базовый свод рекомендаций по оформлению

Где проверять?

Интеграция с IDE (PyCharm, Emacs, vi) VCS pre-commit hooks (git, Mercurial, SVN) CI (Jenkins, TeamCity) Внешние средства (imhotep, ReviewBot,…)

Page 9: Code style checking - yandexdownload.cdn.yandex.net/company/experience/python_party/... · 2018. 5. 15. · PEP8 - базовый свод рекомендаций по оформлению

Git pre-commit hook

Page 10: Code style checking - yandexdownload.cdn.yandex.net/company/experience/python_party/... · 2018. 5. 15. · PEP8 - базовый свод рекомендаций по оформлению

Jenkins

Интеграция через связку плагинов analysis-core + warnings Запуск на каждый коммит pep8, pyflakes, … Графики трендов “Ломать” сборку при превышении количества предупреждений

Page 11: Code style checking - yandexdownload.cdn.yandex.net/company/experience/python_party/... · 2018. 5. 15. · PEP8 - базовый свод рекомендаций по оформлению

Case study

Page 12: Code style checking - yandexdownload.cdn.yandex.net/company/experience/python_party/... · 2018. 5. 15. · PEP8 - базовый свод рекомендаций по оформлению

Яндекс.ПаспортИнтегрированные pep8 в IDE

Page 13: Code style checking - yandexdownload.cdn.yandex.net/company/experience/python_party/... · 2018. 5. 15. · PEP8 - базовый свод рекомендаций по оформлению

Яндекс.ПаспортИнтегрированные pep8 в IDE Git pre-commit hooks:

– flake8 – flake8-debug – flake8-print – flake8-passport

Page 14: Code style checking - yandexdownload.cdn.yandex.net/company/experience/python_party/... · 2018. 5. 15. · PEP8 - базовый свод рекомендаций по оформлению

Яндекс.ПаспортИнтегрированные pep8 в IDE Git pre-commit hooks:

– flake8 – flake8-debug – flake8-print – flake8-passport

imhotep + github-webhook-wrapper

Page 15: Code style checking - yandexdownload.cdn.yandex.net/company/experience/python_party/... · 2018. 5. 15. · PEP8 - базовый свод рекомендаций по оформлению

Что ещё проверять?

Отладочный код (pdb, ipdb…) Цикломатическая сложность Копипаста Неоптимальные конструкции в коде

Page 16: Code style checking - yandexdownload.cdn.yandex.net/company/experience/python_party/... · 2018. 5. 15. · PEP8 - базовый свод рекомендаций по оформлению

Практика: расширяем flake8

Page 17: Code style checking - yandexdownload.cdn.yandex.net/company/experience/python_party/... · 2018. 5. 15. · PEP8 - базовый свод рекомендаций по оформлению

flake8-todo

Page 18: Code style checking - yandexdownload.cdn.yandex.net/company/experience/python_party/... · 2018. 5. 15. · PEP8 - базовый свод рекомендаций по оформлению

flake8-commas

Page 19: Code style checking - yandexdownload.cdn.yandex.net/company/experience/python_party/... · 2018. 5. 15. · PEP8 - базовый свод рекомендаций по оформлению

flake8-print

Page 20: Code style checking - yandexdownload.cdn.yandex.net/company/experience/python_party/... · 2018. 5. 15. · PEP8 - базовый свод рекомендаций по оформлению

Вопросы?

Page 21: Code style checking - yandexdownload.cdn.yandex.net/company/experience/python_party/... · 2018. 5. 15. · PEP8 - базовый свод рекомендаций по оформлению

Спасибо!

Page 22: Code style checking - yandexdownload.cdn.yandex.net/company/experience/python_party/... · 2018. 5. 15. · PEP8 - базовый свод рекомендаций по оформлению

Полезные ссылки

PEP8 https://www.python.org/dev/peps/pep-0008 pep8 https://pypi.python.org/pypi/pep8 pyflakeshttps://pypi.python.org/pypi/pyflakes flake8 https://gitlab.com/pycqa/flake8

Page 23: Code style checking - yandexdownload.cdn.yandex.net/company/experience/python_party/... · 2018. 5. 15. · PEP8 - базовый свод рекомендаций по оформлению

Полезные ссылки

imhotep https://github.com/justinabrahms/imhotep

github-webhook-wrapperhttps://github.com/datafolklabs/github-webhook-wrapper

Jenkins warnings pluginhttps://wiki.jenkins-ci.org/display/JENKINS/Warnings+Plugin

Jenkins + flake8 + toxhttp://www.mediawiki.org/wiki/Continuous_integration/Tutorials/Test_your_python