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
56
Interactive holywars about linters
Sobolev Nikita
October 22, 2018
Tweet
Share
More Decks by Sobolev Nikita
See All by Sobolev Nikita
PythoNN: Василий Рябов – "Парсинг бинарных данных с помощью ctypes, или пишем на питоне как на Си"
sobolevn
0
130
GitHub Planet - OpenSource
sobolevn
0
170
Polymorphism and Typeclasses
sobolevn
2
100
New GitHub Features
sobolevn
0
33
Problems of static analysis in Python
sobolevn
0
71
Announcing typed-linter
sobolevn
0
190
About GitHub Stars
sobolevn
0
150
Typing Django
sobolevn
0
200
Functional programming for beginners
sobolevn
0
240
Other Decks in Programming
See All in Programming
大規模マルチテナントを解決するYugabyteDBという選択肢
nnaka2992
1
250
Modern Angular: Renovation for Your Applications
manfredsteyer
PRO
0
140
Ruby メモリ管理 プログラミング
megmogmog1965
0
130
CSC307 Lecture 05
javiergs
PRO
0
210
今こそ始める、CDKコンストラクトライブラリ開発 ― 入門から実践まで
tmokmss
1
930
企業向け生成AIアプリの 開発から得られた知見
takaakikakei
0
310
Javaの現状2024夏 / Java current status 2024 summer
kishida
4
1.4k
feature環境をGitHub ActionsとCloudFormationでいい感じに管理する
nealle
2
310
CSC307 Lecture 10
javiergs
PRO
0
310
リハビリmruby
kishima
1
160
小さな開発会社を作った理由
polidog
0
1.9k
初心者がおさえておきたいAWS CDKのベストプラクティス 2024
konokenj
15
7.3k
Featured
See All Featured
Building Adaptive Systems
keathley
34
2k
Bash Introduction
62gerente
607
210k
Pencils Down: Stop Designing & Start Developing
hursman
118
11k
[RailsConf 2023] Rails as a piece of cake
palkan
35
4.4k
Why You Should Never Use an ORM
jnunemaker
PRO
51
8.9k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
662
120k
Large-scale JavaScript Application Architecture
addyosmani
506
110k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
23
1.9k
Faster Mobile Websites
deanohume
303
30k
RailsConf 2023
tenderlove
16
720
GitHub's CSS Performance
jonrohan
1026
450k
The Language of Interfaces
destraynor
151
23k
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