Merge pull request #1707 from asger-semmle/canonical-name-call-graph

Approved by xiemaisi
This commit is contained in:
semmle-qlci
2019-09-02 09:45:24 +01:00
committed by GitHub
20 changed files with 205 additions and 87 deletions

View File

@@ -114,6 +114,7 @@ test_getAFunctionValue
| tst3.js:2:1:2:23 | functio ... n2() {} | tst3.js:2:1:2:23 | functio ... n2() {} |
| tst.js:1:1:1:15 | function f() {} | tst.js:1:1:1:15 | function f() {} |
| tst.js:2:9:2:21 | function() {} | tst.js:2:9:2:21 | function() {} |
| tst.js:3:1:3:1 | h | tst.js:3:5:3:17 | function() {} |
| tst.js:3:1:3:17 | h = function() {} | tst.js:3:5:3:17 | function() {} |
| tst.js:3:5:3:17 | function() {} | tst.js:3:5:3:17 | function() {} |
| tst.js:4:1:4:5 | k = g | tst.js:2:9:2:21 | function() {} |

View File

@@ -1,4 +1,6 @@
import javascript
import semmle.javascript.dataflow.internal.FlowSteps
from DataFlow::InvokeNode node, int imprecision
select node, node.getACallee(imprecision), imprecision
from DataFlow::InvokeNode node, Function callee
where calls(node, callee)
select node, callee, 0

View File

@@ -1,6 +1,5 @@
| foo.bar | tests/nestedAccess.js:3:14:3:36 | goog.re ... o.bar') |
| foo.bar.x | tests/nestedAccess.js:5:1:5:8 | fooBar.x |
| foo.bar.x | tests/nestedAccess.js:10:9:10:11 | z.x |
| foo.bar.x.y | tests/nestedAccess.js:5:1:5:10 | fooBar.x.y |
| foo.bar.x.y.z | tests/nestedAccess.js:5:1:5:12 | fooBar.x.y.z |
| goog | tests/es6Module.js:1:1:1:4 | goog |

View File

@@ -1,3 +1,4 @@
| file://:0:0:0:0 | global access path |
| tst.js:1:10:1:11 | fs |
| tst.js:1:10:1:11 | fs |
| tst.js:1:20:1:23 | 'fs' |

View File

@@ -3,6 +3,7 @@
| eval.js:1:1:5:1 | functio ... eval`\\n} |
| eval.js:3:3:3:6 | eval |
| eval.js:3:3:3:16 | eval("x = 23") |
| file://:0:0:0:0 | global access path |
| sources.js:1:1:1:0 | this |
| sources.js:1:1:1:12 | new (x => x) |
| sources.js:1:6:1:6 | x |

View File

@@ -2,6 +2,13 @@ test_ApiObject
| tst.js:4:11:4:21 | new myapi() |
| tst.js:16:10:16:21 | api.chain1() |
| tst.js:16:10:16:30 | api.cha ... hain2() |
| tst.js:62:40:62:51 | api.chain1() |
| tst.js:62:40:62:60 | api.cha ... hain2() |
| tst.js:63:38:63:49 | api.chain1() |
| tst.js:63:38:63:58 | api.cha ... hain2() |
| tst_conflict.js:3:11:3:21 | new myapi() |
| tst_conflict.js:6:38:6:49 | api.chain1() |
| tst_conflict.js:6:38:6:58 | api.cha ... hain2() |
test_Connection
| tst.js:7:15:7:18 | conn |
| tst.js:11:5:11:19 | this.connection |
@@ -12,6 +19,10 @@ test_Connection
| tst.js:48:7:48:21 | getConnection() |
| tst.js:54:37:54:51 | getConnection() |
| tst.js:57:14:57:48 | config. ... ction') |
| tst.js:62:40:62:79 | api.cha ... ction() |
| tst.js:63:38:63:77 | api.cha ... ction() |
| tst.js:67:14:67:47 | MyAppli ... nection |
| tst_conflict.js:6:38:6:77 | api.cha ... ction() |
test_DataCallback
| tst.js:10:11:10:12 | cb |
| tst.js:21:1:23:1 | functio ... ata);\\n} |
@@ -22,9 +33,11 @@ test_DataCallback
| tst.js:45:19:45:20 | cb |
| tst.js:48:32:48:60 | identit ... llback) |
| tst.js:58:16:58:22 | x => {} |
| tst.js:68:16:70:3 | data => ... a);\\n } |
test_DataValue
| tst.js:21:18:21:21 | data |
| tst.js:25:19:25:22 | data |
| tst.js:33:17:33:20 | data |
| tst.js:38:10:38:13 | data |
| tst.js:58:16:58:16 | x |
| tst.js:68:16:68:19 | data |

View File

@@ -2,6 +2,13 @@ apiObject
| tst.js:4:11:4:21 | new myapi() |
| tst.js:16:10:16:21 | api.chain1() |
| tst.js:16:10:16:30 | api.cha ... hain2() |
| tst.js:62:40:62:51 | api.chain1() |
| tst.js:62:40:62:60 | api.cha ... hain2() |
| tst.js:63:38:63:49 | api.chain1() |
| tst.js:63:38:63:58 | api.cha ... hain2() |
| tst_conflict.js:3:11:3:21 | new myapi() |
| tst_conflict.js:6:38:6:49 | api.chain1() |
| tst_conflict.js:6:38:6:58 | api.cha ... hain2() |
connection
| type tracker with call steps | tst.js:7:15:7:18 | conn |
| type tracker with call steps | tst.js:11:5:11:19 | this.connection |
@@ -13,6 +20,14 @@ connection
| type tracker without call steps | tst.js:48:7:48:21 | getConnection() |
| type tracker without call steps | tst.js:54:37:54:51 | getConnection() |
| type tracker without call steps | tst.js:57:14:57:48 | config. ... ction') |
| type tracker without call steps | tst.js:62:40:62:79 | api.cha ... ction() |
| type tracker without call steps | tst.js:63:38:63:77 | api.cha ... ction() |
| type tracker without call steps | tst.js:67:14:67:47 | MyAppli ... nection |
| type tracker without call steps | tst_conflict.js:6:38:6:77 | api.cha ... ction() |
| type tracker without call steps with property MyApplication.namespace.connection | file://:0:0:0:0 | global access path |
| type tracker without call steps with property conflict | tst.js:63:3:63:25 | MyAppli ... mespace |
| type tracker without call steps with property conflict | tst_conflict.js:6:3:6:25 | MyAppli ... mespace |
| type tracker without call steps with property connection | tst.js:62:3:62:25 | MyAppli ... mespace |
dataCallback
| tst.js:10:11:10:12 | cb |
| tst.js:21:1:23:1 | functio ... ata);\\n} |
@@ -23,9 +38,11 @@ dataCallback
| tst.js:45:19:45:20 | cb |
| tst.js:48:32:48:60 | identit ... llback) |
| tst.js:58:16:58:22 | x => {} |
| tst.js:68:16:70:3 | data => ... a);\\n } |
dataValue
| tst.js:21:18:21:21 | data |
| tst.js:25:19:25:22 | data |
| tst.js:33:17:33:20 | data |
| tst.js:38:10:38:13 | data |
| tst.js:58:16:58:16 | x |
| tst.js:68:16:68:19 | data |

View File

@@ -57,3 +57,20 @@ function getFromConfigFramework() {
let conn = config.getConfigValue('connection');
conn.getData(x => {});
}
function initConnection() {
MyApplication.namespace.connection = api.chain1().chain2().createConnection();
MyApplication.namespace.conflict = api.chain1().chain2().createConnection();
}
function useConnection() {
let conn = MyApplication.namespace.connection;
conn.getData(data => {
useData(data);
});
let conflict = MyApplication.namespace.conflict;
conflict.getData(data => {
useData(data);
});
}

View File

@@ -0,0 +1,7 @@
import myapi from "@test/myapi";
let api = new myapi();
function initConnection() {
MyApplication.namespace.conflict = api.chain1().chain2().createConnection();
}