Masteries

技術的なことや仕事に関することを書いていきます.

デバッグ用のコードが残っているとGitでコミットできないようにする(改)

だいぶ前に, こういったエントリを書きました:

papix.hatenablog.com

一方で, こちらのエントリにこういったブクマコメントを頂いていました:

デバッグ用のコードが残っているとGitでコミットできないようにする - Masteries

文字列リテラルの中とか関係ないところにDDPという文字列が現れる場合はどうするんだろう?

2017/04/04 09:46
b.hatena.ne.jp

これについては仰るとおりで, 例えばテストなどで意図的にData::Printer(DDP)を使っている場合は引っかかってしまってコミットできなくなってしまいます.

この対策としては, 完全ではないのですが, 自分は「意図的にData::Printerを使っているファイルはチェックの対象外とする」ことで回避しています. 以下の例では, lib/Foo.pm, lib/Bar.pm, lib/Baz.pm に限って DDP というテキストが含まれていても許容するようになります:

#!/bin/sh

if ag --perl DDP $(git rev-parse --show-toplevel)/lib $(git rev-parse --show-toplevel)/t \
    | grep -v 'lib/Foo.pm' \
    | grep -v 'lib/Bar.pm' \
    | grep -v 'lib/Baz.pm' \
; then
    echo "some file contains code for debugging: DDP"
    exit 1;
fi

課題としては, チェックの対象外にしたファイルでデバッグ用のコードが残っている場合, 当然ですが気づけません(が, チェックの対象外にするのが数ファイル程度なら, これでも十分に役立つと思います).