Download - Контроль за стилем кода — Кирилл Борисов
![Page 1: Контроль за стилем кода — Кирилл Борисов](https://reader031.vdocuments.pub/reader031/viewer/2022020122/546b28caaf795919088b54d1/html5/thumbnails/1.jpg)
![Page 2: Контроль за стилем кода — Кирилл Борисов](https://reader031.vdocuments.pub/reader031/viewer/2022020122/546b28caaf795919088b54d1/html5/thumbnails/2.jpg)
Контроль за стилем кода
PEP8, pyflakes и все-все-все.
![Page 3: Контроль за стилем кода — Кирилл Борисов](https://reader031.vdocuments.pub/reader031/viewer/2022020122/546b28caaf795919088b54d1/html5/thumbnails/3.jpg)
Здравствуйте :)
Борисов Кирилл, разработчик
6 лет профессионального программирования
Python, C/C++, Java
Работал над АСУ, учетными системами
![Page 4: Контроль за стилем кода — Кирилл Борисов](https://reader031.vdocuments.pub/reader031/viewer/2022020122/546b28caaf795919088b54d1/html5/thumbnails/4.jpg)
Теория
![Page 5: Контроль за стилем кода — Кирилл Борисов](https://reader031.vdocuments.pub/reader031/viewer/2022020122/546b28caaf795919088b54d1/html5/thumbnails/5.jpg)
Возникающие проблемы
Ручная проверка чревата ошибками. Люди ленятся проверять сами. Контролировать манеру написания кода. “Особые” правила.
![Page 6: Контроль за стилем кода — Кирилл Борисов](https://reader031.vdocuments.pub/reader031/viewer/2022020122/546b28caaf795919088b54d1/html5/thumbnails/6.jpg)
Как это делается в Python?
PEP8 - базовый свод рекомендаций по оформлению кода. Инструменты: pep8 - соблюдение правил PEP8. pylint - именование элементов кода и т.д. pyflakes - логические ошибки в коде. flake8 - pep8 + pyflakes + плагины
![Page 7: Контроль за стилем кода — Кирилл Борисов](https://reader031.vdocuments.pub/reader031/viewer/2022020122/546b28caaf795919088b54d1/html5/thumbnails/7.jpg)
Наш выбор
flake8 https://gitlab.com/pycqa/flake8 Три в одном: pep8, pyflakes, mccabe Часто обновляется Легко расширяется Много готовых плагинов
![Page 8: Контроль за стилем кода — Кирилл Борисов](https://reader031.vdocuments.pub/reader031/viewer/2022020122/546b28caaf795919088b54d1/html5/thumbnails/8.jpg)
Где проверять?
Интеграция с IDE (PyCharm, Emacs, vi) VCS pre-commit hooks (git, Mercurial, SVN) CI (Jenkins, TeamCity) Внешние средства (imhotep, ReviewBot,…)
![Page 9: Контроль за стилем кода — Кирилл Борисов](https://reader031.vdocuments.pub/reader031/viewer/2022020122/546b28caaf795919088b54d1/html5/thumbnails/9.jpg)
Git pre-commit hook
![Page 10: Контроль за стилем кода — Кирилл Борисов](https://reader031.vdocuments.pub/reader031/viewer/2022020122/546b28caaf795919088b54d1/html5/thumbnails/10.jpg)
Jenkins
Интеграция через связку плагинов analysis-core + warnings Запуск на каждый коммит pep8, pyflakes, … Графики трендов “Ломать” сборку при превышении количества предупреждений
![Page 11: Контроль за стилем кода — Кирилл Борисов](https://reader031.vdocuments.pub/reader031/viewer/2022020122/546b28caaf795919088b54d1/html5/thumbnails/11.jpg)
Case study
![Page 12: Контроль за стилем кода — Кирилл Борисов](https://reader031.vdocuments.pub/reader031/viewer/2022020122/546b28caaf795919088b54d1/html5/thumbnails/12.jpg)
Яндекс.ПаспортИнтегрированные pep8 в IDE
![Page 13: Контроль за стилем кода — Кирилл Борисов](https://reader031.vdocuments.pub/reader031/viewer/2022020122/546b28caaf795919088b54d1/html5/thumbnails/13.jpg)
Яндекс.ПаспортИнтегрированные pep8 в IDE Git pre-commit hooks:
– flake8 – flake8-debug – flake8-print – flake8-passport
![Page 14: Контроль за стилем кода — Кирилл Борисов](https://reader031.vdocuments.pub/reader031/viewer/2022020122/546b28caaf795919088b54d1/html5/thumbnails/14.jpg)
Яндекс.ПаспортИнтегрированные pep8 в IDE Git pre-commit hooks:
– flake8 – flake8-debug – flake8-print – flake8-passport
imhotep + github-webhook-wrapper
![Page 15: Контроль за стилем кода — Кирилл Борисов](https://reader031.vdocuments.pub/reader031/viewer/2022020122/546b28caaf795919088b54d1/html5/thumbnails/15.jpg)
Что ещё проверять?
Отладочный код (pdb, ipdb…) Цикломатическая сложность Копипаста Неоптимальные конструкции в коде
![Page 16: Контроль за стилем кода — Кирилл Борисов](https://reader031.vdocuments.pub/reader031/viewer/2022020122/546b28caaf795919088b54d1/html5/thumbnails/16.jpg)
Практика: расширяем flake8
![Page 17: Контроль за стилем кода — Кирилл Борисов](https://reader031.vdocuments.pub/reader031/viewer/2022020122/546b28caaf795919088b54d1/html5/thumbnails/17.jpg)
flake8-todo
![Page 18: Контроль за стилем кода — Кирилл Борисов](https://reader031.vdocuments.pub/reader031/viewer/2022020122/546b28caaf795919088b54d1/html5/thumbnails/18.jpg)
flake8-commas
![Page 19: Контроль за стилем кода — Кирилл Борисов](https://reader031.vdocuments.pub/reader031/viewer/2022020122/546b28caaf795919088b54d1/html5/thumbnails/19.jpg)
flake8-print
![Page 20: Контроль за стилем кода — Кирилл Борисов](https://reader031.vdocuments.pub/reader031/viewer/2022020122/546b28caaf795919088b54d1/html5/thumbnails/20.jpg)
Вопросы?
![Page 21: Контроль за стилем кода — Кирилл Борисов](https://reader031.vdocuments.pub/reader031/viewer/2022020122/546b28caaf795919088b54d1/html5/thumbnails/21.jpg)
Спасибо!
![Page 22: Контроль за стилем кода — Кирилл Борисов](https://reader031.vdocuments.pub/reader031/viewer/2022020122/546b28caaf795919088b54d1/html5/thumbnails/22.jpg)
Полезные ссылки
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: Контроль за стилем кода — Кирилл Борисов](https://reader031.vdocuments.pub/reader031/viewer/2022020122/546b28caaf795919088b54d1/html5/thumbnails/23.jpg)
Полезные ссылки
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