在大型代码库中查找string ==运算符的用法

时间:2012-08-01 07:16:59

标签: c#

我已经请求在一个相当大的C#代码库中使用明确指定区分大小写的==方法调用来替换所有字符串String.Equals()运算符用法的可行性。

虽然没有太多运气找出识别代码库中所有事件的方法。

  • 搜索“==”显然会发现无数类型的实例,而不是比较字符串。
  • 似乎找不到StyleCop规则。
  • 也不是ReSharper规则。
  • 作为最后的手段,我尝试将程序集加载到JustDecompile中并查找System.String.op_Equality的所有用法,但这似乎没有在LINQ表达式中找到用法,例如.Where(x => x.StringField == stringField)

所以我有点难过,想知道是否有人对如何搜索这些讨厌的比较有任何想法?

2 个答案:

答案 0 :(得分:11)

您可以使用Resharper查找所有用法。这对我有用:

  1. 右键单击代码中任意位置的字符串类型。点击转到声明
  2. Resharper将从.NET框架
  3. 打开string.cs
  4. 向下滚动至operator ==并右键单击,选择查找用法
  5. 这需要一些时间,但你会得到一个很好的用法列表,在树状视图中排序。 我在VS2010中尝试使用Resharper 6.1。

    <强>更新

    有一种更简单的方法可以做到这一点:

    1. 在字符串比较中选择==
    2. 右键单击所选内容,然后选择查找高级用法
    3. 在find下的对话框中,仅选中'Usages'并将范围设置为'Solution'以过滤掉其他库中的任何引用。

答案 1 :(得分:0)

我的建议是编写一个非常基本且特定的代码解析器,它遍历系统中的每个范围,记录所有string / String变量声明并检测任何==比较使用那些变数。

欢迎任何对代码解析有深入了解的人发表评论。我确信有一些可以使用的类/工具。