其他只是点 博客

工作原理

数据库创建

使用语言相关的extractor从代码中提取抽象语法树(ast)、名称绑定的语义和类型信息,把源代码转化成单关系表示(single relational representation),以CodeQL数据库存储

代码数据库

CodeQL 数据库包含从代码库中提取的可查询数据, 包含代码的完整、分层表示,包括抽象语法树、数据流图和控制流图的表示

每种语言都有自己独特的数据库模式,用于定义创建数据库的关系。该图为提取过程中的初始词汇分析与使用 CodeQL 的实际复杂分析提供了界面

对于每种语言,CodeQL 库定义类,以在数据库表上提供一层抽象