codeql学习指南
如何安装
基本查询
查询结构
查询基本包含3部分,作用与SQL查询的FROM、WHERE、SELECT部分类似。
查询部分 | 目的 | 细节 |
---|---|---|
import java |
为 Java 和 Kotlin 导入标准 CodeQL 库。 | 每个查询都以一个或多个语句开始import 。 |
from MethodAccess ma |
定义查询的变量。声明的形式为: <type> <variable name> |
我们用:MethodAccess 调用表达式的变量 |
where ma.getMethod().hasName("equals") and ma.getArgument(0).(StringLiteral).getValue() = "" |
定义变量的条件。 | ma.getMethod().hasName("equals") 仅限ma 于调用方法 call equals 。ma.getArgument(0).(StringLiteral).getValue() = "" 说参数必须是文字的"" 。 |
select ma, "This comparison to empty string is inefficient, use isEmpty() instead." |
定义每次匹配报告的内容。select 用于查找不良编码实践实例的查询语句始终采用以下形式: select <program element>, "<alert message>" |
.equals 使用解释问题的字符串报告生成的表达式。 |