Достаточно ли хорош инструмент Найти все ссылки в Visual Studio, чтобы определить, не используется ли фрагмент кода? - PullRequest
0 голосов
/ 03 сентября 2018

Я занимаюсь рефакторингом большого проекта на C #, и вполне естественно найти мой неиспользованный мертвый код снеговика.

Эта функция называется FooBar (), которая выглядит полезной, поскольку в ней есть куча кода. Очевидно, что я пытался найти ссылки на эту функцию, используя опцию «Найти все ссылки (F9)», и она показалась с пустыми руками (даже в области действия «Полное решение»).

Вот функция:

Класс А имеет:

~
public virtual void FooBar(){

<function is empty>

}
~

У меня есть класс B с:

public override void FooBar(){

~<doing something important here>~

}

Я запустил «Найти все ссылки» для обеих этих функций, но ничего не появилось. Я предполагаю, что его безопасно удалить, но беспокоюсь, если он действительно где-то используется. Помимо этого , я использовал «Найти в файлах» (с областью действия для всего решения) для имени метода, и он тоже оказался пустым.

Мой вопрос : получает ли "Найти все ссылки" все случаи использования? Можно ли полагаться на поиск и удаление мертвого кода, если в его результатах ничего не отображается?

EDIT

Эта функция не является частью API и не будет вызываться никаким внешним кодом.

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Это полезно, но не стоит полностью полагаться на него.

Даже если «Найти все ссылки» не показывает никаких применений, все же возможно, что метод где-то используется. Может быть, с помощью отражения или динамических объектов, или если код находится внутри библиотеки, какое-то внешнее приложение, использующее эту библиотеку, может использовать этот метод без знания Visual Studio.

Мой совет - исследовать более тщательно, чем просто «Найти все ссылки».

0 голосов
/ 03 сентября 2018

Нет, есть разные причины, по которым он не найдет код, который на него опирается.

  1. Это публичный API, используемый другими проектами.
  2. Код вызывается отражением.
  3. Код находится в файлах, которые не анализируются, например, файлы Razor часто пропускаются.

Я уверен, что кроме них есть и другие причины.

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