Избыточная проверка кода

2

Существуют ли какие-либо инструменты, которые могут найти какие-либо частные функции без каких-либо ссылок? (Избыточные функции)

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

Не было бы слишком сложно создать его самостоятельно, но мне было интересно, есть ли какие-либо доступные приложения, которые могли бы сделать это с файлами, содержащими код?

Мой код находится в С#, но я могу представить, что этот вопрос охватывает множество языков кодирования.

Теги:
refactoring
language-agnostic

4 ответа

2
Лучший ответ

Если ваш код имеет Unit Tests (он делает, правильно?;-), то запуск NCover позволит вам определить методы, которые никуда не вызывают. Если у вас нет модульных тестов, то это хороший повод использовать для начала их создания.

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

  • 0
    Согласен с вами об этом, но я также недавно начал проект с 0 тестами, но также хотел бы удалить такой «мертвый код». Это уменьшит объем кода, для которого я должен начать писать тесты!
  • 0
    @Martin - нет тестов; ouchies! Если вы начнете писать модульные тесты для открытых методов, которые, вероятно, сделают частные методы, которые не вызываются, достаточно маленьким набором, вы можете использовать поиск Visual Studio для проверки их вызова. Тем не менее, я точно знаю , откуда вы пришли с этим! :)
Показать ещё 3 комментария
3

ReSharper выполняет задание.

  • 0
    Было бы полезно, если бы вы рассказали людям, как
  • 0
    ReSharper помечает любую частную функцию, которая не вызывается: * Желтая метка в правой части окна кода VS. * Название метода серое. * Красная лампочка, если курсор находится на названии функции. ALT + RETURN предлагает «Удалить неиспользуемый метод». это оно
0

Eclipse делает это автоматически для Java, не уверен, что вы можете иметь то же самое для С#.

0

Еще один вопрос может быть даже "Скомпилирует ли компилятор С# частные методы, которые фактически не используются?".

Моя догадка не будет, но вы никогда не знаете!

EDIT:

На самом деле, я думаю, что было бы трудно сказать, где используется метод. Он может быть закрытым, но он все равно может использоваться как обработчики событий. Невозможно проверить, но я уверен, что этот аспект сделает это немного сложнее.

  • 2
    Было бы «плохо» (tm) для компилятора удалять методы, которые не используются, частные или иные, так как к ним все еще можно получить доступ и вызвать через Reflection. На самом деле, я считаю, что инфраструктура VS Unit Test генерирует код, который делает именно это, чтобы позволить вам тестировать модули private / internal.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню