こんにちは。OctocatとGopherをこよなく愛する@pockeです。
今週のSideCIのアップデート情報です。
SideCIの対応言語としてGo言語を追加しました
以下の3つのツールを選択することが可能です。
- go vet
- golint
- gometalinter
それぞれで特色が違うため、簡単に紹介いたします。
Go Vet
go vet
は、コンパイラが検出できないような、バグの可能性があるコードを検出します。
例えば、Printf
関数のフォーマットの不整合や、よく使われる関数名のインターフェイスの不整合などです。
// %d がひとつ多い fmt.Printf("%d %d", 10) // func (*Foo) UnmarshalJSON([]byte) error が標準的 func (*Foo) UnmarshalJSON(string) error
また、JSONなどを使用する際に使用するタグの書式指定ミスも検出します。
type Foo struct { Bar string `json:"bar` // クオートが閉じていない }
Go Lint
golint
はgo vet
とは異なり、コーディングスタイルの問題を検出します。
例えば、公開する関数にはその説明をコメントに書くことを指摘したり、以下のような変数名のルールに沿っているかを確認します。
bad | good |
---|---|
foo_bar | fooBar |
fooUrl | fooURL |
fooId | fooID |
Go Meta Linter
Go Meta Linter は、上記二つを含む複数のGo言語用Lintツールをまとめて実行できるツールです。
go vet
, golint
の他には、デッドコードや重複コードの検出、コードの複雑さのチェックなどをすることが可能です。
SideCIでは、コードを様々な面から検査したい場合にはGo Meta Linterを、スタイルやバグに特化してチェックしたい場合にはgo vet
, golint
をそれぞれお使いいただくことができます。
この機会にSideCIを触っていただけたら幸いです!