文章目录
前言
学习利用CodeQL进行代码审计。基础语法包含一些概念和例子。本文是查询和类的部分。
一、查询
查询就是整个QL语言运行后输出的结果。有两种查询类型:
- 第一种是该模块中定义了select 查询子句
- 查询谓词,这意味着我们可以在当前模块中定义或者从其他模块中导入
1.select查询子句
1)select子句格式如下所示(通常在文件末尾),其中from和where语句部分是可选的。我们可以在from中定义变量,在where中给变量赋值和对查询结果的过滤,最后在select中显示结果。
from /* ... variable declarations ... */
where /* ... logical formula ... */
select /* ... expressions ... */
2)在select语句中还可以使用一些关键字:
- as关键字,后面跟随一个名字。作用跟SQL中的as相似给个别名,给结果列提供了一个"标签",并允许在后续的select表达式中使用它们。
- order by关键字,后面跟随一个一个结果列名。作用相当于sql中的order by,用于排序结果,并且在结果列名后可选asc(升序)或desc(降序)关键字。
3)官方例子如下,第一张图结果返回的是select子句 查询的结果,第二张图加了个排序
from int x, int y
where x = 3 and y in [0 .. 2]
select x, y, x * y as product, "product: " + product


2.查询谓词
1)查询谓词是一个非成员谓词,并在最开头使用query作为注解。它返回谓词计算结果的所有元组,下面是一个官方的示例:
query int getProduct(int x, int y) {
<

本文介绍了CodeQL的基础语法,包括查询和类型的详细解释。涵盖了select查询子句、查询谓词、原始类型、类的定义及其成员等核心概念。
最低0.47元/天 解锁文章
9230

被折叠的 条评论
为什么被折叠?



