Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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

こちらの記事では、git commit の際(pre-commit)に、変数の中身を人間が見やすい形で出力する Data::Printeruseしているのかどうか The Silver Searcheragコマンドを使ってPerlスクリプトを検索し、残っていればcommitできないようにしています。

この発想を借りて、PythonではPerlのDDPに相当するのが pprint なので、これを検索文字列として以下のようにすれば同様のことができそうです。

pre-commit
#!/bin/sh

word='pprint'

if ag --python $word $(git rev-parse --show-toplevel); then
    echo "some file contains code for debugging: $word"
    exit 1;
fi

個人的には「pprintが残っているかどうか」だけじゃなく、「pprintが残っているかどうか、残っていればどこに残っているのか」まで出力して欲しいなと思ったため、元記事にある > /dev/null の部分を削除しています。これでcommit時にagコマンドでの検索結果をそのまま出力してくれるので、こちらの方が便利そうです。

また、agを導入している場合は上記のpre-commitファイルで問題ないですが、導入していない場合はgrepを使った下記のスクリプトでも良さそうです。(ただし、.pyという拡張子が付いているファイルが検索対象となるので、agと多少挙動が変わります。)

pre-commit
#!/bin/sh

word='pprint'

if grep -r $word $(git rev-parse --show-toplevel) --include='*.py'; then
    echo "some file contains code for debugging: $word"
    exit 1;
fi

※ そもそもデバッグ時に pprint を使っていないよ、という人がいると思います。そういった人はこの発想を元に デバッグに使っているコードを検索対象とする ようにすれば良さそうですね。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away