如何列出当前git托管代码库中的所有TODO消息

Lar*_*erg 17 git text-search todo git-commit

我想看到所有TODO评论,只有我写的并且存在于当前代码库中,这是git托管的.

到目前为止我所做的是打印我在完整的git历史记录中创建或修改的所有TODO注释:git log -p --author="My name" -S TODO | grep "\+.*TODO"

但是这个工具链列出了所有写过的TODO评论,甚至是那些我已经解决并因此从代码中再次删除的评论.

有没有一个工具可以逐行搜索当前的代码库,检查它是否包含"TODO",如果这行是由我创作然后打印这些行?

ara*_*aer 17

你可以结合git blamegrep.

像这样(不是最好的,但应该工作)

git grep -l TODO | xargs -n1 git blame | grep 'Your name' | grep TODO
Run Code Online (Sandbox Code Playgroud)

改进版本可能会将第一个grep找到的行号与git blame仅显示给定行的能力结合起来.

  • 我改进了一下:`git grep -l TODO | xargs -n1 git blame | grep $(git config user.name)| grep TODO`.现在我可以在每台机器上使用[相同的别名](https://github.com/DerZyklop/dotfiles/blob/master/.aliases#L39).因为我有不同的工作和私人用户名./ cc @ lars-blumberg (3认同)

Lar*_*erg 13

我想添加aragaerKyle的解决方案:

  • 使用grep config来获取你的名字
  • 显示TODO注释的文件名和行号
  • 删除提交SHA,作者姓名和提交时间戳
git grep -l TODO | xargs -n1 git blame -f -n -w | grep "$(git config user.name)" | grep TODO | sed "s/.\{9\}//" | sed "s/(.*)[[:space:]]*//"

这打印:

Cpp/CoolClass.cpp 123 //TODO: Do we really need this?
Cpp/AnotherClass.cpp 42 //TODO: Do we miss something?
Java/MyListener.java 23 //TODO: Optimize


StR*_*StR 5

我发现用户名可以有空格,所以通过电子邮件地址过滤更容易。另外,@todo(小写)是我在文档块中添加注释的方式,因此我添加了“忽略小写/大写”标志。这是我的解决方案:

git grep -il TODO | xargs -n1 git blame -M  -f -e | grep -i TODO | grep $(git config user.email)
Run Code Online (Sandbox Code Playgroud)