我正在尝试查看c ++项目中有多少goto
个指令。现在,我使用与grep
搜索"goto "
的简单匹配:
grep -r --exclude-dir "third_party" --include "*.cpp" --include "*.h" --include "*.C" --include "*.cxx" --include "*.hcc" --include "*.c" --include "*.cc" "goto " .
我得到了很多假阳性,特别是在评论中:
// Perform stack overflow check if this goto needs it before jumping.
或文字内部:
stream->Add(" goto (");
避免它们的最简单方法是什么?我不需要一个完美的解决方案。
答案 0 :(得分:2)
您可以考虑使用静态分析工具,例如cppcheck这样做。仅使用正则表达式处理所有可能的情况可能会变得不适用。
答案 1 :(得分:2)
将正则表达式更改为:'goto[ \t]+[_A-Za-z0-9]+[ \t]*;'
这将在同一行搜索单词goto,其目标标签和分号。
答案 2 :(得分:0)
我建议使用awk
或其他可以使用多个正则表达式或编写脚本的工具。
更困难的案例是:
/*****
* Goto system failure if this point is reached.
*/
在C风格的评论中含义。