weggli

C/C++ 代码库语义搜索工具
授权协议 Apache-2.0
开发语言 Rust
所属分类 开发工具、 代码管理分析/审查/优化
软件类型 开源软件
地区 不详
投 递 者 公冶谦
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

weggli 是一个快速且强大的 C 和 C++ 代码库语义搜索工具,旨在帮助安全研究人员识别大型代码库中的有趣功能。

weggli 根据用户提供的查询对抽象语法树执行模式匹配。它的查询语言类似于 C 和 C++ 代码,可以轻松将有趣的代码模式转换为查询。

weggli 受到 SemgrepCoccinellejoern 和 CodeQL 等工具的启发,但做出了一些不同的设计决策:

  • C++ 支持:weggli 对现代 C++ 构造提供一流的支持,例如 lambda 表达式、基于范围的 for 循环和 constexprs。

  • Minimal setupweggli 应该对你会遇到的大多数软件开箱即用。weggli 不需要构建软件的能力,并且可以使用不完整的源或缺少的依赖项。

  • Interactive : weggli 是为交互式使用和快速查询性能而设计的。大多数情况下,weggli 查询会比 grep 搜索快。目标是启用交互式工作流,可以在代码审查和查询创建/改进之间快速切换。

  • Greedy:weggli 的模式匹配旨在为特定查询找到尽可能多的(有用的)匹配项。虽然这会增加误报的风险,但它简化了查询创建。例如,查询 $x = 10;将匹配赋值表达式 ( foo = 10;) 和声明 ( int bar = 10;)。

 相关资料
  • 本篇简述一下迭代加深搜索,并列出了伪代码帮助大家理解。 迭代加深是一种每次限制搜索深度的深度优先搜索。 (1)本质:它的本质还是深度优先搜索,只不过在搜索的同时带上了一个深度d ,当d达到设定的深度时就返回,一般用于找最优解。如果一次搜索没有找到合法的解,就让设定的深度+1 ,重新从根开始。 既然是为了找最优解,为什么不用BFS呢?我们知道BFS的基础是一个队列,队列的空间复杂度很大,当状态比较多

  • 本文向大家介绍WPF自定义搜索框代码分享,包括了WPF自定义搜索框代码分享的使用技巧和注意事项,需要的朋友参考一下 首先下载搜索图标: 控件中的搜索图标下载地址:http://www.easyicon.net/1183666-Search_icon.html  搜索框设计过程比较简单:  1、先定义一个Rectangle作为背景  2、然后中间放TextBox输入,可以重写其中的模板。提示语Lab

  • 问题内容: 任何人都可以分享一些Java代码来开始使用Google搜索API。可以帮助我。(我已获得API密钥和自定义搜索引擎ID)。 谢谢。 问题答案: 我已经更改了@Zakaria提供的代码中的。这可能不是解决问题的正确方法,但是它为您提供了Google搜索的结果链接。您只需要解析输出。看这里, 希望它也对您有用。

  • 问题内容: 我试图使用GitHub的代码搜索来搜索包含字符代码,像一些行,等 我从https://help.github.com/articles/searching-code/#considerations-for-code- search 了解到,这些字符是通配符,必须转义,否则将被忽略。 这是一个示例:“ if \(done is True \)” 和另一个:“ if(done is Tru

  • 我使用Spring Boot,KeyCloak 10,java 8和keyCloak-admin-Client jar。我能够得到用户,他的组和角色。 当涉及到搜索时,我会看到不同的搜索方法选项,例如,我可以: https://www.keycloak.org/docs-api/10.0/javadocs/org/keycloak/admin/client/resource/UsersResour

  • 问题内容: 我正在寻找一种工具来将包含DDL和内容的数据库转储为纯SQL- Sript,以便可以将其以纯文本格式存档。我知道例如Oracle转储工具或MySQL转储,但是是否有一个工具可以连接到不同的数据源并完成工作?GUI会很棒。 问题答案: 查看http://squirrel-sql.sourceforge.net/。Gui,跨平台,并使用jdbc驱动程序支持任何数据库。

  • 本文向大家介绍iOS 9 Core Spotlight搜索实例代码,包括了iOS 9 Core Spotlight搜索实例代码的使用技巧和注意事项,需要的朋友参考一下 前言   感觉 Spotlight 这个功能还是蛮有用的,能提升用户活跃,增加应用内容曝光几率。 正文   一、实现(iOS 9.0)     1.1  添加索引 一定要注意把上面代码加到子线程里面执行,略慢。可以在 AppDele

  • 无论仓库里的代码量有多少,你经常需要查找一个函数是在哪里调用或者定义的,或者一个方法的变更历史。 Git 提供了两个有用的工具来快速地从它的数据库中浏览代码和提交。 我们来简单的看一下。 Git Grep Git 提供了一个 grep 命令,你可以很方便地从提交历史或者工作目录中查找一个字符串或者正则表达式。 我们用 Git 本身源代码的查找作为例子。 默认情况下 Git 会查找你工作目录的文件。