Как я могу выполнить поиск в Visual Studio и игнорировать то, что закомментировано? - PullRequest
26 голосов
/ 28 января 2010

Я выполняю рефакторинг кодовой базы C ++ в Visual Studio 2005. Сейчас я на полпути к этому процессу, и я закомментировал много старого кода и заменил или переместил его. Сейчас я ищу, чтобы увидеть, что я должен изменить дальше, но функция поиска продолжает приносить мне старые закомментированные вещи, которые мне больше не нужны. Я действительно не хочу удалять этот старый код, на всякий случай.

Можно ли как-нибудь найти все файлы в решении и получить результаты, игнорируя то, что закомментировано? Я не вижу пути в самой Visual Studio, возможно, плагин, который бы это сделал?

Ответы [ 8 ]

48 голосов
/ 09 июня 2011

Поскольку другие предоставленные решения не помогли мне, я наконец-то обнаружил следующее решение:

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

Краткое объяснение:

  • ^ от начала строки
  • ~( НЕ следующий
  • :b* любое количество пробелов, за которыми следует
  • // начало комментария
  • ) конец НЕ
  • .* любой символ может появиться до
  • your_search_term Ваш поисковый запрос: -)

Очевидно, это будет работать только для комментариев // и ///.

Чтобы применить поиск по регулярному выражению, нажмите кнопку «Использовать регулярные выражения» (точка и звездочка) в окне поиска

3 голосов
/ 28 января 2010

Мой дубль:

да, вы можете использовать регулярные выражения, они, как правило, слишком медленные, и размышления о них отвлекают от сосредоточения на реальных вещах - вашем программном обеспечении.

Я предпочитаю ненавязчивые полуинтеллектуальные методы:

Бедный мужской метод: Найти ссылки, если вам случится использовать intelisense на

Или даже лучше: Визуальная помощь и раскраска «Найти все ссылки» и «Перейти» сопоставлены с удобными ярлыками. Это значительно ускоряет навигацию.

2 голосов
/ 22 июня 2011

Предыдущий ответ дал ложноположительный результат в тех случаях, когда в противном случае совпадающие строки были помещены в строки, содержащие другой источник:

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

Так что заменили :b* на .* и добавили <>, чтобы были найдены только целые слова, а затем пошли после некоторых старых комментариев в стиле C, где в строке есть /*:

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

В моем случае я охотился за всеми случаями new, не поддающимися помощи рефакторинга, и множеством ложных срабатываний. Я также не понял, как избежать совпадений в строках в кавычках.

1 голос
/ 01 мая 2012

Просто для добавления, поскольку я выполнял оператор "найти все" для оператора деления, использованного в коде, использовал нижеприведенное для исключения комментариев, а также </ и /> из файлов aspx:

^~(.*//)~(.*/\*)~(.*\<\/)~(.*/\>).*/
1 голос
/ 28 января 2010

Если вы комментируете свой старый код с помощью //, вы можете использовать регулярные выражения при поиске чего-либо в вашей кодовой базе. Примерно так, например: ^[^/][^/].*your_function_name.*.

0 голосов
/ 12 декабря 2016

Лучше использовать \ s Я думаю. ^(?![\s]*//).*your_search_term

0 голосов
/ 10 декабря 2016

В Visual Basic в Visual Studio 2015 я смог найти текст вне комментариев, адаптировав комментарий Glassiko из наиболее часто задаваемого ответа

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

А в C # вы бы использовали комментарий Glassiko в точности так, как он был

 ^(?![ \t]*//).*mysearchterm
0 голосов
/ 28 января 2010

удалить закомментированный код, он находится в исходном коде, верно? нет необходимости хранить его и в файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...