我想为以下代码片段创建一个 AST 匹配器 专门用于识别std::unordered_map和mapIter中的键类型 ( int * )。 varDecl()识别 mapIter,但进一步的专业化让我失败了。 我想让它与int无关,并寻找底层指针类型。 AST 转储产生以下内容: ...
我想为以下代码片段创建一个 AST 匹配器 专门用于识别std::unordered_map和mapIter中的键类型 ( int * )。 varDecl()识别 mapIter,但进一步的专业化让我失败了。 我想让它与int无关,并寻找底层指针类型。 AST 转储产生以下内容: ...
我有一个匹配构造函数中的 uninit 双字段的问题。 鉴于下面的代码 我想匹配未在构造函数中调用二元运算符 = 的 un_init_param_ 字段。 但我找不到这样做的方法。 我在 clang-query 中输入以下命令 但是如何指定 memberExpr 与 prew 部分 fieldDe ...
我正在使用编译数据库对特定文件运行 clang-query,如下所示: 这行得通,但是当我运行一个简单的查询(例如match ifStmt() )时,它会返回数千个结果,包括来自导入的标头甚至标准库的匹配。 有没有办法将结果限制在我启动 clang-query 的文件中? ...
我正在寻找使用 clang-query 获取构造函数最后一行的行号,有人知道如何到达那里吗? 我有很多 go 的源文件,需要更新构造函数。 我花时间尝试用正则表达式解析源文件,它适用于很多极端情况。 所以这是列表中的下一项。 我尝试搜索 web 和堆栈溢出,但我找不到太多,并且对语言解析器的工作方式 ...
我是 clang-tidy 的新手,以下是练习,因此我可以转向更复杂的匹配器和工具。 可以说我们有 我的目标是识别与“my_type”进行比较的变量,以便通过将它们的类型更改为 my_type 来修复它们的声明。 现在我正在尝试执行以下操作 这里的问题是我无视上下文。 处理这样的事情的正 ...
我想找到所有没有 break 语句的 case 语句。 我使用 clang-query 来构建我的匹配器。 我的匹配器在某些测试用例中失败了。 我写了简单的匹配器 匹配 caseStmt(除非(has(breakStmt()))) 它适用于以下测试用例 和 不能很好地跟随 ...
我正在尝试使用clang-query对导入Foundation但不起作用的obj-c文件运行匹配项,在将clang-query通过移动到tools/extra文件夹构建clang-query之后,我使用以下命令运行它: ./clang-query MyClass.m -- -extra-ar ...
如果使用-fvisibility=hidden或msvc进行编译,则必须手动导出共享库符号。 作为实验,您如何使用AST匹配器(automatically查询)自动找到它们? 这并不是一件容易的事,因为需要最少的导出声明集,并且内联函数,模板,离线模板定义,静态数据成员等使事情迅速复杂化 ...
有没有办法列出clang-query中所有可能的匹配clang-query ? AST匹配器参考列表不一定是最新版本。 甚至ASTMatchers.h clang标头( clang-6.0.0 )中的列表也不显示当前可用的内容。 例如, equalsNode匹配器包含在列表中,而clang ...
匹配函数指针的查询是什么,例如,以下代码: y是要匹配的函数指针。 ...
让我们以一个玩具示例为例,说我在test.cpp文件中有以下代码: 我想在除法运算中找到分母的变量名,然后使用clang命令clang -Xclang -ast-dump -fsyntax-only test.cpp获得上述代码的抽象语法树(AST)。 我得到以下输出 根据以上 ...
当类中有两个或多个相似的访问说明符时,我需要抓住C ++代码中的情况。 假设有两个班级 如何使用ASTMatcher匹配A类(因为它有两个“公共”)而不匹配B类? ...