Мертвый код и / или как создать перекрестную ссылку из исходного кода на Haskell
У меня есть некоторая неиспользуемая функциональность в моей кодовой базе, но это трудно идентифицировать. Код развивался в течение последнего года, когда я исследовал его проблемное пространство и возможные решения. Что мне нужно сделать, так это найти этот неиспользуемый код, чтобы я мог от него избавиться. Я рад, если он решает проблему на основе экспортируемого имени. У GHC есть предупреждения, касающиеся неэкспортированного неиспользуемого кода. Любые инструменты, специфичные для этой задачи, будут интересны.
Тем не менее, мне любопытно, о всеобъемлющем инструменте перекрестных ссылок. Я могу найти неиспользуемый код с помощью такого инструмента. Несколько лет назад, когда я работал на C и на ассемблере, я обнаружил, что хороший xref - довольно удобный инструмент, полезный для разных целей.
Я ничего не получаю с поиском в Google. По-видимому, в Haskell доминирующее значение перекрестных ссылок лежит в грамотном программировании. Хотя, может быть, что-то там будет полезно.
1 ответ
Я не знаю такого инструмента, поэтому в прошлом я немного взломал.
Если у вас есть полный набор тестов, вы можете запустить его с включенной трассировкой покрытия кода GHC. Компилировать с -fhpc
и использовать hpc markup
создать аннотированный источник. Это дает вам объединение неиспользуемого и непроверенного кода, к которым вы, вероятно, все равно хотели бы обратиться.
SourceGraph может дать вам кучу информации, которая также может оказаться полезной.
Для этой цели теперь есть инструмент: https://hackage.haskell.org/package/weeder
Он существует с 2017 года, и хотя у него есть ограничения, он определенно помогает с большими кодовыми базами.