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 に答える