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
go-critic
Search
Oleg Kovalov
September 25, 2018
Programming
65
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
go-critic
Oleg Kovalov
September 25, 2018
More Decks by Oleg Kovalov
See All by Oleg Kovalov
Embedded Postgres in Go
olegkovalov
0
51
Hedged requests in Go
olegkovalov
0
420
Writing faster Redis client
olegkovalov
0
220
Moments before main()
olegkovalov
0
110
За пару мгновений до main() [RUS]
olegkovalov
1
650
Bencode - serializer and deserializer in Go
olegkovalov
0
670
impguard - protect your project structure
olegkovalov
0
760
Versioning
olegkovalov
0
140
Modifiability
olegkovalov
0
140
Other Decks in Programming
See All in Programming
AI時代の仕事技芸論〜ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ(スクフェス仙台 2026バージョン)
kuranuki
0
660
音楽のための関数型プログラミング言語mimiumにおける多段階計算の活用
tomoyanonymous
1
340
5分で問診!Composer セキュリティ健康診断
codmoninc
0
370
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
3
970
継続モナドとリアクティブプログラミング
yukikurage
3
610
AIエージェントで 変わるAndroid開発環境
takahirom
2
680
symfony/aiとlaravel/boost
77web
0
130
AIキャラアプリkaiwaの低遅延音声通話基盤をどう作ったか - AWS Gravitonで支える低遅延・低コストAI Agent基盤
mogamit
0
170
【やさしく解説 設計編 #1】「ドメイン駆動」と「実装駆動」ってなに? 〜設計の考え方を、たとえ話で学ぼう〜
panda728
PRO
1
120
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
280
信頼性について考えてみる(SRE NEXT 2026 miniLT)
hayama17
0
200
Welcome to the "Parametricity" 🏙️ − Generic だけど Specific な世界 −
guvalif
PRO
1
170
Featured
See All Featured
Discover your Explorer Soul
emna__ayadi
2
1.2k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
180
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
320
Are puppies a ranking factor?
jonoalderson
1
3.7k
Music & Morning Musume
bryan
47
7.3k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
Making Projects Easy
brettharned
120
6.7k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
900
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
600
From π to Pie charts
rasagy
0
240
The Cult of Friendly URLs
andyhume
79
6.9k
Transcript
Go-critic Static analysis in Go by Oleg Kovalov
Why static analysis? - Better code - Human friendly -
Optimal code Good examples: - golint - go vet - gometalinter - golangci-lint - go-critic
Project status - 58 checks implemented + 54 in current
todo - Optimistic merging (10+ contributors)
Types of analysis - Diagnostics - Suspicious code - Code
style - Can be more readable - Performance - Can be faster
Diagnostic check: nilValReturn
Code style check: namedConst
Performance check: indexAlloc
Go-toolsmith - astfmt - Print ast.Node with %s - astp
- Predicates for AST nodes - astcopy - Deep copy for AST nodes - astequal - Deep equal for AST nodes - astinfo - Useful AST information - strparse - Parse string to AST Clickable link: github.com/go-toolsmith
Demo: problem description - strings.Index("<long string>", "i") vs - strings.IndexByte("<long
string>", 'i') BenchmarkIndex-4 100000000 19.3 ns/op BenchmarkIndexByte-4 100000000 16.4 ns/op
Make a new rule - go get go-critic - make
new <checker_name> - adding code examples (positive & negative) - copy-pasting coding - adding docs - git push - .... - PROFIT Code: https://bit.ly/2NDbOtV
Trophies Our trophies collection: go-critic.github.io/trophies.html
Thank you - github.com/go-critic/go-critic - github.com/go-toolsmith - twitter.com/oleg_kovalov - github.com/cristaloleg