Поиск всех мест, в которых была установлена ​​переменная?

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

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

Ответ 1

Да, есть функция Value Origins, которая доступна в Reshaper 5.

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

Ответ 2

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

Ответ 3

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

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

введите описание изображения здесь

Ответ 4

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

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

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

2. Для Post-/Назначение приращений и сдвигов до исправления:

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

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

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

ПЕРЕДАЕТ:

  1. Только на С#.NET.
  2. Только для Visual Studio 2012+.
  3. Не работает, если "=" сопровождается EOL.
  4. Не работает, если за "MyVariable" следует EOL.
  5. В зависимости от начальной точки и области действия Find и области действия переменной/свойства может быть найдено больше/меньше ссылок, чем необходимо. В случае сомнений, ошибка на стороне "больше", так что вы ничего не пропустите.
  6. Не работает для "." -prefixed Переменные/Свойства. 6.1. Если вы не включите его как часть "MyVariable" (то есть "MyStructVariable.MyStructField" или "MyObjectVariable.MyObjectField"), но вы рискуете найти слишком мало ссылок, так как могут быть другие переменные структуры или объекта, используемые для назначения в одну и ту же структуру или Поле объекта или Свойство.

Ответ 5

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

Ответ 6

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

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

enter image description here

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

Полная версия VS2019 запланирована на первый квартал 2019 года.

Ответ 7

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

Ответ 8

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