我不确定这是否可以在VS中使用,但我正在处理一个庞大的VB.NET文件,需要记录每个函数调用以进行调试。问题是,并非每个函数都包含Log命令。我正在尝试使用RegEx来查找没有日志的函数定义。
这不匹配:
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”调用的函数。
无论如何我可以搜索找到后一种情况吗?
答案 0 :(得分:1)
为什么不将debug.WriteLine方法用于要记录的功能。您还可以使用堆栈来获取方法名称:
Private Function test1() As Boolean
Debug.WriteLine(New System.Diagnostics.StackTrace().GetFrame(0).GetMethod.Name)
Return False
End Function
然后消息仅在调试时输出,并且仅在您想要的方法中输出。
答案 1 :(得分:1)
试试这个:
(function|sub|property) .*\n~(.*Log\.t)
我将.*
从~()
(preventmatch)之前移到了它内部。