おそらくはそれさえも平凡な日々

golintをCIする

go vetは失敗時に終了ステータスがnon zeroなんだけど、golintは指摘項目があっても終了ステータスが0なのでエラー扱いにならない。golintはコーディング規約的な推奨事項なのでエラー扱いじゃないのは妥当そう。

ただ、細かい指摘し合いで消耗したくないのでgolintで警告が出たらCIがコケるようにしたかった。以下のようにして無理やりエラーを出すようにした。

#/bin/sh
golint ./... | tee .golint.txt
test ! -s .golint.txt

標準出力になんか出てたら失敗になるようにという感じ。出力ちゃんと見たいからteeかましてる。

更にいうと、golintは$GOOSを見てくれているので$GOOSを切り替えながら回せばビルド対象毎の警告も網羅できる。

#/bin/sh
rm -f .golint.txt
for os in "linux" "darwin" "freebsd" "windows"; do
    GOOS=$os golint ./... | tee -a .golint.txt
done
test ! -s .golint.txt

この辺の仕組みをmackerel-agentのテストに入れてTravisで回すようにしました。

他に良い方法ありそうだったら教えて下さい!

created at
last modified at

2015-01-12T19:19:07+0900

comments powered by Disqus