0

我正在尝试查看gotoc++ 项目中有多少指令。现在我使用一个简单的匹配来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 (");

避免它们的最简单方法是什么?我不需要完美的解决方案。

4

3 回答 3

2

您可能会考虑使用静态分析工具,例如cppcheck来执行此操作。仅使用正则表达式处理所有可能的情况可能会变得不适用。

于 2013-03-07T17:04:08.730 回答
2

将您的正则表达式更改为:'goto[ \t]+[_A-Za-z0-9]+[ \t]*;'这将在同一行搜索单词 goto、它的目标标签和一个分号。

于 2013-03-07T17:05:13.997 回答
0

我建议使用awk可以使用多个正则表达式或编写脚本的其他工具。

比较困难的情况是:

/*****
 * Goto system failure if this point is reached.
 */

意味着 C 样式注释中的任何内容。

于 2013-03-07T17:07:52.927 回答