Инструмент для поиска неиспользуемых конструкций в коде Ruby?

Может ли кто-нибудь указать мне инструмент для обнаружения неиспользуемого кода, объектов, методов, параметров и т. д. в коде Ruby?

Я видел nitpick, но, похоже, он не дает мне того охвата, который мне нужен. Я также проверил laser и reek, но у их соответствующих драгоценных камней, похоже, есть проблемы, которые не позволяют им работать.

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


person xuinkrbin.    schedule 27.09.2012    source источник


Ответы (3)



Было бы полезно, если бы у нас было немного больше контекста в том, как вы хотите «обнаружить неиспользуемый код» — охватывает ли этот код ваши тесты, которые вы изучаете? В противном случае, как бы вы узнали от прогона к прогону, что вы выполнили все варианты использования? Или вы ищете статистическую «тепловую карту» покрытия с течением времени, например, для причины производительности?

В любом случае, для покрытия кода при тестировании я использую SimpleCov — он использует встроенный в Ruby 1.9 < библиотека href="http://www.ruby-doc.org/stdlib-1.9.3/libdoc/coverage/rdoc/Coverage.html" rel="nofollow">Coverage с небольшим количеством приятного сахара сверху .

person Matt    schedule 27.09.2012
comment
Рассматриваемые сценарии, как правило, являются автономными программами. Все методы в данном скрипте будут вызываться внутри этого скрипта, за исключением одного, используемого, так сказать, для взаимодействия с внешним миром. Таким образом, узнать, соответствует ли скрипт всем вариантам использования, довольно просто: либо вызывается метод, либо нет. - person xuinkrbin.; 27.09.2012

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

Я знаю двух тестеров мутаций для рубина:

Отказ от ответственности, я автор мутанта.

В зависимости от вашей настройки, ваша версия ruby, макет спецификации, тестовая среда heckle или мутант могут сделать всю работу за вас.

Здесь вы можете увидеть мутанта в действии: http://ascii.io/a/1707

person mbj    schedule 10.12.2012