Top Banner
23

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

Nov 18, 2014

Download

Technology

Yandex

Когда мы пишем код, наши мысли почти всегда заняты исключительно правильностью его работы. Мы очень редко обращаем внимание на то, как именно его пишем. Выбор оформления и применения определенных элементов языка может влиять на восприятие вашего кода коллегами. Поэтому для эффективной работы в команде необходимо поддерживать единый стиль кода. В этом докладе я постараюсь рассказать, какие средства для этого можно использовать и что делать, если их не хватает.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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