Есть ли способ проверить, все ли определенные функции вызываются? - PullRequest
1 голос
/ 19 марта 2009

Есть ли способ выяснить, вызывается ли каждая функция, определенная в коде, где-нибудь?

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

Есть ли лучший способ поиска каждой функции в решении?

Ответы [ 5 ]

7 голосов
/ 19 марта 2009

Отметьте каждый метод, который вы пытаетесь удалить, как Устаревший с IsError, установленным на true. Когда вы помечаете метод как таковой, вы получите ошибку компиляции и сможете узнать, можете ли вы безопасно удалить метод.

    [Obsolete("Don't use this method", /* IsError */ true)]
    public void Foo () {}
2 голосов
/ 19 марта 2009

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

0 голосов
/ 19 марта 2009

Два предложения:

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

  • Вы можете создать карту компоновщика, а затем сравнить ее список функций со списком, который вы генерируете (с grep или ctags?) Непосредственно из вашего источника.

0 голосов
/ 19 марта 2009

Вот способ, который поймает все, кроме отражения.

  1. Удалить метод
  2. Compile

Это кажется немного излишним, но у него есть то преимущество, что вы можете "группировать" запросы, удаляя несколько функций.

0 голосов
/ 19 марта 2009

Инструмент покрытия кода, такой как NCover?

EDIT: Это предполагает, что у вас достаточно тестов на функциональность и вы полны решимости избавиться от всех ненужных функций. Delete-then-compile будет работать, но не будет масштабируемым ... независимо от того, что вам понадобится какой-то инструмент анализа исходного кода (статический или анализ во время выполнения).

...