如何在c#项目中找到所有静态变量?

Chr*_*ian 12 c# static code-analysis static-analysis

我希望与多个线程并行运行命令行程序的某些部分,我担心可能会有一些静态变量,我必须修复(例如通过制作它[ThreadStatic]).在我的项目中是否有任何工具或简单的方法可以找到这些?

当然,简单地搜索"static"并没有多大帮助:我有很多静态方法可以很好地工作并且可以使用任意数量的线程

And*_*ong 13

注意: dasblinkenlight的答案仅适用于Visual Studio 2010及更早版本.

以下是Visual Studio 2012及更新版本的翻译:

static(?([^\r\n])\s)+(\b(_\w+|[\w-[0-9_]]\w*)\b)(?([^\r\n])\s)+(\b(_\w+|[\w-[0-9_]]\w*)\b)(?([^\r\n])\s)*[=;]

翻译参考:http://msdn.microsoft.com/en-us/library/2k3te2cs(v = vs.110).aspx

  • 顺便说一句,为了解决上面将错过任何额外装饰成员的问题,使用以下难以阅读但有效的正则表达式:`(静态(?([^\r \n])\ s)+(\ b (_\W + | [\ W- [0-9 _]]\W*)\ b)中(([^\r \n]的?)\ S)+(\ b(_\W + | [\ W- [ 0-9 _]]\W*)\ b)中(([^\r \n])的\ S)*[=;?])|(静态(([^\r \n])的\ S)+ (\ b(_\W + | [\ W- [0-9 _]]\W*)\ b)中(([^\r \n])的\ S')+(\ b(_\W + | [\ W- [0-9 _]]\W*)\ b)中((?[^\r \n])的\ S)+(\ b(_\W + | [\ W- [0-9 _]] \瓦特*)\ b)中(([^\r \n])的\ S)*?[=])` (2认同)

das*_*ght 11

static:b+:i:b+:i:b*[=;]在Visual Studio中使用regexp选项搜索文件应该为您打开静态变量.它也会带来运营商==,但它们应该相对容易过滤掉.

  • 噢,等等,这是一个巧妙的伎俩.我认为这样可以解决很少的误报.+1 (3认同)