我想创建一个git pre commit hook,以阻止取消注释pytest.set_trace()
或pdb.set_trace()
以及其他.set_trace()
。这是因为我经常从命令行调试,有时会忘记我在代码中留下了调试语句。通过使用预提交钩子,我应该能够在将来避免这种情况。
Keul's Blog有一个解决方案,但会话必须在git repo的根目录下才能正常工作,否则会抱怨。
我基本上希望not
等同于grep
#(\s+)?.*\.set_trace\(\)
请参阅regexr测试
由于
答案 0 :(得分:1)
正确的正则表达式为^\s?[^#]+\.set_trace\(\)
说明:
^
以\s?
匹配一个空格或更多或没有空格[^#]+
匹配除#
之外的所有字符\.set_trace\(\)
与任何以.set_trace()
结尾的函数匹配
pdb
或pytest
set_trace
来更加明确,但是可能还有其他包含set_trace
的软件包示例python代码
import pdb
if __name__ == "__main__":
pdb.set_trace()
pytest.set_trace()
# pdb.set_trace()
# pytest.set_trace()
#pytest.set_trace()
# pdb.set_trace()
# somethingelse.set_trace()
使用ripgrep
$ rg '^\s?[^#]+\.set_trace\(\)'
main.py
4: pdb.set_trace()
5: pytest.set_trace()
现在,我们可以使用git-secrets
来阻止我们
$ git secrets --add '^\s?[^#]+\.set_trace\(\)'
$ git add main.py
$ git commit -m 'test'
main.py:4: pdb.set_trace()
main.py:5: pytest.set_trace()