Hello I am trying to implement an AST Clang visitor and this is my code.
class ExampleVisitor : public RecursiveASTVisitor<ExampleVisitor> {
private:
ASTContext *astContext; // used for getting additional AST info
public:
virtual bool VisitVarDecl(VarDecl *var)
{
numVariables++;
string varName = var->getQualifiedNameAsString();
string varType = var->getType().getAsString();
cout << "Found variable declaration: " << varName << " of type " << varType << "n";
APIs << varType << ", ";
return true;
}
virtual bool VisitFunctionDecl(FunctionDecl *func)
{
numFunctions++;
string funcName = func->getNameInfo().getName().getAsString();
string funcType = func->getResultType().getAsString();
cout << "Found function declaration: " << funcName << " of type " << funcType << "n";
APIs << "nn" << funcName <<": ";
APIs << funcType << ", ";
return true;
}
virtual bool VisitStmt(Stmt *st)
{
if (CallExpr *call = dyn_cast<CallExpr>(st))
{
numFuncCalls++;
FunctionDecl *func_decl = call->getDirectCallee();
string funcCall = func_decl->getNameInfo().getName().getAsString();
cout << "Found function call: " << funcCall << " with arguments ";
APIs << funcCall << ", ";
for(int i=0, j = call->getNumArgs(); i<j; i++)
{
string TypeS;
raw_string_ostream s(TypeS);
call->getArg(i)->printPretty(s, 0, Policy);
cout<< s.str() << ", ";
APIs<< s.str() << ", ";
}
cout << "n";
}
return true;
}
};
How can I avoid traversing the included header files, but without loosing their information. I just dont want to print any information about this files but I want clang to know about these files
Thank you
Aucun commentaire:
Enregistrer un commentaire