Python: Update type-tracking snippet

based on what I learned in https://github.com/github/codeql/pull/5184
This commit is contained in:
Rasmus Wriedt Larsen
2021-02-17 13:11:40 +01:00
parent e0dca2be20
commit a4de88d39c
2 changed files with 6 additions and 6 deletions

View File

@@ -105,8 +105,8 @@
"scope": "ql",
"prefix": "type tracking",
"body": [
"/** Gets a reference to a ${3:thing}. */",
"private DataFlow::Node ${1:myType}(DataFlow::TypeTracker t) {",
"/** Gets a reference to ${3:a thing}. */",
"private DataFlow::LocalSourceNode ${1:myType}(DataFlow::TypeTracker t) {",
" t.start() and",
" result = ${2:value}",
" or",
@@ -115,9 +115,9 @@
" )",
"}",
"",
"/** Gets a reference to a ${3:thing}. */",
"/** Gets a reference to $3. */",
"DataFlow::Node $1() {",
" result = $1(DataFlow::TypeTracker::end())",
" $1(DataFlow::TypeTracker::end()).flowsTo(result)",
"}"
],
"description": "Type tracking predicate",

View File

@@ -180,7 +180,7 @@ private newtype TTypeTracker = MkTypeTracker(Boolean hasCall, OptionalAttributeN
* It is recommended that all uses of this type are written in the following form,
* for tracking some type `myType`:
* ```
* DataFlow::Node myType(DataFlow::TypeTracker t) {
* DataFlow::LocalSourceNode myType(DataFlow::TypeTracker t) {
* t.start() and
* result = < source of myType >
* or
@@ -189,7 +189,7 @@ private newtype TTypeTracker = MkTypeTracker(Boolean hasCall, OptionalAttributeN
* )
* }
*
* DataFlow::Node myType() { result = myType(DataFlow::TypeTracker::end()) }
* DataFlow::Node myType() { myType(DataFlow::TypeTracker::end()).flowsTo(result) }
* ```
*
* Instead of `result = myType(t2).track(t2, t)`, you can also use the equivalent