Мертвый код и / или как создать перекрестную ссылку из исходного кода на Haskell

У меня есть некоторая неиспользуемая функциональность в моей кодовой базе, но это трудно идентифицировать. Код развивался в течение последнего года, когда я исследовал его проблемное пространство и возможные решения. Что мне нужно сделать, так это найти этот неиспользуемый код, чтобы я мог от него избавиться. Я рад, если он решает проблему на основе экспортируемого имени. У GHC есть предупреждения, касающиеся неэкспортированного неиспользуемого кода. Любые инструменты, специфичные для этой задачи, будут интересны.

Тем не менее, мне любопытно, о всеобъемлющем инструменте перекрестных ссылок. Я могу найти неиспользуемый код с помощью такого инструмента. Несколько лет назад, когда я работал на C и на ассемблере, я обнаружил, что хороший xref - довольно удобный инструмент, полезный для разных целей.

Я ничего не получаю с поиском в Google. По-видимому, в Haskell доминирующее значение перекрестных ссылок лежит в грамотном программировании. Хотя, может быть, что-то там будет полезно.

1 ответ

Решение

Я не знаю такого инструмента, поэтому в прошлом я немного взломал.

Если у вас есть полный набор тестов, вы можете запустить его с включенной трассировкой покрытия кода GHC. Компилировать с -fhpc и использовать hpc markup создать аннотированный источник. Это дает вам объединение неиспользуемого и непроверенного кода, к которым вы, вероятно, все равно хотели бы обратиться.

SourceGraph может дать вам кучу информации, которая также может оказаться полезной.

Для этой цели теперь есть инструмент: https://hackage.haskell.org/package/weeder

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

Другие вопросы по тегам