mirror of
https://github.com/github/codeql.git
synced 2026-04-28 18:25:24 +02:00
add support for named parameters
This commit is contained in:
@@ -65,8 +65,14 @@ API::Node getExtraSuccessorFromNode(API::Node node, AccessPathToken token) {
|
||||
result = node.getMember(token.getAnArgument()).getReturn()
|
||||
or
|
||||
token.getName() = ["Argument", "Parameter"] and
|
||||
token.getAnArgument() = "self" and
|
||||
result = node.getSelfParameter()
|
||||
(
|
||||
token.getAnArgument() = "self" and
|
||||
result = node.getSelfParameter()
|
||||
or
|
||||
exists(string name | token.getAnArgument() = name + ":" |
|
||||
result = node.getKeywordParameter(name)
|
||||
)
|
||||
)
|
||||
// Some features don't have MaD tokens yet, they would need to be added to API-graphs first.
|
||||
// - decorators ("DecoratedClass", "DecoratedMember", "DecoratedParameter")
|
||||
// - Array/Map elements ("ArrayElement", "Element", "MapKey", "MapValue")
|
||||
|
||||
@@ -57,5 +57,8 @@ from testlib import ArgPos
|
||||
val = ArgPos.selfThing(arg, named=2)
|
||||
|
||||
class SubClass (ArgPos.MyClass):
|
||||
def foo(self, arg, named=2):
|
||||
pass
|
||||
def foo(self, arg, named=2, otherName=3):
|
||||
pass
|
||||
|
||||
def secondAndAfter(self, arg1, arg2, arg3, arg4, arg5):
|
||||
pass
|
||||
|
||||
@@ -55,7 +55,6 @@ class Sinks extends ModelInput::SinkModelCsv {
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Non-positional arguments (including Named parameters)
|
||||
// TODO: Any argument
|
||||
// TODO: Test taint steps.
|
||||
// TODO: // There are no API-graph edges for: ArrayElement, Element, MapKey, MapValue (remove from valid tokens list)
|
||||
@@ -78,6 +77,8 @@ class Sources extends ModelInput::SourceModelCsv {
|
||||
"testlib;;Member[CommonTokens].Member[Class].Instance.Method[foo];test-source", //
|
||||
// testing non-positional arguments
|
||||
"testlib;;Member[ArgPos].Member[MyClass].Subclass.Member[foo].Parameter[self];test-source", //
|
||||
"testlib;;Member[ArgPos].Member[MyClass].Subclass.Member[foo].Parameter[named:];test-source", //
|
||||
"testlib;;Member[ArgPos].Member[MyClass].Subclass.Member[secondAndAfter].Parameter[1..];test-source", //
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user