TL; DR: Напишите анализ программы на основе SMT (Symbolic Executors, Checkers Type Type и т. Д.) На оптимизированном языке, подобном DataLog.
Datalog доказал, что является полезным языком для реализации ряда программных анализов, но анализы, которые используют SMT, не могут быть легко записаны в традиционных версиях Datalog. Formulog предназначен для заполнения этого пробела, дополнив Datalog способами построения и разума о формулах SMT, а также некоторым функциональным программированием первого порядка, чтобы облегчить жизнь.
Зачем писать свой анализ на основе SMT в Formulog?
Заинтересованы? Для получения дополнительной информации, ознакомьтесь с документальными документами (также доступны в каталоге DOCS), включая советы по началу работы и языковой ссылке. Чтобы понять, что участвует в создании нетривиального анализа на основе SMT в Formulog, ознакомьтесь с нашим учебником по реализации проверки типа уточнения в формулу.
Вклад в этот проект наиболее приветствуются! Пожалуйста, откройте проблему GitHub, а затем свяжите запрос на притяжение. Запросы на вытягивание должны быть в формате Google Java, прежде чем быть объединенным. Чтобы переформатировать свой код, запустите mvn spotless:apply ; Вы также можете проверить, соответствует ли ваш код (без переформатирования его), запустив mvn spotless:check .
Formulog выпускается по лицензии Apache 2.0.
Этот проект использует сторонние библиотеки. Вы можете собрать список этих библиотек и загрузить их связанные лицензии с этой командой:
mvn license:download-licenses
Сгенерированный контент можно найти в target/generated-resources/ каталоге.