Dan Champagne
Dan Champagne

Reputation: 920

Regular Expression Search in Visual Studio 2010

I'm not sure if this is possible within VS, but I'm working with a massive VB.NET file that needs to log every function call for debug purposes. Problem is, that not every function has the Log command in it. I'm trying to use RegEx to find the function definitions that do not have a log within them.

This would NOT be a match:

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

This WOULD be a match:

Public Function Test2() as Boolean
    Return False
End Function

The closest I've come is using the following:

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

In my own mind, it should work, but no matter how I word it, it's still pulling every function as a match, even those that have the "Log.Tracelog" call in the function.

Is there anyway I can search to find the latter case?

Upvotes: 0

Views: 515

Answers (2)

agent-j
agent-j

Reputation: 27913

Try this:

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

I moved .* from just before the ~() (preventmatch) to just inside it.

Upvotes: 1

Robert Beaubien
Robert Beaubien

Reputation: 3156

Why not use the debug.WriteLine methods for the functions you want logged. You can also use the stack to get the method name:

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

Then the messages only output when debugging and only in the methods you want.

Upvotes: 1

Related Questions