限制调用的方法具体是哪一个
import java
from MethodAccess sink
where sink.getMethod().hasQualifiedName("java.sql", "Statement", "executeQuery")
select sink, sink.getArgument(0)
匹配结果示例
获取一个调用所有的参数
ma.getAnArgument()
ma.getArgument(_)
获取指定的表达式在哪个方法中使用了
from RemoteFlowSource source,Method m
where
source.getLocation().getFile().getBaseName() = "DepartmentController.java" and
source.asExpr().getEnclosingCallable() = m
or
m.getAParameter() = source.asParameter()
select source,m
CodeQL Java 获取字符串类型的参数值
经常需要获取参数的数值,像下面这两个,我们希望获取的是funApprover跟codes
在获取字符串类型的参数值时,如果直接调用toString方法,会将包含双引号的整体输出
需要把这个参数值从Expr类型转为StringLiteral类型,然后调用StringLiteral类型的getValue方法