Я хотел бы взять Clang AST, проанализировать, как используется определенная переменная и сделать некоторые
преобразование источника в источник, если распознан определенный шаблон использования.
В частности, я ищу такие шаблоны:
void *h;
h = create_handler(...);
use_handler(h);
destroy_handler(h);
Пока что я могу обнаружить ValueDecl
, соответствующий void *h
. Следующий шаг
было бы найти все варианты использования h
и посмотреть, если они безопасны и если
create_handler/destroy_handler
правильно доминировать / пост-доминировать друг над другом.
К сожалению, я понятия не имею, как перебрать использование h
, кажется, что
в классе ValueDecl
такого интерфейса нет.
Буду признателен, если вы не подскажете, как мне найти все варианты использования
переменная в AST, или укажите мне какой-нибудь основанный на лягушке инструмент, имеющий дело с подобной проблемой.
Спасибо!