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