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

Post on 04-Mar-2021

5 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

Transcript

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

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 pyflakeshttps://pypi.python.org/pypi/pyflakes flake8 https://gitlab.com/pycqa/flake8

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

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

top related