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
72
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
160
ИИ-Агенты в каждый дом – Алексей Порядин, PythoNN
sobolevn
0
150
Внутреннее устройство сборки мусора в CPython 3.14+ – Сергей Мирянов, PythoNN
sobolevn
0
54
Генератор байткода и байткод генератора, Михаил Ефимов, PythoNN
sobolevn
0
44
Дотянуться до кремния. HighLoad Python: SIMD, GPU – Пётр Андреев, PythoNN
sobolevn
0
50
Проектирование — это когда чувствуешь, а не какие-то там циферки, Николай Хитров, PythoNN
sobolevn
0
73
Continuous profiling, Давид Джалаев, PythoNN
sobolevn
0
70
Михаил Гурбанов – Are you NATS? @ PythoNN
sobolevn
0
64
Дмитрий Бровкин – Почему исправление опечаток сложнее, чем кажется, и как мы с этим српавляемся @ PythoNN
sobolevn
0
41
Other Decks in Programming
See All in Programming
オープンソースソフトウェアへの解像度🔬
utam0k
4
600
Back to the Future: Let me tell you about the ACP protocol
terhechte
0
130
開発生産性を上げるための生成AI活用術
starfish719
2
230
高度なUI/UXこそHotwireで作ろう Kaigi on Rails 2025
naofumi
4
3.7k
NetworkXとGNNで学ぶグラフデータ分析入門〜複雑な関係性を解き明かすPythonの力〜
mhrtech
3
1.2k
どの様にAIエージェントと 協業すべきだったのか?
takefumiyoshii
2
630
CSC509 Lecture 06
javiergs
PRO
0
260
(Extension DC 2025) Actor境界を越える技術
teamhimeh
1
240
Web Components で実現する Hotwire とフロントエンドフレームワークの橋渡し / Bridging with Web Components
da1chi
3
2k
Goで実践するドメイン駆動開発 AIと歩み始めた新規プロダクト開発の現在地
imkaoru
4
770
CSC509 Lecture 01
javiergs
PRO
1
440
iOSエンジニア向けの英語学習アプリを作る!
yukawashouhei
0
190
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
850
Balancing Empowerment & Direction
lara
4
680
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.6k
What's in a price? How to price your products and services
michaelherold
246
12k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6.1k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.2k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
45
2.5k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
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