我想查看只有我编写的所有 TODO 注释,这些注释存在于 git 管理的当前代码库中。
到目前为止,我所得到的是打印我在完整的 git 历史中创建或修改的所有 TODO 注释:git log -p --author="My name" -S TODO | grep "\+.*TODO"
但是这个工具链列出了所有曾经写过的 TODO 注释,甚至那些我已经解决并因此再次从代码中删除的注释。
什么是合适的工具链,可以逐行搜索当前代码库,检查它是否包含“TODO”以及该行是否由我编写并打印这些行?
我想查看只有我编写的所有 TODO 注释,这些注释存在于 git 管理的当前代码库中。
到目前为止,我所得到的是打印我在完整的 git 历史中创建或修改的所有 TODO 注释:git log -p --author="My name" -S TODO | grep "\+.*TODO"
但是这个工具链列出了所有曾经写过的 TODO 注释,甚至那些我已经解决并因此再次从代码中删除的注释。
什么是合适的工具链,可以逐行搜索当前代码库,检查它是否包含“TODO”以及该行是否由我编写并打印这些行?
You can combine git blame with grep.
Like this (not the best one, but should work)
git grep -l TODO | xargs -n1 git blame | grep 'Your name' | grep TODO
Improved versions might combine line numbers found by first grep with git blame's ability to show only given lines.
我想添加aragaer和Kyle的解决方案:
git grep -l TODO | xargs -n1 混帐责备 -f -n -w | grep "$(git config user.name)" | grep 待办事项 | sed "s/.\{9\}//" | sed "s/(.*)[[:space:]]*//"
这打印:
Cpp/CoolClass.cpp 123 //TODO: 我们真的需要这个吗? Cpp/AnotherClass.cpp 42 //TODO: 我们错过了什么吗? Java/MyListener.java 23 //TODO:优化
我发现用户名可以有空格,这样更容易通过电子邮件地址过滤。此外,@todo(小写)是我在文档块中添加注释的方式,所以我添加了“忽略小写/大写”标志。这是我的解决方案:
git grep -il TODO | xargs -n1 git blame -M -f -e | grep -i TODO | grep $(git config user.email)
我刚刚遇到的小建议,更大的回购和一些二进制文件。该xargs -ni git blame部分导致信号 13 出现意外术语。我通过-I在初始 git grep 上添加一个开关来解决这个问题。
FWIW 这是完整的错误(去谷歌)
xargs: git: terminated by signal 13
这是我使用的一个示例(也删除了我的 grep 以查看全部)
git grep -I -l TODO | xargs -n1 git blame -f -n -w | grep TODO | sed "s/.\{9\}//" | sed "s/(.*)[[:space:]]*//"
完成使用git config来获取您的姓名:
git grep -l TODO | xargs -n1 git blame | grep "$(git config user.name)" | grep TODO