weggliC/C++ 代码库语义搜索工具
weggli 是一个快速且强大的 C 和 C++ 代码库语义搜索工具,旨在帮助安全研究人员识别大型代码库中的有趣功能。
weggli 根据用户提供的查询对抽象语法树执行模式匹配。它的查询语言类似于 C 和 C++ 代码,可以轻松将有趣的代码模式转换为查询。
weggli 受到 Semgrep、Coccinelle、joern 和 CodeQL 等工具的启发,但做出了一些不同的设计决策:
-
C++ 支持:weggli 对现代 C++ 构造提供一流的支持,例如 lambda 表达式、基于范围的 for 循环和 constexprs。
-
Minimal setup:weggli 应该对你会遇到的大多数软件开箱即用。weggli 不需要构建软件的能力,并且可以使用不完整的源或缺少的依赖项。
-
Interactive : weggli 是为交互式使用和快速查询性能而设计的。大多数情况下,weggli 查询会比 grep 搜索快。目标是启用交互式工作流,可以在代码审查和查询创建/改进之间快速切换。
-
Greedy:weggli 的模式匹配旨在为特定查询找到尽可能多的(有用的)匹配项。虽然这会增加误报的风险,但它简化了查询创建。例如,查询
$x = 10;
将匹配赋值表达式 (foo = 10;
) 和声明 (int bar = 10;
)。
评论