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

Post on 18-Nov-2014

381 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

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