Поиск всех мест, где была установлена ​​переменная? - PullRequest
12 голосов
/ 22 августа 2010

Часто при разработке с VS2010 Ultimate я хочу проверить, где в кодовой базе устанавливается значение (то есть, где это назначение).

Есть ли способ, используя VS2010 Ultimate или 3-йинструмент отладки, чтобы иметь возможность получить все места в кодовой базе, где была установлена ​​или получена переменная?

Ответы [ 8 ]

8 голосов
/ 03 декабря 2013

Вы можете использовать CTRL + SHIFT + F с регулярным выражением: MyVariable [\ t \ r \ n \ v \ f] * = [^ =], при этом поиск «myVariable» будет выполняться слева от знака «=».

8 голосов
/ 23 августа 2010

Да, в Reshaper 5 доступна функция Значение происхождения .

Поиск всего решения с помощью Ctrl + Shift + F или использование Find Usages, как некоторые предлагали, не отвечает на вопрос OP - он покажет каждое использование переменной, а не только присваивания, и пролистывание этого списка может быть утомительным и отнимает много времени.

7 голосов
/ 12 декабря 2018

Для чего это стоит, это, наконец, будет изначально поддерживаться в VS2019.

В частности, в окне «Найти все ссылки» есть новый столбец «Вид», который можно отфильтровать по ссылкам «Запись»:

enter image description here

Конкретный Github PR, добавивший эту функцию, планируется включить в Visual Studio 2019 Preview 2 (16.0.P2) https://github.com/dotnet/roslyn/issues/22545

Полный выпуск VS2019 - , запланированный на 1 квартал 2019 года .

2 голосов
/ 06 августа 2015

Отказ от ответственности: я связан с OzCode

Вы можете добавить дополнение Debugging OzCode , которое имеет функцию под названием «Точка останова» «Точка останова»который срабатывает при изменении свойства объекта.

enter image description here

1 голос
/ 07 сентября 2017

Вот более надежное решение с использованием Visual Studio без сторонних инструментов:

1.Для всех, кроме назначений приращения и смены после / до исправления:

  (^|[^\w.])MyVariable\s*([\+\-\*/%&|\^]|)=[\w\s]

2.Для назначений приращения и смены после / до исправления:

  ((^|[^\w.])MyVariable\s*(\+\+|--)|(\+\+|--)\s*MyVariable[^\w.]|(^|[^\w.])MyVariable\s*(<<|>>)=)

3.Для параметров Out / Ref (N / A для свойств):

  (^|[^\w.])(out|ref)\s+MyVariable[^\w.]

CAVEATS:

  1. C #. Только для .NET *
  2. Visual Studio 2012+ только.
  3. Не работает, если за «=» следует EOL.
  4. Не работает, если после «MyVariable» следует EOL.
  5. В зависимости от запускаТочка и область действия Поиск и область действия переменной / свойства могут найти больше / меньше ссылок, чем необходимо.Если есть сомнения, ошибка на стороне «more», так что вы ничего не пропустите.
  6. Не работает для «.» - префикс Variables / Properties.6.1.Если вы не включите его как часть «MyVariable» (то есть «MyStructVariable.MyStructField» или «MyObjectVariable.MyObjectField»), но вы рискуете найти слишком мало ссылок, так как могут быть другие переменные структуры или объекта, используемые для назначения в одну и ту же структуру илиПоле объекта или свойство.
0 голосов
/ 23 августа 2010

Иногда старые техники становятся лучшими.Может быть, вы можете искать все решение с помощью CTRL + Shift + F

0 голосов
/ 22 августа 2010

Как спросил Даниэль Пратт выше, я не уверен, имеете ли вы в виду свойства, переменные или что-то еще. Тем не менее, одной связанной функцией, которую я часто использую, является «Поиск использования», к которой можно обратиться, щелкнув правой кнопкой мыши методы, классы, члены и т. Д., Которая находит не только назначения, но и все виды использования - однако, возможно, это сузит ее достаточно для вас. просеять вручную после назначения.

0 голосов
/ 22 августа 2010

Вы можете использовать команду «Найти ссылки» (Ctrl + K, Ctrl + R)

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