Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Interactive holywars about linters
Search
Sobolev Nikita
October 22, 2018
Programming
0
77
Interactive holywars about linters
Sobolev Nikita
October 22, 2018
Tweet
Share
More Decks by Sobolev Nikita
See All by Sobolev Nikita
Чего вы не знали о строках в Python – Василий Рябов, PythoNN
sobolevn
0
200
ИИ-Агенты в каждый дом – Алексей Порядин, PythoNN
sobolevn
0
180
Внутреннее устройство сборки мусора в CPython 3.14+ – Сергей Мирянов, PythoNN
sobolevn
0
72
Генератор байткода и байткод генератора, Михаил Ефимов, PythoNN
sobolevn
0
67
Дотянуться до кремния. HighLoad Python: SIMD, GPU – Пётр Андреев, PythoNN
sobolevn
0
73
Проектирование — это когда чувствуешь, а не какие-то там циферки, Николай Хитров, PythoNN
sobolevn
0
100
Continuous profiling, Давид Джалаев, PythoNN
sobolevn
0
110
Михаил Гурбанов – Are you NATS? @ PythoNN
sobolevn
0
150
Дмитрий Бровкин – Почему исправление опечаток сложнее, чем кажется, и как мы с этим српавляемся @ PythoNN
sobolevn
0
55
Other Decks in Programming
See All in Programming
AI時代の認知負荷との向き合い方
optfit
0
130
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
1
1.1k
Data-Centric Kaggle
isax1015
2
760
CSC307 Lecture 09
javiergs
PRO
1
810
FOSDEM 2026: STUNMESH-go: Building P2P WireGuard Mesh Without Self-Hosted Infrastructure
tjjh89017
0
140
そのAIレビュー、レビューしてますか? / Are you reviewing those AI reviews?
rkaga
6
4.5k
カスタマーサクセス業務を変革したヘルススコアの実現と学び
_hummer0724
0
520
CSC307 Lecture 06
javiergs
PRO
0
680
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
210
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
5.9k
MUSUBIXとは
nahisaho
0
120
AgentCoreとHuman in the Loop
har1101
5
220
Featured
See All Featured
30 Presentation Tips
portentint
PRO
1
210
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.2k
Chasing Engaging Ingredients in Design
codingconduct
0
110
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
220
Un-Boring Meetings
codingconduct
0
200
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.7k
Accessibility Awareness
sabderemane
0
47
How to build a perfect <img>
jonoalderson
1
4.9k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.3k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
210
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
54
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Transcript
Холиварный доклад про линтеры Никита Соболев, wemake.services
Зачем нам линтеры? 2
• Делать код похожим • Облегчать жизнь на ревью •
Находить то, что трудно найти 3
Какие бывают линтеры? • Только стиль • Best practices •
Type checking 4
5 Тесты Линтеры CR
6
None
Вот тут возникают проблемы 8
Как выглядит процесс? • Присылают код • Ревьюер видит ошибку
• Вот бы она больше не возникала 9
А давайте свой линтер запилим! 10
Но ведь уже есть другие? 11
12 Рубрика "Почему не pylint?"
SonarQube 13
Flake8 14
15 Плагины Плагины Плагины Плагины Плагины Плагины Плагины Плагины Плагины
Плагины Плагины Плагины Плагины
wemake-python-styleguide Самый строгий линтер в мире 16
Что значит – строгий? 17
18
• Много проверок ~200 • Без компромиссов • Без настроек
(WIP) 19
От кого зависим? • Flake8 • Eradicate • Isort •
Bandit • И еще 20 плагинов 20
Что проверяем? • Сложность • Имена • Консистентность • Лучшие
практики 21
Что такое сложность? 22
Какие бывают метрики? • Cyclomatic Complexity • Arguments / Statements
/ Returns • Cohesion / Coupling • Jones Complexity 23
Водопад сложности 1.Строчка 2.Метод 3.Класс 4.Модуль 24
И нужно рефакторить 25
А все остальное субъективно! 26
27
None
None
30
None
None
33
None
None
None
None
Бонусы! • 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
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
Ваши вопросы? https://github.com/sobolevn 41