【问题标题】:How can I search in Visual Studio and get it to ignore what is commented out?如何在 Visual Studio 中搜索并让它忽略注释掉的内容?
【发布时间】:2010-01-28 10:47:56
【问题描述】:

我正在 Visual Studio 2005 中重构一个 C++ 代码库。我现在已经完成了这个过程的一半,我已经注释掉了很多旧代码并替换或移动了它。现在我正在寻找我接下来必须更改的内容,但搜索功能不断给我带来我不再关心的旧注释掉的东西。我还不想删除那个旧代码,以防万一。

有什么方法可以搜索解决方案中的所有文件并获得结果而忽略注释掉的内容?我在visual studio本身看不到方法,也许是一个插件可以做到这一点?

【问题讨论】:

标签: visual-studio search


【解决方案1】:

由于其他提供的解决方案对我不起作用,我终于找到了以下解决方案:

^~(:b*//).*your_search_term

简短说明:

  • ^ 从行首
  • ~(不是以下
  • :b* 任意数量的空格,后跟
  • //评论开始
  • ) NOT 结束
  • .*前面可以出现任何字符
  • your_search_term你的搜索词:-)

显然这仅适用于 ///// 风格的 cmets。

您必须单击查找窗口上的“使用正则表达式”按钮(点和星号)才能应用正则表达式搜索

在较新版本的 Visual Studio .net 中使用正则表达式,其语法略有不同:

^(?![ \t]*//).*your_search_term

【讨论】:

  • 仅供参考,如果您只想搜索 cmets,请删除 ~
  • 在较新版本的 VS 波浪号不起作用,请使用以下命令:^(?![ \t]*//).*your_search_term
【解决方案2】:

我的看法:

是的,您可以使用正则表达式,这些表达式往往太慢,而且考虑它们会分散注意力,从而无法专注于真正的东西 - 您的软件。

我更喜欢不突兀的半智能方法:

穷人的方法: 如果您碰巧在

上使用智能感知,请查找参考资料

甚至更好: 视觉辅助,它的彩色“查找所有参考”和“转到”映射到方便的快捷方式。这极大地加快了导航速度。

【讨论】:

  • 如果您正在寻找“删除”,它是如何工作的?
【解决方案3】:

如果您使用// 注释您的旧代码,您可以在代码库中搜索某些内容时使用正则表达式。例如:^[^/][^/].*your_function_name.*

【讨论】:

    【解决方案4】:

    先前的答案对在包含其他来源的行上放置其他匹配行的情况给出了误报:

    ++i; // your_search_term gets found, don't want it found
    

    所以用.* 替换了:b* 并添加了<>,所以只能找到整个单词,然后在一些旧的C 风格的cmets 中找到了/* 就行了:

    ^~(.*//)~(.*/\*).*<your_search_term>
    

    就我而言,我正在寻找 new 的所有实例,不适合重构帮助,以及大量误报。我还没有弄清楚如何避免引用字符串中的匹配。

    【讨论】:

    • 注意:Stack Overflow 经常会重新排列答案,所以现在的“上一个答案”可能不会在未来出现。
    【解决方案5】:

    补充一下,因为我正在对代码中使用的除法运算符进行“查找全部”,所以使用下面的内容从 aspx 文件中排除 cmets 以及 &lt;//&gt;

    ^~(.*//)~(.*/\*)~(.*\<\/)~(.*/\>).*/
    

    【讨论】:

      【解决方案6】:

      在 Visual Studio 2015 中的 Visual Basic 中,我能够通过从最受好评的答案中调整 glassiko 的评论来搜索 cmets 之外的文本

      ^(?![ \t]*[']).*mysearchterm
      

      而在 C# 中,您将完全按照原样使用 glassiko 的注释

       ^(?![ \t]*//).*mysearchterm
      

      【讨论】:

        【解决方案7】:

        我认为最好使用 \s^(?![\s]*//).*your_search_term

        【讨论】:

          【解决方案8】:

          删除注释掉的代码,它在源代码管理中对吗?也无需将其保存在文件中。

          【讨论】:

          • 最后证明这是唯一可行的解​​决方案。代码在 CVS 中,我猜总比没有好。我仍然认为这种类型的搜索对于 Visual Studio 开箱即用会非常有用。代码着色似乎没有问题,可以确定什么是评论,什么不是评论,因此他们应该相对容易地提供排除 cmets 的搜索。
          • 我发现的麻烦是它并不总是注释掉你想要排除的代码。合法的 cmets 通常指的是函数和类型名称,排除这些 cmets 也会很方便。当您拥有像 C# 这样的文档 cmets 时,这尤其是一个问题。
          猜你喜欢
          • 2017-12-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-19
          • 2012-07-04
          • 2017-04-12
          • 2014-05-04
          • 1970-01-01
          相关资源
          最近更新 更多