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 の静的解析ツールの作成と活用
Search
Takumasa Sakao
February 22, 2019
Programming
0
2.5k
Go の静的解析ツールの作成と活用
Takumasa Sakao
February 22, 2019
Tweet
Share
More Decks by Takumasa Sakao
See All by Takumasa Sakao
k9s のプラグイン機構とモダンな watch コマンド、viddy の紹介
sachaos
0
1.2k
Cloud Run でシェルスクリプトを動かす
sachaos
0
2.3k
GAE を利用したゲーム内通貨管理サービスの運用〜可用性を損なわないための工夫〜
sachaos
0
1.2k
レイトレーシングとGoroutine
sachaos
2
970
OSSを作っている時に 考えていること ーUNIX哲学を添えてー
sachaos
2
410
GCPをフル活用したゲームログ収集基盤の構築
sachaos
6
2.7k
Other Decks in Programming
See All in Programming
1BRC--Nerd Sniping the Java Community
gunnarmorling
0
340
Ruby Function Composition
bkuhlmann
1
330
if constexpr文はテンプレート世界のラムダ式である
faithandbrave
3
650
効率化に挑戦してみたらモバイル開発が少し快適になった話
ryunakayama
0
130
Milestoner
bkuhlmann
1
410
大規模UIKitベースアプリへのTCAの段階的導入/gradual-adoption-of-tca-in-a-large-scale-uikit-based-app
takehilo
1
180
Amazon SQSコンシューマー疎結合への旅 - 出張! #DevelopersIO IT技術ブログの中の人が語る勉強会 #3
quiver
0
270
Rethinking UI building strategies @ SFI 2024
letelete
0
270
Build Apps for iOS, Android & Desktop in 100% Kotlin With Compose Multiplatform (mDevCamp 2024)
zsmb
0
340
単体テストを書かない技術 #phpcon_odawara
o0h
PRO
27
8.3k
Code Reviews
bkuhlmann
4
890
Prepare for Jakarta EE 11 - Performance and Developer Productivity
ivargrimstad
0
820
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
121
16k
In The Pink: A Labor of Love
frogandcode
138
21k
Code Review Best Practice
trishagee
55
15k
StorybookのUI Testing Handbookを読んだ
zakiyama
13
4.6k
BBQ
matthewcrist
80
8.8k
Design by the Numbers
sachag
274
18k
Done Done
chrislema
178
15k
GraphQLとの向き合い方2022年版
quramy
32
12k
The Pragmatic Product Professional
lauravandoore
25
5.8k
Designing with Data
zakiwarfel
96
4.8k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3.1k
How GitHub Uses GitHub to Build GitHub
holman
468
290k
Transcript
Go Akatsuki Geek Live @sachaos
>/=& • @sachaos ( @) Twitter, GitHub
*B8 #% - • 2.: 61'< 4) 3 0; 3?+:C9 Go, GCP % %"$!7 • 5A>(% %,
Go 1.13 error
Go 1.13
Go 1.13
" !$ github.com/pkg/errors # ! &'!%
:smile:
== Wrap
== • == xerrors.Is
Wrap • Wrap
Wrap • Wrap
#* • ) => ' '&%'
• ("$ ! " )
($'" ) '"!# % & &
'"& Wikipedia
Go 714, • 714, parse AST %)$52
/ *'3 • Go +08 • Go '3 6#!"&( 8 AST %) go/ast $.- go/types SSA golang.org/x/tools/go/ssa golang.org/x/tools/go/analysis
github.com/sachaos/xerrchk == ! Wrap
== 1. AST (go/ast) 2.
error interface (go/types)
1. 2. error
0" Wrap '. • /) error #! *(return)1 Wrap (xerrors.Errorf(“wrap:
%w”, err)) 3- • ,+&2 <= Wrap Wrap error interface $ %(
return Wrap • MayFail1() err
• MayFail2() err Wrap • MayFail3 error Wrap • return Wrap MayFail3 err Wrap MayFail2 err
SSA • Static Single Assignment •
• golang.org/x/tools/go/ssa
return Wrap • return t3 t2,
t5 (φ) • t2 MayFail2 Wrap NG • t5 t4 Wrap OK
SSA • AST "!
#
• Go 1.13 error $%&#')*("-, 8 •
xerrors "0/. 7362" • 7362 Go 4+ • ! Qiita 1 4 "5 https://qiita.com/sachaos/items/f6b3e66931d7f73dd68d