post Image
goの静的解析ライブラリのいろいろまとめ

はしがき

以前、go vetについて触れましたが、
公式以外でも循環複雑度解析をしてくれたりとか、
いろいろ良いライブラリがあるので、その辺の紹介を。(後おまけでvimの設定:p

静的解析ライブラリ 御三家的なアレ。

前の記事でも紹介したgo謹製のツールですね。

保存時とかに掛けると、使ってないimportを自動でお掃除してくれたり、追加してくれたりする、賢い子です。

構文上微妙なものとかをsuggestしてくれます。
私はvimのファイル保存時にgo fmt,go lintは自動で掛けるようにしています 🙂

静的解析ライブラリ 複雑度、重複コードチェックとか少し凝ったやつ

分岐数などのプログラムの構造の複雑さ、循環複雑度を測ってくれます。
あくまで指標なので普段からゴリゴリ使うものでもないですが、リファクタの対象探しとかに良いかなと。
-over とかで閾値を決めて定期的に探したり、大きいモジュールを作った時にチェックしてみると楽しい。

エラーハンドリングしてない奴を抽出してくれます。
個人的にはエラーはちまちまハンドリングするんじゃなくて、上の層でごそっと捕まえてロギングするなりしたいので
そんな使ってない。(下手に握り潰されてもやなので、回復処理がないならとりあえず上にちゃんと返せ派)

重複コード検出をしてくれます。

vimmer向け

go imports,go vet,go lint 周りは保存時にかけちゃうのがオススメです。(go fmtは言わずもがな)
syntasticあたりとか
vim-goとかで。
vim-goはチュートリアルも充実してて便利です。

 NeoBundle 'scrooloose/syntastic'
 let g:syntastic_mode_map = {
 \ "mode" : "active",
 \ "active_filetypes" : ["go"],
 \}
 let g:syntastic_go_checkers = ['go', 'golint', 'govet']
 let g:go_fmt_autosave = 1
 let g:syntastic_aggregate_errors = 1
 augroup GoSaveHook
 autocmd!
 autocmd BufWritePre *.go GoImports
 augroup END

とか(適当ですいません。)
そういえば最近NeoBundle聞かないなぁ。

YOU全てかけちゃいなよ なライブラリ

だいたい上で紹介したもの+αをまとめて全部かけてくれる子もいます。
全ての項目を有効にした場合、結構な時間が掛かるのでCIで常時回すのは自己判断で..。
ただ手軽なので、一度回してみると良いと思います 🙂

gometalinter

gometalinter --install --update
gometalinter ./...

サボってると大量に出るので、metalinterのformatがしたくなると言う。

私見

個人的に、レビューでの構文指摘などは不毛なので、lint,vet,fmt通ればOK、みたいなボーダーラインやルールを作ると、
構造設計・パフォーマンスなど本来レビューするべきことに集中できるのでオススメです。
duplやerrcheck,cycloなどは定常的にCIで,,ってほどには正直思わないのですが、
コードベースが大きくなるにつれ、複雑度がおかしくなってゼウスクラスが出来上がったりするので
コードベースのたまのヘルスチェック くらいな気持ちで良いかなーと思ってます。


『 Go 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。