18

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

不过,还没有找到一种方法来识别代码库中的所有事件。

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

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

4

2 回答 2

11

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

  1. 右键单击代码中任意位置的字符串类型。单击转到声明
  2. Resharper 将从 .NET 框架中打开 string.cs
  3. 向下滚动operator ==并右键单击,选择Find Usages

这需要一些时间,但您会得到一个很好的用法列表,在树视图中排序。我在 VS2010 中使用 Resharper 6.1 进行了尝试。

更新

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

  1. ==在字符串比较中选择
  2. 右键单击选择并选择Find Usages Advanced
  3. 在查找下的对话框中,仅检查“用法”并将范围设置为“解决方案”以过滤掉其他库中的任何引用。
于 2012-08-01T08:03:39.553 回答
0

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

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

于 2012-08-01T07:46:05.733 回答