Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Interactive holywars about linters

Interactive holywars about linters

8c3a2ebf7c2b84f8390d99c7bf8c8a48?s=128

Sobolev Nikita

October 22, 2018
Tweet

Transcript

  1. Холиварный доклад про линтеры Никита Соболев, wemake.services

  2. Зачем нам линтеры? 2

  3. • Делать код похожим • Облегчать жизнь на ревью •

    Находить то, что трудно найти 3
  4. Какие бывают линтеры? • Только стиль • Best practices •

    Type checking 4
  5. 5 Тесты Линтеры CR

  6. 6

  7. None
  8. Вот тут возникают проблемы 8

  9. Как выглядит процесс? • Присылают код • Ревьюер видит ошибку

    • Вот бы она больше не возникала 9
  10. А давайте свой линтер запилим! 10

  11. Но ведь уже есть другие? 11

  12. 12 Рубрика "Почему не pylint?"

  13. SonarQube 13

  14. Flake8 14

  15. 15 Плагины Плагины Плагины Плагины Плагины Плагины Плагины Плагины Плагины

    Плагины Плагины Плагины Плагины
  16. wemake-python-styleguide Самый строгий линтер в мире 16

  17. Что значит – строгий? 17

  18. 18

  19. • Много проверок ~200 • Без компромиссов • Без настроек

    (WIP) 19
  20. От кого зависим? • Flake8 • Eradicate • Isort •

    Bandit • И еще 20 плагинов 20
  21. Что проверяем? • Сложность • Имена • Консистентность • Лучшие

    практики 21
  22. Что такое сложность? 22

  23. Какие бывают метрики? • Cyclomatic Complexity • Arguments / Statements

    / Returns • Cohesion / Coupling • Jones Complexity 23
  24. Водопад сложности 1.Строчка 2.Метод 3.Класс 4.Модуль 24

  25. И нужно рефакторить 25

  26. А все остальное субъективно! 26

  27. 27

  28. None
  29. None
  30. 30

  31. None
  32. None
  33. 33

  34. None
  35. None
  36. None
  37. None
  38. Бонусы! • layer-linter - https://github.com/seddonym/ layer_linter • cohesion - https://github.com/mschwager/

    cohesion • vulture - https://github.com/jendrikseipp/ vulture • radon - https://github.com/rubik/radon 38
  39. 39

  40. Gratis 40 @Shikhov-P @proha @malinoff @valignatev @AlexArcPy @tipabu @mcproger @TyVik

    @geoc0ld @riyasyash @AlwxSin @vergeev @barsovichok @sathwikmatsa @tommbee @lensvol @SheldonNunes @lk-geimfari @novikovfred @ming060 @Roxe322 @vsmaxim @zzz @stebunovd
  41. Ваши вопросы? https://github.com/sobolevn 41