Glean 源码分析引擎开源项目

我要开发同款
匿名用户2021年09月03日
32阅读
开发技术Haskell
所属分类代码管理分析/审查/优化、开发工具
授权协议BSD

作品详情

Glean是一个用于收集、推导和查询有关源代码信息的系统。它旨在收集和存储有关代码结构的详细信息,并提供对数据的访问,以提供从在线IDE功能到离线代码分析的强大工具和体验。你可以将其用于:

收集和存储有关代码结构的详细信息。Glean是围绕高效的存储模型设计的,该模型可以大规模存储有关代码的信息。

查询有关代码的信息,为从在线IDE功能到离线代码分析的工具和体验提供支持。

Glean由以下组件组成:

一个建立在RocksDB上的高效存储后端,用于存储事实。事实是由用户定义的模式描述的不可变的术语,并形成一个DAG。事实是由存储后端自动去重的。可以把它看作是能够有效地存储和查询你的代码的AST,并且具有完全的类型安全。

实现声明式查询语言Angle的查询引擎。Angle是一种与Datalog相似的逻辑语言,但具有扩展功能,使其适用于构建对Gleandata 复杂查询。就像在Datalog中一样,Glean可以通过使用Angle定义规则来自动推导出新的事实。

一个服务器管理的磁盘多个数据库,并提供从客户创造,写和查询数据库的请求。该服务器目前使用Thrift,但没有理由将来服务器也不能公开其他协议。该服务器旨在大规模部署,为大量客户端提供复制的数据库。

一个交互式shell,你可以在其中键入查询并浏览数据。

用于直接或通过连接到服务器来创建、编写和查询数据库的命令行工具。

常见编程语言的几个示例模式,以及 其中一些的索引器。请注意,Glean不会强制将所有数据放入一个单一模式中;每种语言的模式中可以有任意数量的特定于语言的细节。可以通过使用Angle派生事实来构建语言中立的抽象。

主要特点:

种类丰富:存储代码的详细信息

紧凑型存储:大规模存储有关代码的数据

高效查询:从代码中获得深刻见解,构建体验

目前支持:

JavaScript/FlowHack计划提供:

PythonC++Objective-CJavaRust

 

查看全文
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论