2011-06-28 15 views
0

これがVS内で可能かどうかはわかりませんが、デバッグの目的ですべての関数呼び出しを記録する必要がある大量のVB.NETファイルを使用しています。問題は、すべての関数にLogコマンドがあるわけではないということです。 RegExを使用して、その中にログを持たない関数定義を見つけようとしています。Visual Studio 2010の正規表現検索

これは、試合ではないでしょう:

Public Function Test1() as Boolean 
    Log.Tracelog("Test1()") 
    Return True 
End Function 

これは試合のようになります。

Public Function Test2() as Boolean 
    Return False 
End Function 

私が来ている最も近い次を使用している:

(function|sub|property) .*\n.*~(Log\.t) 

で私の心は、それはうまくいくはずですが、たとえそれがどんな言葉であっても、それはまだ "Log" .Tracelog "関数を呼び出します。

とにかく後者のケースを見つけるために検索することはできますか?

答えて

1

はこれを試してみてください。

+0

これは私が探しているものです!なぜチルダを動かすとマッチが変わるのですか?私は最近、ネガを見つけるために表現を使うことができるということを知ったばかりだから、そのすべてのことがわかりません。 –

1

ログに記録する関数に対してdebug.WriteLineメソッドを使用しないでください。スタックを使用してメソッド名を取得することもできます。

Private Function test1() As Boolean 
    Debug.WriteLine(New System.Diagnostics.StackTrace().GetFrame(0).GetMethod.Name) 
    Return False 
End Function 

この場合、メッセージはデバッグ時にのみ表示され、必要な方法でのみ表示されます。私はちょうど~()(preventmatch)前からちょうど内側に.*を移動

(function|sub|property) .*\n~(.*Log\.t) 

+0

これは便利なコードです。私はVisual Studioで開発するのがとても新しいので、メソッド名を取得するために関数呼び出しを使用できるかどうかはわかりませんでした。これは事をもっと簡単にします。ありがとうございました! –