You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用clang-query查找包含指定子串的字符串字面量?

使用clang-query筛选包含指定子串的字符串字面量

你要实现的需求可以直接通过stringLiteral匹配器的内置hasSubstring参数完成,不需要额外嵌套其他遍历匹配器。

核心匹配规则

匹配所有包含子串hello的字符串字面量的语句为:

match stringLiteral(hasSubstring("hello"))

针对你给出的示例代码,这个规则只会命中"say hello"这一个字符串字面量,不会匹配到变量声明里的hello标识符,也不会命中不包含目标子串的"say world",完全符合预期。

扩展用法

  • 若需要精确匹配整个字符串的内容,将hasSubstring替换为equals即可:stringLiteral(equals("hello"))只会匹配值完全为hello的字符串字面量
  • 若需要忽略大小写匹配子串,使用hasSubstringCaseInsensitive参数:stringLiteral(hasSubstringCaseInsensitive("Hello"))可以同时匹配hello、HELLO等不同大小写的子串

使用步骤参考

  1. 启动clang-query后先指定编译数据库路径(如果项目使用compile_commands.json):
set build-path ./你的编译目录
  1. 执行上述匹配规则,输出结果会自动返回所有命中的字符串字面量的所在文件、行号、对应代码内容等信息。

内容的提问来源于stack exchange,提问作者Mikhail

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 17:36:03