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

Interactive holywars about linters

Interactive holywars about linters

Sobolev Nikita

October 22, 2018
Tweet

More Decks by Sobolev Nikita

Other Decks in Programming

Transcript

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  4. Какие бывают линтеры?
    • Только стиль
    • Best practices
    • Type checking
    4

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  8. А давайте свой линтер запилим!
    10

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  15. От кого зависим?
    • Flake8
    • Eradicate
    • Isort
    • Bandit
    • И еще 20 плагинов
    20

    View full-size slide

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

    View full-size slide

  17. Что такое сложность?
    22

    View full-size slide

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

    View full-size slide

  19. Водопад сложности
    1.Строчка
    2.Метод
    3.Класс
    4.Модуль
    24

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  22. Бонусы!
    • 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

    View full-size slide

  23. 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

    View full-size slide

  24. Ваши вопросы?
    https://github.com/sobolevn
    41

    View full-size slide