Советы по внедрению статического анализа всей программы для Haskell
В рамках исследовательского проекта по тестированию на основе свойств мне нужно провести статический анализ всей программы программ на Haskell. Я ищу предложения о том, как реализовать анализ программ на Haskell по всем программам, надеюсь, без создания собственной инфраструктуры.
Я посмотрел на Template Haskell, который обладает многими необходимыми мне возможностями, но в нем отсутствует ключевая функция: в Template Haskell, реализованном в GHC, похоже, нет способа получить определение функции по имени. (Схожий вопрос SO: Как получить объявление функции, используя `reify`?)
Я подозреваю, что может быть какой-то способ сделать анализ программ на Haskell с помощью GHC API, но я не могу легко определить, как это можно сделать из документации GHC API.
В частности, учитывая сайт вызова функции, я должен иметь возможность искать соответствующие определения функций. Меня особенно интересуют шаблоны на основе Haskell или GHC API.
Есть ли способ выполнить анализ программ на Haskell по всей программе, не создавая всю инфраструктуру самостоятельно?