blogですかい

株式会社Loco Partnersに勤めるエンジニアうちの一人のブログ。仕事、プライベートで学んだことなどを発信し、その内容がたとえ少数でも誰かの役に立ったらなら、それはとっても嬉しいなって

禁止しているステートメントがGitリポジトリ内に含まれていないかJenkins氏に監視させる

ウチのシマじゃその関数は禁止じゃけぇの

弊社ではvar_dumpの使用を原則禁止にしている。
デバッグのために入れたvar_dumpをリリースコードに残してしまうという事故を無くすためである。

でも手軽に使えて便利だし、「一瞬だけだから」と思って使ってしまうかもしれない。
また、var_dumpやprint_r以外で配列やオブジェクトをダンプできない環境では、使用せざるを得ない。

リリースコードにvar_dumpが入ってしまう可能性をゼロにはできない気がしたので、Jenkinsに監視してもらうことにした。

スクリプトを作成する

下記のようなスクリプトをgit-grep-wc.shという名前で作成する。

#!/bin/sh
output=`git grep $1`
echo $output 1>&2
exit `echo -n ${output} | wc -w`

作成したスクリプトを適当な場所に置き、実行可能にする。

[prompt]$ sudo mv git-grep-wc.sh /usr/local/bin/git-grep-wc.sh
[prompt]$ sudo chmod a+x /usr/local/bin/git-grep-wc.sh

var_dumpがどこかに記述されたgitリポジトリ内で git-grep-wc.sh var_dump を実行すると、 実行したスクリプトは異常終了する(戻り値はマッチした行数)

Jenkins のプロジェクトに登録する

下の画像のように、ビルドの内容としてスクリプトを登録する。

f:id:oh-sky:20130412222911p:plain

ワークエリア内のコードにvar_dumpやprint_rが記述されているとスクリプトは異常終了するので、 ビルドは失敗となり、何かしらのアラートが届くという仕組み。

git-grepの結果はstderrに出力されるので、ビルドログ等を見ればどこに問題があるのかがわかり、すぐに対応ができます。