mirror of
https://github.com/github/codeql.git
synced 2026-01-06 19:20:25 +01:00
30 lines
1.1 KiB
Plaintext
30 lines
1.1 KiB
Plaintext
import python
|
|
private import semmle.python.dataflow.new.internal.PrintNode
|
|
private import semmle.python.dataflow.new.internal.DataFlowPrivate as DataFlowPrivate
|
|
private import semmle.python.ApiGraphs
|
|
import TestUtilities.InlineExpectationsTest
|
|
|
|
class UnresolvedCallExpectations extends InlineExpectationsTest {
|
|
UnresolvedCallExpectations() { this = "UnresolvedCallExpectations" }
|
|
|
|
override string getARelevantTag() { result = "unresolved_call" }
|
|
|
|
predicate unresolvedCall(CallNode call) {
|
|
not exists(DataFlowPrivate::DataFlowCall dfc |
|
|
exists(dfc.getCallable()) and dfc.getNode() = call
|
|
) and
|
|
not DataFlowPrivate::resolveClassCall(call, _) and
|
|
not call = API::builtin(_).getACall().asCfgNode()
|
|
}
|
|
|
|
override predicate hasActualResult(Location location, string element, string tag, string value) {
|
|
exists(location.getFile().getRelativePath()) and
|
|
exists(CallNode call | this.unresolvedCall(call) |
|
|
location = call.getLocation() and
|
|
tag = "unresolved_call" and
|
|
value = prettyExpr(call.getNode()) and
|
|
element = call.toString()
|
|
)
|
|
}
|
|
}
|