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
51
Проектирование — это когда чувствуешь, а не какие-то там циферки, Николай Хитров, PythoNN
sobolevn
0
73
Continuous profiling, Давид Джалаев, PythoNN
sobolevn
0
71
Михаил Гурбанов – Are you NATS? @ PythoNN
sobolevn
0
65
Дмитрий Бровкин – Почему исправление опечаток сложнее, чем кажется, и как мы с этим српавляемся @ PythoNN
sobolevn
0
43
Other Decks in Programming
See All in Programming
2分台で1500examples完走!爆速CIを支える環境構築術 - Kaigi on Rails 2025
falcon8823
3
3.7k
CSC509 Lecture 05
javiergs
PRO
0
300
CSC305 Lecture 05
javiergs
PRO
0
220
CSC509 Lecture 03
javiergs
PRO
0
340
bootcamp2025_バックエンド研修_WebAPIサーバ作成.pdf
geniee_inc
0
110
Goで実践するドメイン駆動開発 AIと歩み始めた新規プロダクト開発の現在地
imkaoru
4
850
Go言語の特性を活かした公式MCP SDKの設計
hond0413
1
230
iOSエンジニア向けの英語学習アプリを作る!
yukawashouhei
0
200
TFLintカスタムプラグインで始める Terraformコード品質管理
bells17
2
190
チームの境界をブチ抜いていけ
tokai235
0
180
Six and a half ridiculous things to do with Quarkus
hollycummins
0
180
Pull-Requestの内容を1クリックで動作確認可能にするワークフロー
natmark
2
510
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Git: the NoSQL Database
bkeepers
PRO
431
66k
The Cost Of JavaScript in 2023
addyosmani
55
9k
Done Done
chrislema
185
16k
Scaling GitHub
holman
463
140k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.5k
Java REST API Framework Comparison - PWX 2021
mraible
34
8.9k
The Power of CSS Pseudo Elements
geoffreycrofte
79
6k
Into the Great Unknown - MozCon
thekraken
40
2.1k
Designing for humans not robots
tammielis
254
26k
The World Runs on Bad Software
bkeepers
PRO
72
11k
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