Я пытаюсь найти, как использовать Сличитель с лязгом-запросом с использованием CXXMemberCallExprлязг-запрос и CXXMemberCallExpr согласовань
Я пробовал различные тематические перестановки и не можем заставить его работать. Похоже, что первый символ имеет нижнюю обсадку по сравнению с дампом, поэтому, например, FunctionDecl становится functionDecl в clang-query
Было бы неплохо, если имена совпадений -ast-дампов совпадали с именами имен clang-query - но угадайте, t
например.
clang-query> match CXXMemberCallExpr()
1:2: Matcher not found: CXXMemberCallExpr
clang-query> match cxxmemberCallExpr()
1:2: Matcher not found: cxxmemberCallExpr
clang-query> match CxxMemberCallExpr()
1:2: Matcher not found: CxxMemberCallExpr
clang-query> match CXXmemberCallExpr()
1:2: Matcher not found: CXXmemberCallExpr
clang-query> match cxxMemberCallExpr()
1:2: Matcher not found: cxxMemberCallExpr
Если люди хотят, чтобы помочь больше я хотел создать Сличитель для Virtual :: Foo(), так что все вызовы к виртуальной функции базового класса.
Это код, который я пытался использовать
class Virtual
{
public:
virtual void foo()
{
}
};
class Real : public Virtual
{
public:
virtual void foo()
{
}
};
void bar()
{
Virtual *v=new Real();
Real *r=new Real();
Virtual *v2=new Virtual();
v->foo();
r->foo();
v2->foo();
delete v;
delete r;
delete v2;
}
И команду для звона для полного AST (слишком долго, чтобы вставить) лязг -Xclang-самосвал-АСТ virt.cc