23

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

  • Upload
    yandex

  • View
    386

  • Download
    2

Embed Size (px)

DESCRIPTION

Когда мы пишем код, наши мысли почти всегда заняты исключительно правильностью его работы. Мы очень редко обращаем внимание на то, как именно его пишем. Выбор оформления и применения определенных элементов языка может влиять на восприятие вашего кода коллегами. Поэтому для эффективной работы в команде необходимо поддерживать единый стиль кода. В этом докладе я постараюсь рассказать, какие средства для этого можно использовать и что делать, если их не хватает.

Citation preview

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

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

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

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

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

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

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

Python, C/C++, Java

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

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

Теория

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

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

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

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

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

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

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

Наш выбор

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

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

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

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

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

Git pre-commit hook

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

Jenkins

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

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

Case study

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

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

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

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

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

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

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

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

imhotep + github-webhook-wrapper

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

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

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

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

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

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

flake8-todo

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

flake8-commas

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

flake8-print

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

Вопросы?

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

Спасибо!

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

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

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: Контроль за стилем кода — Кирилл Борисов

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

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