Merge pull request #17224 from aschackmull/java/inlineflow-pathgraph

Java: Add PathGraph to test output for default inline flow tests.
This commit is contained in:
Anders Schack-Mulligen
2024-08-15 13:35:24 +02:00
committed by GitHub
110 changed files with 95267 additions and 0 deletions

View File

@@ -0,0 +1,114 @@
models
edges
| A.java:9:8:9:15 | x : Object | A.java:10:11:10:11 | x : Object | provenance | |
| A.java:9:8:9:15 | x : Object | A.java:10:11:10:11 | x : Object | provenance | |
| A.java:10:11:10:11 | x : Object | A.java:21:14:21:21 | x : Object | provenance | |
| A.java:10:11:10:11 | x : Object | A.java:34:14:34:21 | x : Object | provenance | |
| A.java:13:19:13:26 | x : Object | A.java:14:11:14:11 | x : Object | provenance | |
| A.java:13:19:13:26 | x : Object | A.java:14:11:14:11 | x : Object | provenance | |
| A.java:13:19:13:26 | x : Object | A.java:14:11:14:11 | x : Object | provenance | |
| A.java:14:11:14:11 | x : Object | A.java:21:14:21:21 | x : Object | provenance | |
| A.java:14:11:14:11 | x : Object | A.java:21:14:21:21 | x : Object | provenance | |
| A.java:14:11:14:11 | x : Object | A.java:34:14:34:21 | x : Object | provenance | |
| A.java:14:11:14:11 | x : Object | A.java:34:14:34:21 | x : Object | provenance | |
| A.java:17:19:17:26 | x : Object | A.java:18:16:18:16 | x : Object | provenance | |
| A.java:17:19:17:26 | x : Object | A.java:18:16:18:16 | x : Object | provenance | |
| A.java:17:19:17:26 | x : Object | A.java:18:16:18:16 | x : Object | provenance | |
| A.java:18:16:18:16 | x : Object | A.java:21:14:21:21 | x : Object | provenance | |
| A.java:18:16:18:16 | x : Object | A.java:21:14:21:21 | x : Object | provenance | |
| A.java:18:16:18:16 | x : Object | A.java:34:14:34:21 | x : Object | provenance | |
| A.java:18:16:18:16 | x : Object | A.java:34:14:34:21 | x : Object | provenance | |
| A.java:21:14:21:21 | x : Object | A.java:23:12:23:13 | c1 | provenance | |
| A.java:30:8:30:15 | x : Object | A.java:31:13:31:13 | x : Object | provenance | |
| A.java:31:13:31:13 | x : Object | A.java:9:8:9:15 | x : Object | provenance | |
| A.java:34:14:34:21 | x : Object | A.java:36:12:36:13 | c2 | provenance | |
| A.java:40:16:40:26 | source(...) : Object | A.java:17:19:17:26 | x : Object | provenance | |
| A.java:44:31:44:38 | x : Object | A.java:45:12:45:12 | x : Object | provenance | |
| A.java:44:31:44:38 | x : Object | A.java:45:12:45:12 | x : Object | provenance | |
| A.java:44:31:44:38 | x : Object | A.java:45:12:45:12 | x : Object | provenance | |
| A.java:45:12:45:12 | x : Object | A.java:21:14:21:21 | x : Object | provenance | |
| A.java:45:12:45:12 | x : Object | A.java:21:14:21:21 | x : Object | provenance | |
| A.java:45:12:45:12 | x : Object | A.java:34:14:34:21 | x : Object | provenance | |
| A.java:45:12:45:12 | x : Object | A.java:34:14:34:21 | x : Object | provenance | |
| A.java:49:16:49:28 | source(...) : Object | A.java:13:19:13:26 | x : Object | provenance | |
| A.java:50:16:50:28 | source(...) : Object | A.java:17:19:17:26 | x : Object | provenance | |
| A.java:51:17:51:29 | source(...) : Object | A.java:44:31:44:38 | x : Object | provenance | |
| A.java:53:12:53:23 | source(...) : Object | A.java:9:8:9:15 | x : Object | provenance | |
| A.java:54:23:54:36 | source(...) : Object | A.java:13:19:13:26 | x : Object | provenance | |
| A.java:55:23:55:36 | source(...) : Object | A.java:17:19:17:26 | x : Object | provenance | |
| A.java:56:24:56:37 | source(...) : Object | A.java:44:31:44:38 | x : Object | provenance | |
| A.java:58:12:58:23 | source(...) : Object | A.java:30:8:30:15 | x : Object | provenance | |
| A.java:59:23:59:36 | source(...) : Object | A.java:13:19:13:26 | x : Object | provenance | |
| A.java:60:23:60:36 | source(...) : Object | A.java:17:19:17:26 | x : Object | provenance | |
| A.java:61:24:61:37 | source(...) : Object | A.java:44:31:44:38 | x : Object | provenance | |
| A.java:65:15:65:22 | x : Object | A.java:66:11:66:11 | x : Object | provenance | |
| A.java:65:15:65:22 | x : Object | A.java:66:11:66:11 | x : Object | provenance | |
| A.java:66:11:66:11 | x : Object | A.java:69:14:69:21 | x : Object | provenance | |
| A.java:66:11:66:11 | x : Object | A.java:75:14:75:21 | x : Object | provenance | |
| A.java:66:11:66:11 | x : Object | A.java:75:14:75:21 | x : Object | provenance | |
| A.java:66:11:66:11 | x : Object | A.java:81:14:81:21 | x : Object | provenance | |
| A.java:66:11:66:11 | x : Object | A.java:81:14:81:21 | x : Object | provenance | |
| A.java:66:11:66:11 | x : Object | A.java:87:14:87:21 | x : Object | provenance | |
| A.java:69:14:69:21 | x : Object | A.java:70:12:70:12 | x | provenance | |
| A.java:75:14:75:21 | x : Object | A.java:76:12:76:12 | x | provenance | |
| A.java:81:14:81:21 | x : Object | A.java:82:12:82:12 | x | provenance | |
| A.java:87:14:87:21 | x : Object | A.java:88:12:88:12 | x | provenance | |
| A.java:93:12:93:22 | source(...) : Object | A.java:65:15:65:22 | x : Object | provenance | |
| A.java:96:14:96:26 | source(...) : Object | A.java:65:15:65:22 | x : Object | provenance | |
nodes
| A.java:9:8:9:15 | x : Object | semmle.label | x : Object |
| A.java:9:8:9:15 | x : Object | semmle.label | x : Object |
| A.java:10:11:10:11 | x : Object | semmle.label | x : Object |
| A.java:10:11:10:11 | x : Object | semmle.label | x : Object |
| A.java:13:19:13:26 | x : Object | semmle.label | x : Object |
| A.java:13:19:13:26 | x : Object | semmle.label | x : Object |
| A.java:13:19:13:26 | x : Object | semmle.label | x : Object |
| A.java:14:11:14:11 | x : Object | semmle.label | x : Object |
| A.java:14:11:14:11 | x : Object | semmle.label | x : Object |
| A.java:14:11:14:11 | x : Object | semmle.label | x : Object |
| A.java:17:19:17:26 | x : Object | semmle.label | x : Object |
| A.java:17:19:17:26 | x : Object | semmle.label | x : Object |
| A.java:17:19:17:26 | x : Object | semmle.label | x : Object |
| A.java:18:16:18:16 | x : Object | semmle.label | x : Object |
| A.java:18:16:18:16 | x : Object | semmle.label | x : Object |
| A.java:18:16:18:16 | x : Object | semmle.label | x : Object |
| A.java:21:14:21:21 | x : Object | semmle.label | x : Object |
| A.java:23:12:23:13 | c1 | semmle.label | c1 |
| A.java:30:8:30:15 | x : Object | semmle.label | x : Object |
| A.java:31:13:31:13 | x : Object | semmle.label | x : Object |
| A.java:34:14:34:21 | x : Object | semmle.label | x : Object |
| A.java:36:12:36:13 | c2 | semmle.label | c2 |
| A.java:40:16:40:26 | source(...) : Object | semmle.label | source(...) : Object |
| A.java:44:31:44:38 | x : Object | semmle.label | x : Object |
| A.java:44:31:44:38 | x : Object | semmle.label | x : Object |
| A.java:44:31:44:38 | x : Object | semmle.label | x : Object |
| A.java:45:12:45:12 | x : Object | semmle.label | x : Object |
| A.java:45:12:45:12 | x : Object | semmle.label | x : Object |
| A.java:45:12:45:12 | x : Object | semmle.label | x : Object |
| A.java:49:16:49:28 | source(...) : Object | semmle.label | source(...) : Object |
| A.java:50:16:50:28 | source(...) : Object | semmle.label | source(...) : Object |
| A.java:51:17:51:29 | source(...) : Object | semmle.label | source(...) : Object |
| A.java:53:12:53:23 | source(...) : Object | semmle.label | source(...) : Object |
| A.java:54:23:54:36 | source(...) : Object | semmle.label | source(...) : Object |
| A.java:55:23:55:36 | source(...) : Object | semmle.label | source(...) : Object |
| A.java:56:24:56:37 | source(...) : Object | semmle.label | source(...) : Object |
| A.java:58:12:58:23 | source(...) : Object | semmle.label | source(...) : Object |
| A.java:59:23:59:36 | source(...) : Object | semmle.label | source(...) : Object |
| A.java:60:23:60:36 | source(...) : Object | semmle.label | source(...) : Object |
| A.java:61:24:61:37 | source(...) : Object | semmle.label | source(...) : Object |
| A.java:65:15:65:22 | x : Object | semmle.label | x : Object |
| A.java:65:15:65:22 | x : Object | semmle.label | x : Object |
| A.java:66:11:66:11 | x : Object | semmle.label | x : Object |
| A.java:66:11:66:11 | x : Object | semmle.label | x : Object |
| A.java:69:14:69:21 | x : Object | semmle.label | x : Object |
| A.java:70:12:70:12 | x | semmle.label | x |
| A.java:75:14:75:21 | x : Object | semmle.label | x : Object |
| A.java:76:12:76:12 | x | semmle.label | x |
| A.java:81:14:81:21 | x : Object | semmle.label | x : Object |
| A.java:82:12:82:12 | x | semmle.label | x |
| A.java:87:14:87:21 | x : Object | semmle.label | x : Object |
| A.java:88:12:88:12 | x | semmle.label | x |
| A.java:93:12:93:22 | source(...) : Object | semmle.label | source(...) : Object |
| A.java:96:14:96:26 | source(...) : Object | semmle.label | source(...) : Object |
subpaths
testFailures

View File

@@ -1,3 +1,4 @@
import java
import TestUtilities.InlineFlowTest
import DefaultFlowTest
import TaintFlow::PathGraph

View File

@@ -0,0 +1,550 @@
models
| 1 | Summary: java.lang; Iterable; true; forEach; (Consumer); ; Argument[this].Element; Argument[0].Parameter[0]; value; manual |
| 2 | Summary: java.util; Collection; true; add; ; ; Argument[0]; Argument[this].Element; value; manual |
| 3 | Summary: java.util; List; true; get; (int); ; Argument[this].Element; ReturnValue; value; manual |
| 4 | Summary: java.util; Map; true; forEach; (BiConsumer); ; Argument[this].MapKey; Argument[0].Parameter[0]; value; manual |
| 5 | Summary: java.util; Map; true; forEach; (BiConsumer); ; Argument[this].MapValue; Argument[0].Parameter[1]; value; manual |
| 6 | Summary: java.util; Map; true; put; (Object,Object); ; Argument[0]; Argument[this].MapKey; value; manual |
| 7 | Summary: java.util; Map; true; put; (Object,Object); ; Argument[1]; Argument[this].MapValue; value; manual |
edges
| B.java:11:5:11:6 | l1 [post update] : ArrayList [<element>] : String | B.java:13:5:13:6 | l1 : ArrayList [<element>] : String | provenance | |
| B.java:11:12:11:22 | source(...) : String | B.java:11:5:11:6 | l1 [post update] : ArrayList [<element>] : String | provenance | MaD:2 |
| B.java:13:5:13:6 | l1 : ArrayList [<element>] : String | B.java:13:16:13:16 | e : String | provenance | MaD:1 |
| B.java:13:5:13:6 | l1 : ArrayList [<element>] : String | B.java:13:16:13:29 | ...->... [post update] : new Consumer<String>(...) { ... } [List<String> l2, <element>] : String | provenance | MaD:1 |
| B.java:13:16:13:16 | e : String | B.java:13:28:13:28 | e : String | provenance | |
| B.java:13:16:13:29 | ...->... [post update] : new Consumer<String>(...) { ... } [List<String> l2, <element>] : String | B.java:13:16:13:29 | List<String> l2 : ArrayList [<element>] : String | provenance | |
| B.java:13:16:13:29 | List<String> l2 : ArrayList [<element>] : String | B.java:14:10:14:11 | l2 : ArrayList [<element>] : String | provenance | |
| B.java:13:21:13:22 | l2 [post update] : ArrayList [<element>] : String | B.java:13:21:13:22 | this : new Consumer<String>(...) { ... } [List<String> l2, <element>] : String | provenance | |
| B.java:13:21:13:22 | this : new Consumer<String>(...) { ... } [List<String> l2, <element>] : String | B.java:13:16:13:29 | parameter this [Return] : new Consumer<String>(...) { ... } [List<String> l2, <element>] : String | provenance | |
| B.java:13:28:13:28 | e : String | B.java:13:21:13:22 | l2 [post update] : ArrayList [<element>] : String | provenance | MaD:2 |
| B.java:14:10:14:11 | l2 : ArrayList [<element>] : String | B.java:14:10:14:18 | get(...) | provenance | MaD:3 |
| B.java:22:26:22:26 | x : String | B.java:22:68:22:68 | x : String | provenance | |
| B.java:22:56:22:60 | other [post update] : B [bf1] : String | B.java:22:56:22:60 | this : new Consumer<String>(...) { ... } [B other, bf1] : String | provenance | |
| B.java:22:56:22:60 | this : new Consumer<String>(...) { ... } [B other, bf1] : String | B.java:22:26:22:71 | parameter this [Return] : new Consumer<String>(...) { ... } [B other, bf1] : String | provenance | |
| B.java:22:68:22:68 | x : String | B.java:22:56:22:60 | other [post update] : B [bf1] : String | provenance | |
| B.java:30:5:30:5 | B other : B [bf1] : String | B.java:34:10:34:14 | other : B [bf1] : String | provenance | |
| B.java:30:5:30:5 | f [post update] : new Consumer<String>(...) { ... } [B other, bf1] : String | B.java:30:5:30:5 | B other : B [bf1] : String | provenance | |
| B.java:30:14:30:24 | source(...) : String | B.java:22:26:22:26 | x : String | provenance | |
| B.java:30:14:30:24 | source(...) : String | B.java:30:5:30:5 | f [post update] : new Consumer<String>(...) { ... } [B other, bf1] : String | provenance | |
| B.java:34:10:34:14 | other : B [bf1] : String | B.java:34:10:34:18 | other.bf1 | provenance | |
| B.java:38:23:38:45 | inp : HashMap [<map.key>] : String | B.java:39:5:39:7 | inp : HashMap [<map.key>] : String | provenance | |
| B.java:38:23:38:45 | inp : HashMap [<map.value>] : String | B.java:39:5:39:7 | inp : HashMap [<map.value>] : String | provenance | |
| B.java:39:5:39:7 | inp : HashMap [<map.key>] : String | B.java:39:17:39:56 | ...->... [post update] : new BiConsumer<String,String>(...) { ... } [out, <map.key>] : String | provenance | MaD:4 |
| B.java:39:5:39:7 | inp : HashMap [<map.key>] : String | B.java:39:18:39:20 | key : String | provenance | MaD:4 |
| B.java:39:5:39:7 | inp : HashMap [<map.value>] : String | B.java:39:17:39:56 | ...->... [post update] : new BiConsumer<String,String>(...) { ... } [out, <map.value>] : String | provenance | MaD:5 |
| B.java:39:5:39:7 | inp : HashMap [<map.value>] : String | B.java:39:23:39:27 | value : String | provenance | MaD:5 |
| B.java:39:17:39:56 | ...->... [post update] : new BiConsumer<String,String>(...) { ... } [out, <map.key>] : String | B.java:39:17:39:56 | out : HashMap [<map.key>] : String | provenance | |
| B.java:39:17:39:56 | ...->... [post update] : new BiConsumer<String,String>(...) { ... } [out, <map.value>] : String | B.java:39:17:39:56 | out : HashMap [<map.value>] : String | provenance | |
| B.java:39:17:39:56 | out : HashMap [<map.key>] : String | B.java:38:48:38:70 | out [Return] : HashMap [<map.key>] : String | provenance | |
| B.java:39:17:39:56 | out : HashMap [<map.value>] : String | B.java:38:48:38:70 | out [Return] : HashMap [<map.value>] : String | provenance | |
| B.java:39:18:39:20 | key : String | B.java:39:43:39:45 | key : String | provenance | |
| B.java:39:23:39:27 | value : String | B.java:39:48:39:52 | value : String | provenance | |
| B.java:39:35:39:37 | out [post update] : HashMap [<map.key>] : String | B.java:39:35:39:37 | this : new BiConsumer<String,String>(...) { ... } [out, <map.key>] : String | provenance | |
| B.java:39:35:39:37 | out [post update] : HashMap [<map.value>] : String | B.java:39:35:39:37 | this : new BiConsumer<String,String>(...) { ... } [out, <map.value>] : String | provenance | |
| B.java:39:35:39:37 | this : new BiConsumer<String,String>(...) { ... } [out, <map.key>] : String | B.java:39:17:39:56 | parameter this [Return] : new BiConsumer<String,String>(...) { ... } [out, <map.key>] : String | provenance | |
| B.java:39:35:39:37 | this : new BiConsumer<String,String>(...) { ... } [out, <map.value>] : String | B.java:39:17:39:56 | parameter this [Return] : new BiConsumer<String,String>(...) { ... } [out, <map.value>] : String | provenance | |
| B.java:39:43:39:45 | key : String | B.java:39:35:39:37 | out [post update] : HashMap [<map.key>] : String | provenance | MaD:6 |
| B.java:39:48:39:52 | value : String | B.java:39:35:39:37 | out [post update] : HashMap [<map.value>] : String | provenance | MaD:7 |
| B.java:45:5:45:6 | m1 [post update] : HashMap [<map.key>] : String | B.java:46:13:46:14 | m1 : HashMap [<map.key>] : String | provenance | |
| B.java:45:5:45:6 | m1 [post update] : HashMap [<map.value>] : String | B.java:46:13:46:14 | m1 : HashMap [<map.value>] : String | provenance | |
| B.java:45:12:45:24 | source(...) : String | B.java:45:5:45:6 | m1 [post update] : HashMap [<map.key>] : String | provenance | MaD:6 |
| B.java:45:27:45:41 | source(...) : String | B.java:45:5:45:6 | m1 [post update] : HashMap [<map.value>] : String | provenance | MaD:7 |
| B.java:46:13:46:14 | m1 : HashMap [<map.key>] : String | B.java:38:23:38:45 | inp : HashMap [<map.key>] : String | provenance | |
| B.java:46:13:46:14 | m1 : HashMap [<map.key>] : String | B.java:46:17:46:18 | m2 [post update] : HashMap [<map.key>] : String | provenance | MaD:4 |
| B.java:46:13:46:14 | m1 : HashMap [<map.value>] : String | B.java:38:23:38:45 | inp : HashMap [<map.value>] : String | provenance | |
| B.java:46:13:46:14 | m1 : HashMap [<map.value>] : String | B.java:46:17:46:18 | m2 [post update] : HashMap [<map.value>] : String | provenance | MaD:5 |
| B.java:46:17:46:18 | m2 [post update] : HashMap [<map.key>] : String | B.java:47:5:47:6 | m2 : HashMap [<map.key>] : String | provenance | |
| B.java:46:17:46:18 | m2 [post update] : HashMap [<map.value>] : String | B.java:47:5:47:6 | m2 : HashMap [<map.value>] : String | provenance | |
| B.java:47:5:47:6 | m2 : HashMap [<map.key>] : String | B.java:47:17:47:17 | k : String | provenance | MaD:4 |
| B.java:47:5:47:6 | m2 : HashMap [<map.value>] : String | B.java:47:20:47:20 | v : String | provenance | MaD:5 |
| B.java:47:17:47:17 | k : String | B.java:48:12:48:12 | k | provenance | |
| B.java:47:20:47:20 | v : String | B.java:49:12:49:12 | v | provenance | |
| B.java:57:18:57:34 | source(...) : String | B.java:60:21:60:32 | param : String | provenance | |
| B.java:60:21:60:32 | param : String | B.java:66:5:66:5 | param : String | provenance | |
| B.java:61:18:65:5 | parameter this : new Runnable(...) { ... } [param] : String | B.java:64:12:64:16 | this : new Runnable(...) { ... } [param] : String | provenance | |
| B.java:64:12:64:16 | this : new Runnable(...) { ... } [param] : String | B.java:64:12:64:16 | param | provenance | |
| B.java:66:5:66:5 | param : String | B.java:66:5:66:5 | r : new Runnable(...) { ... } [param] : String | provenance | |
| B.java:66:5:66:5 | r : new Runnable(...) { ... } [param] : String | B.java:61:18:65:5 | parameter this : new Runnable(...) { ... } [param] : String | provenance | |
| B.java:71:19:71:23 | other [post update] : B [elem] : String | B.java:74:10:74:14 | other : B [elem] : String | provenance | |
| B.java:74:10:74:14 | other : B [elem] : String | B.java:74:10:74:19 | other.elem | provenance | |
| B.java:77:22:77:28 | param [Return] : B [elem] : String | B.java:71:19:71:23 | other [post update] : B [elem] : String | provenance | |
| B.java:78:18:81:5 | parameter this [Return] : new Runnable(...) { ... } [param, elem] : String | B.java:82:5:82:5 | r [post update] : new Runnable(...) { ... } [param, elem] : String | provenance | |
| B.java:80:7:80:11 | param [post update] : B [elem] : String | B.java:80:7:80:11 | this : new Runnable(...) { ... } [param, elem] : String | provenance | |
| B.java:80:7:80:11 | this : new Runnable(...) { ... } [param, elem] : String | B.java:78:18:81:5 | parameter this [Return] : new Runnable(...) { ... } [param, elem] : String | provenance | |
| B.java:80:20:80:39 | source(...) : String | B.java:80:7:80:11 | param [post update] : B [elem] : String | provenance | |
| B.java:82:5:82:5 | param : B [elem] : String | B.java:77:22:77:28 | param [Return] : B [elem] : String | provenance | |
| B.java:82:5:82:5 | r [post update] : new Runnable(...) { ... } [param, elem] : String | B.java:82:5:82:5 | param : B [elem] : String | provenance | |
| B.java:88:22:88:44 | parameter this : new Runnable(...) { ... } [B b, elem] : String | B.java:88:35:88:35 | this : new Runnable(...) { ... } [B b, elem] : String | provenance | |
| B.java:88:35:88:35 | b : B [elem] : String | B.java:88:35:88:40 | b.elem | provenance | |
| B.java:88:35:88:35 | this : new Runnable(...) { ... } [B b, elem] : String | B.java:88:35:88:35 | b : B [elem] : String | provenance | |
| B.java:89:20:89:52 | parameter this [Return] : new Runnable(...) { ... } [B b, elem] : String | B.java:96:5:96:5 | r [post update] : new Runnable(...) { ... } [B b, elem] : String | provenance | |
| B.java:89:28:89:28 | b [post update] : B [elem] : String | B.java:89:28:89:28 | this : new Runnable(...) { ... } [B b, elem] : String | provenance | |
| B.java:89:28:89:28 | this : new Runnable(...) { ... } [B b, elem] : String | B.java:89:20:89:52 | parameter this [Return] : new Runnable(...) { ... } [B b, elem] : String | provenance | |
| B.java:89:37:89:49 | source(...) : String | B.java:89:28:89:28 | b [post update] : B [elem] : String | provenance | |
| B.java:91:11:91:13 | B b : B [elem] : String | B.java:92:11:92:15 | B b : B [elem] : String | provenance | |
| B.java:91:11:91:13 | src [post update] : new Runnable(...) { ... } [B b, elem] : String | B.java:91:11:91:13 | B b : B [elem] : String | provenance | |
| B.java:92:11:92:15 | B b : B [elem] : String | B.java:92:11:92:15 | sink2 : new Runnable(...) { ... } [B b, elem] : String | provenance | |
| B.java:92:11:92:15 | sink2 : new Runnable(...) { ... } [B b, elem] : String | B.java:95:14:95:23 | r : new Runnable(...) { ... } [B b, elem] : String | provenance | |
| B.java:95:14:95:23 | r : new Runnable(...) { ... } [B b, elem] : String | B.java:96:5:96:5 | r : new Runnable(...) { ... } [B b, elem] : String | provenance | |
| B.java:95:14:95:23 | r [Return] : new Runnable(...) { ... } [B b, elem] : String | B.java:91:11:91:13 | src [post update] : new Runnable(...) { ... } [B b, elem] : String | provenance | |
| B.java:96:5:96:5 | r : new Runnable(...) { ... } [B b, elem] : String | B.java:88:22:88:44 | parameter this : new Runnable(...) { ... } [B b, elem] : String | provenance | |
| B.java:96:5:96:5 | r [post update] : new Runnable(...) { ... } [B b, elem] : String | B.java:95:14:95:23 | r [Return] : new Runnable(...) { ... } [B b, elem] : String | provenance | |
| B.java:102:5:102:6 | l1 [post update] : ArrayList [<element>] : String | B.java:103:12:103:13 | l1 : ArrayList [<element>] : String | provenance | |
| B.java:102:12:102:29 | source(...) : String | B.java:102:5:102:6 | l1 [post update] : ArrayList [<element>] : String | provenance | MaD:2 |
| B.java:103:5:103:6 | l2 [post update] : ArrayList [<element>, <element>] : String | B.java:107:5:107:6 | l2 : ArrayList [<element>, <element>] : String | provenance | |
| B.java:103:12:103:13 | l1 : ArrayList [<element>] : String | B.java:103:5:103:6 | l2 [post update] : ArrayList [<element>, <element>] : String | provenance | MaD:2 |
| B.java:104:16:104:32 | source(...) : String | B.java:107:16:111:6 | String s : String | provenance | |
| B.java:107:5:107:6 | l2 : ArrayList [<element>, <element>] : String | B.java:107:16:107:16 | l : ArrayList [<element>] : String | provenance | MaD:1 |
| B.java:107:5:107:6 | l2 : ArrayList [<element>, <element>] : String | B.java:107:16:111:6 | ...->... [post update] : new Consumer<List<String>>(...) { ... } [List<String> out1, <element>] : String | provenance | MaD:1 |
| B.java:107:16:107:16 | l : ArrayList [<element>] : String | B.java:107:21:107:21 | l : ArrayList [<element>] : String | provenance | |
| B.java:107:16:111:6 | ...->... : new Consumer<List<String>>(...) { ... } [String s] : String | B.java:107:16:111:6 | ...->... [post update] : new Consumer<List<String>>(...) { ... } [List<String> out2, <element>] : String | provenance | MaD:1 |
| B.java:107:16:111:6 | ...->... : new Consumer<List<String>>(...) { ... } [String s] : String | B.java:107:16:111:6 | ...->... [post update] : new Consumer<List<String>>(...) { ... } [List<String> out2, <element>] : String | provenance | heuristic-callback |
| B.java:107:16:111:6 | ...->... : new Consumer<List<String>>(...) { ... } [String s] : String | B.java:107:16:111:6 | parameter this : new Consumer<List<String>>(...) { ... } [String s] : String | provenance | MaD:1 |
| B.java:107:16:111:6 | ...->... : new Consumer<List<String>>(...) { ... } [String s] : String | B.java:107:16:111:6 | parameter this : new Consumer<List<String>>(...) { ... } [String s] : String | provenance | heuristic-callback |
| B.java:107:16:111:6 | ...->... [post update] : new Consumer<List<String>>(...) { ... } [List<String> out1, <element>] : String | B.java:107:16:111:6 | List<String> out1 : ArrayList [<element>] : String | provenance | |
| B.java:107:16:111:6 | ...->... [post update] : new Consumer<List<String>>(...) { ... } [List<String> out2, <element>] : String | B.java:107:16:111:6 | List<String> out2 : ArrayList [<element>] : String | provenance | |
| B.java:107:16:111:6 | List<String> out1 : ArrayList [<element>] : String | B.java:112:10:112:13 | out1 : ArrayList [<element>] : String | provenance | |
| B.java:107:16:111:6 | List<String> out2 : ArrayList [<element>] : String | B.java:113:10:113:13 | out2 : ArrayList [<element>] : String | provenance | |
| B.java:107:16:111:6 | String s : String | B.java:107:16:111:6 | ...->... : new Consumer<List<String>>(...) { ... } [String s] : String | provenance | |
| B.java:107:16:111:6 | parameter this : new Consumer<List<String>>(...) { ... } [String s] : String | B.java:107:31:111:5 | this : new Consumer<List<String>>(...) { ... } [String s] : String | provenance | |
| B.java:107:21:107:21 | l : ArrayList [<element>] : String | B.java:107:31:107:31 | x : String | provenance | MaD:1 |
| B.java:107:21:107:21 | l : ArrayList [<element>] : String | B.java:107:31:111:5 | ...->... [post update] : new Consumer<String>(...) { ... } [List<String> out1, <element>] : String | provenance | MaD:1 |
| B.java:107:31:107:31 | x : String | B.java:109:16:109:16 | x : String | provenance | |
| B.java:107:31:111:5 | ...->... : new Consumer<String>(...) { ... } [String s] : String | B.java:107:31:111:5 | ...->... [post update] : new Consumer<String>(...) { ... } [List<String> out2, <element>] : String | provenance | MaD:1 |
| B.java:107:31:111:5 | ...->... : new Consumer<String>(...) { ... } [String s] : String | B.java:107:31:111:5 | ...->... [post update] : new Consumer<String>(...) { ... } [List<String> out2, <element>] : String | provenance | MaD:1 |
| B.java:107:31:111:5 | ...->... : new Consumer<String>(...) { ... } [String s] : String | B.java:107:31:111:5 | ...->... [post update] : new Consumer<String>(...) { ... } [List<String> out2, <element>] : String | provenance | heuristic-callback |
| B.java:107:31:111:5 | ...->... : new Consumer<String>(...) { ... } [String s] : String | B.java:107:31:111:5 | ...->... [post update] : new Consumer<String>(...) { ... } [List<String> out2, <element>] : String | provenance | heuristic-callback |
| B.java:107:31:111:5 | ...->... : new Consumer<String>(...) { ... } [String s] : String | B.java:107:31:111:5 | parameter this : new Consumer<String>(...) { ... } [String s] : String | provenance | MaD:1 |
| B.java:107:31:111:5 | ...->... : new Consumer<String>(...) { ... } [String s] : String | B.java:107:31:111:5 | parameter this : new Consumer<String>(...) { ... } [String s] : String | provenance | heuristic-callback |
| B.java:107:31:111:5 | ...->... [post update] : new Consumer<String>(...) { ... } [List<String> out1, <element>] : String | B.java:107:31:111:5 | List<String> out1 : ArrayList [<element>] : String | provenance | |
| B.java:107:31:111:5 | ...->... [post update] : new Consumer<String>(...) { ... } [List<String> out2, <element>] : String | B.java:107:31:111:5 | List<String> out2 : ArrayList [<element>] : String | provenance | |
| B.java:107:31:111:5 | ...->... [post update] : new Consumer<String>(...) { ... } [List<String> out2, <element>] : String | B.java:107:31:111:5 | List<String> out2 : ArrayList [<element>] : String | provenance | |
| B.java:107:31:111:5 | ...->... [post update] : new Consumer<String>(...) { ... } [List<String> out2, <element>] : String | B.java:107:31:111:5 | List<String> out2 : ArrayList [<element>] : String | provenance | |
| B.java:107:31:111:5 | ...->... [post update] : new Consumer<String>(...) { ... } [List<String> out2, <element>] : String | B.java:107:31:111:5 | List<String> out2 : ArrayList [<element>] : String | provenance | |
| B.java:107:31:111:5 | List<String> out1 : ArrayList [<element>] : String | B.java:107:31:111:5 | this : new Consumer<List<String>>(...) { ... } [List<String> out1, <element>] : String | provenance | |
| B.java:107:31:111:5 | List<String> out2 : ArrayList [<element>] : String | B.java:107:31:111:5 | this : new Consumer<List<String>>(...) { ... } [List<String> out2, <element>] : String | provenance | |
| B.java:107:31:111:5 | List<String> out2 : ArrayList [<element>] : String | B.java:107:31:111:5 | this : new Consumer<List<String>>(...) { ... } [List<String> out2, <element>] : String | provenance | |
| B.java:107:31:111:5 | List<String> out2 : ArrayList [<element>] : String | B.java:107:31:111:5 | this : new Consumer<List<String>>(...) { ... } [List<String> out2, <element>] : String | provenance | |
| B.java:107:31:111:5 | List<String> out2 : ArrayList [<element>] : String | B.java:107:31:111:5 | this : new Consumer<List<String>>(...) { ... } [List<String> out2, <element>] : String | provenance | |
| B.java:107:31:111:5 | String s : String | B.java:107:31:111:5 | ...->... : new Consumer<String>(...) { ... } [String s] : String | provenance | |
| B.java:107:31:111:5 | parameter this : new Consumer<String>(...) { ... } [String s] : String | B.java:108:12:108:12 | this : new Consumer<String>(...) { ... } [String s] : String | provenance | |
| B.java:107:31:111:5 | parameter this : new Consumer<String>(...) { ... } [String s] : String | B.java:110:16:110:16 | this : new Consumer<String>(...) { ... } [String s] : String | provenance | |
| B.java:107:31:111:5 | this : new Consumer<List<String>>(...) { ... } [List<String> out1, <element>] : String | B.java:107:16:111:6 | parameter this [Return] : new Consumer<List<String>>(...) { ... } [List<String> out1, <element>] : String | provenance | |
| B.java:107:31:111:5 | this : new Consumer<List<String>>(...) { ... } [List<String> out2, <element>] : String | B.java:107:16:111:6 | parameter this [Return] : new Consumer<List<String>>(...) { ... } [List<String> out2, <element>] : String | provenance | |
| B.java:107:31:111:5 | this : new Consumer<List<String>>(...) { ... } [List<String> out2, <element>] : String | B.java:107:16:111:6 | parameter this [Return] : new Consumer<List<String>>(...) { ... } [List<String> out2, <element>] : String | provenance | |
| B.java:107:31:111:5 | this : new Consumer<List<String>>(...) { ... } [List<String> out2, <element>] : String | B.java:107:16:111:6 | parameter this [Return] : new Consumer<List<String>>(...) { ... } [List<String> out2, <element>] : String | provenance | |
| B.java:107:31:111:5 | this : new Consumer<List<String>>(...) { ... } [List<String> out2, <element>] : String | B.java:107:16:111:6 | parameter this [Return] : new Consumer<List<String>>(...) { ... } [List<String> out2, <element>] : String | provenance | |
| B.java:107:31:111:5 | this : new Consumer<List<String>>(...) { ... } [String s] : String | B.java:107:31:111:5 | String s : String | provenance | |
| B.java:108:12:108:12 | this : new Consumer<String>(...) { ... } [String s] : String | B.java:108:12:108:12 | s | provenance | |
| B.java:109:7:109:10 | out1 [post update] : ArrayList [<element>] : String | B.java:109:7:109:10 | this : new Consumer<String>(...) { ... } [List<String> out1, <element>] : String | provenance | |
| B.java:109:7:109:10 | this : new Consumer<String>(...) { ... } [List<String> out1, <element>] : String | B.java:107:31:111:5 | parameter this [Return] : new Consumer<String>(...) { ... } [List<String> out1, <element>] : String | provenance | |
| B.java:109:16:109:16 | x : String | B.java:109:7:109:10 | out1 [post update] : ArrayList [<element>] : String | provenance | MaD:2 |
| B.java:110:7:110:10 | out2 [post update] : ArrayList [<element>] : String | B.java:110:7:110:10 | this : new Consumer<String>(...) { ... } [List<String> out2, <element>] : String | provenance | |
| B.java:110:7:110:10 | this : new Consumer<String>(...) { ... } [List<String> out2, <element>] : String | B.java:107:31:111:5 | parameter this [Return] : new Consumer<String>(...) { ... } [List<String> out2, <element>] : String | provenance | |
| B.java:110:16:110:16 | s : String | B.java:110:7:110:10 | out2 [post update] : ArrayList [<element>] : String | provenance | MaD:2 |
| B.java:110:16:110:16 | this : new Consumer<String>(...) { ... } [String s] : String | B.java:110:16:110:16 | s : String | provenance | |
| B.java:112:10:112:13 | out1 : ArrayList [<element>] : String | B.java:112:10:112:20 | get(...) | provenance | MaD:3 |
| B.java:113:10:113:13 | out2 : ArrayList [<element>] : String | B.java:113:10:113:20 | get(...) | provenance | MaD:3 |
| B.java:126:19:126:22 | parameter this [Return] : new TwoRuns(...) { ... } [List<String> l1, <element>] : String | B.java:136:5:136:5 | r [post update] : new TwoRuns(...) { ... } [List<String> l1, <element>] : String | provenance | |
| B.java:127:9:127:10 | l1 [post update] : ArrayList [<element>] : String | B.java:127:9:127:10 | this : new TwoRuns(...) { ... } [List<String> l1, <element>] : String | provenance | |
| B.java:127:9:127:10 | this : new TwoRuns(...) { ... } [List<String> l1, <element>] : String | B.java:126:19:126:22 | parameter this [Return] : new TwoRuns(...) { ... } [List<String> l1, <element>] : String | provenance | |
| B.java:127:16:127:29 | source(...) : String | B.java:127:9:127:10 | l1 [post update] : ArrayList [<element>] : String | provenance | MaD:2 |
| B.java:130:19:130:22 | parameter this : new TwoRuns(...) { ... } [List<String> l1, <element>] : String | B.java:131:16:131:17 | this : new TwoRuns(...) { ... } [List<String> l1, <element>] : String | provenance | |
| B.java:131:9:131:10 | l2 [post update] : ArrayList [<element>] : String | B.java:131:9:131:10 | this : new TwoRuns(...) { ... } [List<String> l2, <element>] : String | provenance | |
| B.java:131:9:131:10 | this : new TwoRuns(...) { ... } [List<String> l2, <element>] : String | B.java:130:19:130:22 | parameter this [Return] : new TwoRuns(...) { ... } [List<String> l2, <element>] : String | provenance | |
| B.java:131:16:131:17 | l1 : ArrayList [<element>] : String | B.java:131:16:131:24 | get(...) : String | provenance | MaD:3 |
| B.java:131:16:131:17 | this : new TwoRuns(...) { ... } [List<String> l1, <element>] : String | B.java:131:16:131:17 | l1 : ArrayList [<element>] : String | provenance | |
| B.java:131:16:131:24 | get(...) : String | B.java:131:9:131:10 | l2 [post update] : ArrayList [<element>] : String | provenance | MaD:2 |
| B.java:136:5:136:5 | List<String> l1 : ArrayList [<element>] : String | B.java:137:5:137:5 | List<String> l1 : ArrayList [<element>] : String | provenance | |
| B.java:136:5:136:5 | r [post update] : new TwoRuns(...) { ... } [List<String> l1, <element>] : String | B.java:136:5:136:5 | List<String> l1 : ArrayList [<element>] : String | provenance | |
| B.java:137:5:137:5 | List<String> l1 : ArrayList [<element>] : String | B.java:137:5:137:5 | r : new TwoRuns(...) { ... } [List<String> l1, <element>] : String | provenance | |
| B.java:137:5:137:5 | List<String> l2 : ArrayList [<element>] : String | B.java:138:10:138:11 | l2 : ArrayList [<element>] : String | provenance | |
| B.java:137:5:137:5 | r : new TwoRuns(...) { ... } [List<String> l1, <element>] : String | B.java:130:19:130:22 | parameter this : new TwoRuns(...) { ... } [List<String> l1, <element>] : String | provenance | |
| B.java:137:5:137:5 | r : new TwoRuns(...) { ... } [List<String> l1, <element>] : String | B.java:137:5:137:5 | r [post update] : new TwoRuns(...) { ... } [List<String> l2, <element>] : String | provenance | MaD:3 |
| B.java:137:5:137:5 | r [post update] : new TwoRuns(...) { ... } [List<String> l2, <element>] : String | B.java:137:5:137:5 | List<String> l2 : ArrayList [<element>] : String | provenance | |
| B.java:138:10:138:11 | l2 : ArrayList [<element>] : String | B.java:138:10:138:18 | get(...) | provenance | MaD:3 |
| B.java:142:16:142:31 | source(...) : String | B.java:148:17:148:29 | String s : String | provenance | |
| B.java:145:7:145:13 | parameter this : MyLocal [String s] : String | B.java:145:28:145:28 | this : MyLocal [String s] : String | provenance | |
| B.java:145:19:145:22 | this [post update] : MyLocal [f] : String | B.java:145:7:145:13 | parameter this [Return] : MyLocal [f] : String | provenance | |
| B.java:145:28:145:28 | s : String | B.java:145:19:145:22 | this [post update] : MyLocal [f] : String | provenance | |
| B.java:145:28:145:28 | this : MyLocal [String s] : String | B.java:145:28:145:28 | s : String | provenance | |
| B.java:146:14:146:17 | parameter this : MyLocal [f] : String | B.java:146:30:146:33 | this : MyLocal [f] : String | provenance | |
| B.java:146:30:146:33 | this : MyLocal [f] : String | B.java:146:30:146:35 | this.f : String | provenance | |
| B.java:148:17:148:29 | String s : String | B.java:148:17:148:29 | new MyLocal(...) [pre constructor] : MyLocal [String s] : String | provenance | |
| B.java:148:17:148:29 | new MyLocal(...) : MyLocal [f] : String | B.java:149:10:149:10 | m : MyLocal [f] : String | provenance | |
| B.java:148:17:148:29 | new MyLocal(...) [pre constructor] : MyLocal [String s] : String | B.java:145:7:145:13 | parameter this : MyLocal [String s] : String | provenance | |
| B.java:148:17:148:29 | new MyLocal(...) [pre constructor] : MyLocal [String s] : String | B.java:148:17:148:29 | new MyLocal(...) : MyLocal [f] : String | provenance | |
| B.java:149:10:149:10 | m : MyLocal [f] : String | B.java:146:14:146:17 | parameter this : MyLocal [f] : String | provenance | |
| B.java:149:10:149:10 | m : MyLocal [f] : String | B.java:149:10:149:17 | getF(...) | provenance | |
| B.java:153:17:153:28 | source(...) : String | B.java:173:18:173:30 | String s1 : String | provenance | |
| B.java:154:17:154:28 | source(...) : String | B.java:173:18:173:30 | String s2 : String | provenance | |
| B.java:154:17:154:28 | source(...) : String | B.java:174:18:174:30 | String s2 : String | provenance | |
| B.java:154:17:154:28 | source(...) : String | B.java:175:5:175:6 | String s2 : String | provenance | |
| B.java:158:7:158:13 | parameter this : MyLocal [String s1] : String | B.java:159:18:159:19 | this : MyLocal [String s1] : String | provenance | |
| B.java:158:7:158:13 | parameter this : MyLocal [String s2] : String | B.java:160:14:160:15 | this : MyLocal [String s2] : String | provenance | |
| B.java:159:9:159:12 | this [post update] : MyLocal [f] : String | B.java:158:7:158:13 | parameter this [Return] : MyLocal [f] : String | provenance | |
| B.java:159:18:159:19 | s1 : String | B.java:159:9:159:12 | this [post update] : MyLocal [f] : String | provenance | |
| B.java:159:18:159:19 | this : MyLocal [String s1] : String | B.java:159:18:159:19 | s1 : String | provenance | |
| B.java:160:14:160:15 | this : MyLocal [String s2] : String | B.java:160:14:160:15 | s2 | provenance | |
| B.java:162:12:162:15 | parameter this : MyLocal [String s2] : String | B.java:164:14:164:15 | this : MyLocal [String s2] : String | provenance | |
| B.java:162:12:162:15 | parameter this : MyLocal [f] : String | B.java:163:14:163:14 | this <.field> : MyLocal [f] : String | provenance | |
| B.java:163:14:163:14 | this <.field> : MyLocal [f] : String | B.java:163:14:163:14 | f | provenance | |
| B.java:164:14:164:15 | this : MyLocal [String s2] : String | B.java:164:14:164:15 | s2 | provenance | |
| B.java:166:16:166:23 | s : String | B.java:167:15:167:15 | s : String | provenance | |
| B.java:167:9:167:9 | l [post update] : ArrayList [<element>] : String | B.java:167:9:167:9 | this : MyLocal [List<String> l, <element>] : String | provenance | |
| B.java:167:9:167:9 | this : MyLocal [List<String> l, <element>] : String | B.java:166:12:166:14 | parameter this [Return] : MyLocal [List<String> l, <element>] : String | provenance | |
| B.java:167:15:167:15 | s : String | B.java:167:9:167:9 | l [post update] : ArrayList [<element>] : String | provenance | MaD:2 |
| B.java:169:14:169:16 | parameter this : MyLocal [List<String> l, <element>] : String | B.java:170:16:170:16 | this : MyLocal [List<String> l, <element>] : String | provenance | |
| B.java:170:16:170:16 | l : ArrayList [<element>] : String | B.java:170:16:170:23 | get(...) : String | provenance | MaD:3 |
| B.java:170:16:170:16 | this : MyLocal [List<String> l, <element>] : String | B.java:170:16:170:16 | l : ArrayList [<element>] : String | provenance | |
| B.java:173:18:173:30 | String s1 : String | B.java:173:18:173:30 | new MyLocal(...) [pre constructor] : MyLocal [String s1] : String | provenance | |
| B.java:173:18:173:30 | String s2 : String | B.java:173:18:173:30 | new MyLocal(...) : MyLocal [String s2] : String | provenance | |
| B.java:173:18:173:30 | String s2 : String | B.java:173:18:173:30 | new MyLocal(...) [pre constructor] : MyLocal [String s2] : String | provenance | |
| B.java:173:18:173:30 | String s2 : String | B.java:174:18:174:30 | String s2 : String | provenance | |
| B.java:173:18:173:30 | String s2 : String | B.java:175:5:175:6 | String s2 : String | provenance | |
| B.java:173:18:173:30 | new MyLocal(...) : MyLocal [String s2] : String | B.java:173:18:173:30 | String s2 : String | provenance | |
| B.java:173:18:173:30 | new MyLocal(...) : MyLocal [f] : String | B.java:175:5:175:6 | m1 : MyLocal [f] : String | provenance | |
| B.java:173:18:173:30 | new MyLocal(...) [pre constructor] : MyLocal [String s1] : String | B.java:158:7:158:13 | parameter this : MyLocal [String s1] : String | provenance | |
| B.java:173:18:173:30 | new MyLocal(...) [pre constructor] : MyLocal [String s1] : String | B.java:173:18:173:30 | new MyLocal(...) : MyLocal [f] : String | provenance | |
| B.java:173:18:173:30 | new MyLocal(...) [pre constructor] : MyLocal [String s2] : String | B.java:158:7:158:13 | parameter this : MyLocal [String s2] : String | provenance | |
| B.java:174:18:174:30 | String s2 : String | B.java:174:18:174:30 | new MyLocal(...) : MyLocal [String s2] : String | provenance | |
| B.java:174:18:174:30 | String s2 : String | B.java:174:18:174:30 | new MyLocal(...) [pre constructor] : MyLocal [String s2] : String | provenance | |
| B.java:174:18:174:30 | String s2 : String | B.java:175:5:175:6 | String s2 : String | provenance | |
| B.java:174:18:174:30 | new MyLocal(...) : MyLocal [String s2] : String | B.java:174:18:174:30 | String s2 : String | provenance | |
| B.java:174:18:174:30 | new MyLocal(...) [pre constructor] : MyLocal [String s2] : String | B.java:158:7:158:13 | parameter this : MyLocal [String s2] : String | provenance | |
| B.java:175:5:175:6 | String s2 : String | B.java:175:5:175:6 | m1 : MyLocal [String s2] : String | provenance | |
| B.java:175:5:175:6 | m1 : MyLocal [String s2] : String | B.java:162:12:162:15 | parameter this : MyLocal [String s2] : String | provenance | |
| B.java:175:5:175:6 | m1 : MyLocal [f] : String | B.java:162:12:162:15 | parameter this : MyLocal [f] : String | provenance | |
| B.java:177:5:177:6 | List<String> l : ArrayList [<element>] : String | B.java:178:10:178:11 | List<String> l : ArrayList [<element>] : String | provenance | |
| B.java:177:5:177:6 | m1 [post update] : MyLocal [List<String> l, <element>] : String | B.java:177:5:177:6 | List<String> l : ArrayList [<element>] : String | provenance | |
| B.java:177:12:177:27 | source(...) : String | B.java:166:16:166:23 | s : String | provenance | |
| B.java:177:12:177:27 | source(...) : String | B.java:177:5:177:6 | m1 [post update] : MyLocal [List<String> l, <element>] : String | provenance | MaD:2 |
| B.java:178:10:178:11 | List<String> l : ArrayList [<element>] : String | B.java:178:10:178:11 | m2 : MyLocal [List<String> l, <element>] : String | provenance | |
| B.java:178:10:178:11 | m2 : MyLocal [List<String> l, <element>] : String | B.java:169:14:169:16 | parameter this : MyLocal [List<String> l, <element>] : String | provenance | |
| B.java:178:10:178:11 | m2 : MyLocal [List<String> l, <element>] : String | B.java:178:10:178:17 | get(...) | provenance | MaD:3 |
| B.java:203:16:203:42 | source(...) : String | B.java:212:5:212:6 | String s : String | provenance | |
| B.java:205:19:208:5 | parameter this : new Runnable(...) { ... } [String s] : String | B.java:206:12:206:12 | this : new Runnable(...) { ... } [String s] : String | provenance | |
| B.java:205:19:208:5 | parameter this [Return] : new Runnable(...) { ... } [List<String> out, <element>] : String | B.java:210:7:210:8 | r1 [post update] : new Runnable(...) { ... } [List<String> out, <element>] : String | provenance | |
| B.java:206:12:206:12 | this : new Runnable(...) { ... } [String s] : String | B.java:206:12:206:12 | s | provenance | |
| B.java:207:7:207:9 | out [post update] : ArrayList [<element>] : String | B.java:207:7:207:9 | this : new Runnable(...) { ... } [List<String> out, <element>] : String | provenance | |
| B.java:207:7:207:9 | this : new Runnable(...) { ... } [List<String> out, <element>] : String | B.java:205:19:208:5 | parameter this [Return] : new Runnable(...) { ... } [List<String> out, <element>] : String | provenance | |
| B.java:207:15:207:42 | source(...) : String | B.java:207:7:207:9 | out [post update] : ArrayList [<element>] : String | provenance | MaD:2 |
| B.java:209:19:211:5 | parameter this : new Runnable(...) { ... } [String s] : String | B.java:210:7:210:8 | this : new Runnable(...) { ... } [String s] : String | provenance | |
| B.java:209:19:211:5 | parameter this [Return] : new Runnable(...) { ... } [List<String> out, <element>] : String | B.java:212:5:212:6 | r2 [post update] : new Runnable(...) { ... } [List<String> out, <element>] : String | provenance | |
| B.java:210:7:210:8 | List<String> out : ArrayList [<element>] : String | B.java:210:7:210:8 | this : new Runnable(...) { ... } [List<String> out, <element>] : String | provenance | |
| B.java:210:7:210:8 | String s : String | B.java:210:7:210:8 | r1 : new Runnable(...) { ... } [String s] : String | provenance | |
| B.java:210:7:210:8 | r1 : new Runnable(...) { ... } [String s] : String | B.java:205:19:208:5 | parameter this : new Runnable(...) { ... } [String s] : String | provenance | |
| B.java:210:7:210:8 | r1 [post update] : new Runnable(...) { ... } [List<String> out, <element>] : String | B.java:210:7:210:8 | List<String> out : ArrayList [<element>] : String | provenance | |
| B.java:210:7:210:8 | this : new Runnable(...) { ... } [List<String> out, <element>] : String | B.java:209:19:211:5 | parameter this [Return] : new Runnable(...) { ... } [List<String> out, <element>] : String | provenance | |
| B.java:210:7:210:8 | this : new Runnable(...) { ... } [String s] : String | B.java:210:7:210:8 | String s : String | provenance | |
| B.java:212:5:212:6 | List<String> out : ArrayList [<element>] : String | B.java:213:10:213:12 | out : ArrayList [<element>] : String | provenance | |
| B.java:212:5:212:6 | String s : String | B.java:212:5:212:6 | r2 : new Runnable(...) { ... } [String s] : String | provenance | |
| B.java:212:5:212:6 | r2 : new Runnable(...) { ... } [String s] : String | B.java:209:19:211:5 | parameter this : new Runnable(...) { ... } [String s] : String | provenance | |
| B.java:212:5:212:6 | r2 [post update] : new Runnable(...) { ... } [List<String> out, <element>] : String | B.java:212:5:212:6 | List<String> out : ArrayList [<element>] : String | provenance | |
| B.java:213:10:213:12 | out : ArrayList [<element>] : String | B.java:213:10:213:19 | get(...) | provenance | MaD:3 |
| B.java:231:16:231:28 | source(...) : String | B.java:247:5:247:18 | String s : String | provenance | |
| B.java:235:7:235:14 | parameter this : MyLocal2 [String s] : String | B.java:238:15:238:15 | this : MyLocal2 [String s] : String | provenance | |
| B.java:238:9:238:9 | l [post update] : ArrayList [<element>] : String | B.java:238:9:238:9 | this : MyLocal2 [List<String> l, <element>] : String | provenance | |
| B.java:238:9:238:9 | this : MyLocal2 [List<String> l, <element>] : String | B.java:235:7:235:14 | parameter this [Return] : MyLocal2 [List<String> l, <element>] : String | provenance | |
| B.java:238:15:238:15 | s : String | B.java:238:9:238:9 | l [post update] : ArrayList [<element>] : String | provenance | MaD:2 |
| B.java:238:15:238:15 | this : MyLocal2 [String s] : String | B.java:238:15:238:15 | s : String | provenance | |
| B.java:240:12:240:14 | parameter this : MyLocal2 [List<String> l, <element>] : String | B.java:241:16:241:16 | this : MyLocal2 [List<String> l, <element>] : String | provenance | |
| B.java:241:9:241:10 | l2 [post update] : ArrayList [<element>] : String | B.java:241:9:241:10 | this : MyLocal2 [List<String> l2, <element>] : String | provenance | |
| B.java:241:9:241:10 | this : MyLocal2 [List<String> l2, <element>] : String | B.java:240:12:240:14 | parameter this [Return] : MyLocal2 [List<String> l2, <element>] : String | provenance | |
| B.java:241:16:241:16 | l : ArrayList [<element>] : String | B.java:241:16:241:23 | get(...) : String | provenance | MaD:3 |
| B.java:241:16:241:16 | this : MyLocal2 [List<String> l, <element>] : String | B.java:241:16:241:16 | l : ArrayList [<element>] : String | provenance | |
| B.java:241:16:241:23 | get(...) : String | B.java:241:9:241:10 | l2 [post update] : ArrayList [<element>] : String | provenance | MaD:2 |
| B.java:247:5:247:18 | List<String> l2 : ArrayList [<element>] : String | B.java:249:10:249:11 | l2 : ArrayList [<element>] : String | provenance | |
| B.java:247:5:247:18 | List<String> l : ArrayList [<element>] : String | B.java:248:10:248:10 | l : ArrayList [<element>] : String | provenance | |
| B.java:247:5:247:18 | String s : String | B.java:247:5:247:18 | new MyLocal2(...) [pre constructor] : MyLocal2 [String s] : String | provenance | |
| B.java:247:5:247:18 | new MyLocal2(...) : MyLocal2 [List<String> l, <element>] : String | B.java:240:12:240:14 | parameter this : MyLocal2 [List<String> l, <element>] : String | provenance | |
| B.java:247:5:247:18 | new MyLocal2(...) : MyLocal2 [List<String> l, <element>] : String | B.java:247:5:247:18 | List<String> l : ArrayList [<element>] : String | provenance | |
| B.java:247:5:247:18 | new MyLocal2(...) : MyLocal2 [List<String> l, <element>] : String | B.java:247:5:247:18 | new MyLocal2(...) [post update] : MyLocal2 [List<String> l2, <element>] : String | provenance | MaD:3 |
| B.java:247:5:247:18 | new MyLocal2(...) [post update] : MyLocal2 [List<String> l2, <element>] : String | B.java:247:5:247:18 | List<String> l2 : ArrayList [<element>] : String | provenance | |
| B.java:247:5:247:18 | new MyLocal2(...) [pre constructor] : MyLocal2 [String s] : String | B.java:235:7:235:14 | parameter this : MyLocal2 [String s] : String | provenance | |
| B.java:247:5:247:18 | new MyLocal2(...) [pre constructor] : MyLocal2 [String s] : String | B.java:247:5:247:18 | new MyLocal2(...) : MyLocal2 [List<String> l, <element>] : String | provenance | MaD:2 |
| B.java:248:10:248:10 | l : ArrayList [<element>] : String | B.java:248:10:248:17 | get(...) | provenance | MaD:3 |
| B.java:249:10:249:11 | l2 : ArrayList [<element>] : String | B.java:249:10:249:18 | get(...) | provenance | MaD:3 |
nodes
| B.java:11:5:11:6 | l1 [post update] : ArrayList [<element>] : String | semmle.label | l1 [post update] : ArrayList [<element>] : String |
| B.java:11:12:11:22 | source(...) : String | semmle.label | source(...) : String |
| B.java:13:5:13:6 | l1 : ArrayList [<element>] : String | semmle.label | l1 : ArrayList [<element>] : String |
| B.java:13:16:13:16 | e : String | semmle.label | e : String |
| B.java:13:16:13:29 | ...->... [post update] : new Consumer<String>(...) { ... } [List<String> l2, <element>] : String | semmle.label | ...->... [post update] : new Consumer<String>(...) { ... } [List<String> l2, <element>] : String |
| B.java:13:16:13:29 | List<String> l2 : ArrayList [<element>] : String | semmle.label | List<String> l2 : ArrayList [<element>] : String |
| B.java:13:16:13:29 | parameter this [Return] : new Consumer<String>(...) { ... } [List<String> l2, <element>] : String | semmle.label | parameter this [Return] : new Consumer<String>(...) { ... } [List<String> l2, <element>] : String |
| B.java:13:21:13:22 | l2 [post update] : ArrayList [<element>] : String | semmle.label | l2 [post update] : ArrayList [<element>] : String |
| B.java:13:21:13:22 | this : new Consumer<String>(...) { ... } [List<String> l2, <element>] : String | semmle.label | this : new Consumer<String>(...) { ... } [List<String> l2, <element>] : String |
| B.java:13:28:13:28 | e : String | semmle.label | e : String |
| B.java:14:10:14:11 | l2 : ArrayList [<element>] : String | semmle.label | l2 : ArrayList [<element>] : String |
| B.java:14:10:14:18 | get(...) | semmle.label | get(...) |
| B.java:22:26:22:26 | x : String | semmle.label | x : String |
| B.java:22:26:22:71 | parameter this [Return] : new Consumer<String>(...) { ... } [B other, bf1] : String | semmle.label | parameter this [Return] : new Consumer<String>(...) { ... } [B other, bf1] : String |
| B.java:22:56:22:60 | other [post update] : B [bf1] : String | semmle.label | other [post update] : B [bf1] : String |
| B.java:22:56:22:60 | this : new Consumer<String>(...) { ... } [B other, bf1] : String | semmle.label | this : new Consumer<String>(...) { ... } [B other, bf1] : String |
| B.java:22:68:22:68 | x : String | semmle.label | x : String |
| B.java:30:5:30:5 | B other : B [bf1] : String | semmle.label | B other : B [bf1] : String |
| B.java:30:5:30:5 | f [post update] : new Consumer<String>(...) { ... } [B other, bf1] : String | semmle.label | f [post update] : new Consumer<String>(...) { ... } [B other, bf1] : String |
| B.java:30:14:30:24 | source(...) : String | semmle.label | source(...) : String |
| B.java:34:10:34:14 | other : B [bf1] : String | semmle.label | other : B [bf1] : String |
| B.java:34:10:34:18 | other.bf1 | semmle.label | other.bf1 |
| B.java:38:23:38:45 | inp : HashMap [<map.key>] : String | semmle.label | inp : HashMap [<map.key>] : String |
| B.java:38:23:38:45 | inp : HashMap [<map.value>] : String | semmle.label | inp : HashMap [<map.value>] : String |
| B.java:38:48:38:70 | out [Return] : HashMap [<map.key>] : String | semmle.label | out [Return] : HashMap [<map.key>] : String |
| B.java:38:48:38:70 | out [Return] : HashMap [<map.value>] : String | semmle.label | out [Return] : HashMap [<map.value>] : String |
| B.java:39:5:39:7 | inp : HashMap [<map.key>] : String | semmle.label | inp : HashMap [<map.key>] : String |
| B.java:39:5:39:7 | inp : HashMap [<map.value>] : String | semmle.label | inp : HashMap [<map.value>] : String |
| B.java:39:17:39:56 | ...->... [post update] : new BiConsumer<String,String>(...) { ... } [out, <map.key>] : String | semmle.label | ...->... [post update] : new BiConsumer<String,String>(...) { ... } [out, <map.key>] : String |
| B.java:39:17:39:56 | ...->... [post update] : new BiConsumer<String,String>(...) { ... } [out, <map.value>] : String | semmle.label | ...->... [post update] : new BiConsumer<String,String>(...) { ... } [out, <map.value>] : String |
| B.java:39:17:39:56 | out : HashMap [<map.key>] : String | semmle.label | out : HashMap [<map.key>] : String |
| B.java:39:17:39:56 | out : HashMap [<map.value>] : String | semmle.label | out : HashMap [<map.value>] : String |
| B.java:39:17:39:56 | parameter this [Return] : new BiConsumer<String,String>(...) { ... } [out, <map.key>] : String | semmle.label | parameter this [Return] : new BiConsumer<String,String>(...) { ... } [out, <map.key>] : String |
| B.java:39:17:39:56 | parameter this [Return] : new BiConsumer<String,String>(...) { ... } [out, <map.value>] : String | semmle.label | parameter this [Return] : new BiConsumer<String,String>(...) { ... } [out, <map.value>] : String |
| B.java:39:18:39:20 | key : String | semmle.label | key : String |
| B.java:39:23:39:27 | value : String | semmle.label | value : String |
| B.java:39:35:39:37 | out [post update] : HashMap [<map.key>] : String | semmle.label | out [post update] : HashMap [<map.key>] : String |
| B.java:39:35:39:37 | out [post update] : HashMap [<map.value>] : String | semmle.label | out [post update] : HashMap [<map.value>] : String |
| B.java:39:35:39:37 | this : new BiConsumer<String,String>(...) { ... } [out, <map.key>] : String | semmle.label | this : new BiConsumer<String,String>(...) { ... } [out, <map.key>] : String |
| B.java:39:35:39:37 | this : new BiConsumer<String,String>(...) { ... } [out, <map.value>] : String | semmle.label | this : new BiConsumer<String,String>(...) { ... } [out, <map.value>] : String |
| B.java:39:43:39:45 | key : String | semmle.label | key : String |
| B.java:39:48:39:52 | value : String | semmle.label | value : String |
| B.java:45:5:45:6 | m1 [post update] : HashMap [<map.key>] : String | semmle.label | m1 [post update] : HashMap [<map.key>] : String |
| B.java:45:5:45:6 | m1 [post update] : HashMap [<map.value>] : String | semmle.label | m1 [post update] : HashMap [<map.value>] : String |
| B.java:45:12:45:24 | source(...) : String | semmle.label | source(...) : String |
| B.java:45:27:45:41 | source(...) : String | semmle.label | source(...) : String |
| B.java:46:13:46:14 | m1 : HashMap [<map.key>] : String | semmle.label | m1 : HashMap [<map.key>] : String |
| B.java:46:13:46:14 | m1 : HashMap [<map.value>] : String | semmle.label | m1 : HashMap [<map.value>] : String |
| B.java:46:17:46:18 | m2 [post update] : HashMap [<map.key>] : String | semmle.label | m2 [post update] : HashMap [<map.key>] : String |
| B.java:46:17:46:18 | m2 [post update] : HashMap [<map.value>] : String | semmle.label | m2 [post update] : HashMap [<map.value>] : String |
| B.java:47:5:47:6 | m2 : HashMap [<map.key>] : String | semmle.label | m2 : HashMap [<map.key>] : String |
| B.java:47:5:47:6 | m2 : HashMap [<map.value>] : String | semmle.label | m2 : HashMap [<map.value>] : String |
| B.java:47:17:47:17 | k : String | semmle.label | k : String |
| B.java:47:20:47:20 | v : String | semmle.label | v : String |
| B.java:48:12:48:12 | k | semmle.label | k |
| B.java:49:12:49:12 | v | semmle.label | v |
| B.java:57:18:57:34 | source(...) : String | semmle.label | source(...) : String |
| B.java:60:21:60:32 | param : String | semmle.label | param : String |
| B.java:61:18:65:5 | parameter this : new Runnable(...) { ... } [param] : String | semmle.label | parameter this : new Runnable(...) { ... } [param] : String |
| B.java:64:12:64:16 | param | semmle.label | param |
| B.java:64:12:64:16 | this : new Runnable(...) { ... } [param] : String | semmle.label | this : new Runnable(...) { ... } [param] : String |
| B.java:66:5:66:5 | param : String | semmle.label | param : String |
| B.java:66:5:66:5 | r : new Runnable(...) { ... } [param] : String | semmle.label | r : new Runnable(...) { ... } [param] : String |
| B.java:71:19:71:23 | other [post update] : B [elem] : String | semmle.label | other [post update] : B [elem] : String |
| B.java:74:10:74:14 | other : B [elem] : String | semmle.label | other : B [elem] : String |
| B.java:74:10:74:19 | other.elem | semmle.label | other.elem |
| B.java:77:22:77:28 | param [Return] : B [elem] : String | semmle.label | param [Return] : B [elem] : String |
| B.java:78:18:81:5 | parameter this [Return] : new Runnable(...) { ... } [param, elem] : String | semmle.label | parameter this [Return] : new Runnable(...) { ... } [param, elem] : String |
| B.java:80:7:80:11 | param [post update] : B [elem] : String | semmle.label | param [post update] : B [elem] : String |
| B.java:80:7:80:11 | this : new Runnable(...) { ... } [param, elem] : String | semmle.label | this : new Runnable(...) { ... } [param, elem] : String |
| B.java:80:20:80:39 | source(...) : String | semmle.label | source(...) : String |
| B.java:82:5:82:5 | param : B [elem] : String | semmle.label | param : B [elem] : String |
| B.java:82:5:82:5 | r [post update] : new Runnable(...) { ... } [param, elem] : String | semmle.label | r [post update] : new Runnable(...) { ... } [param, elem] : String |
| B.java:88:22:88:44 | parameter this : new Runnable(...) { ... } [B b, elem] : String | semmle.label | parameter this : new Runnable(...) { ... } [B b, elem] : String |
| B.java:88:35:88:35 | b : B [elem] : String | semmle.label | b : B [elem] : String |
| B.java:88:35:88:35 | this : new Runnable(...) { ... } [B b, elem] : String | semmle.label | this : new Runnable(...) { ... } [B b, elem] : String |
| B.java:88:35:88:40 | b.elem | semmle.label | b.elem |
| B.java:89:20:89:52 | parameter this [Return] : new Runnable(...) { ... } [B b, elem] : String | semmle.label | parameter this [Return] : new Runnable(...) { ... } [B b, elem] : String |
| B.java:89:28:89:28 | b [post update] : B [elem] : String | semmle.label | b [post update] : B [elem] : String |
| B.java:89:28:89:28 | this : new Runnable(...) { ... } [B b, elem] : String | semmle.label | this : new Runnable(...) { ... } [B b, elem] : String |
| B.java:89:37:89:49 | source(...) : String | semmle.label | source(...) : String |
| B.java:91:11:91:13 | B b : B [elem] : String | semmle.label | B b : B [elem] : String |
| B.java:91:11:91:13 | src [post update] : new Runnable(...) { ... } [B b, elem] : String | semmle.label | src [post update] : new Runnable(...) { ... } [B b, elem] : String |
| B.java:92:11:92:15 | B b : B [elem] : String | semmle.label | B b : B [elem] : String |
| B.java:92:11:92:15 | sink2 : new Runnable(...) { ... } [B b, elem] : String | semmle.label | sink2 : new Runnable(...) { ... } [B b, elem] : String |
| B.java:95:14:95:23 | r : new Runnable(...) { ... } [B b, elem] : String | semmle.label | r : new Runnable(...) { ... } [B b, elem] : String |
| B.java:95:14:95:23 | r [Return] : new Runnable(...) { ... } [B b, elem] : String | semmle.label | r [Return] : new Runnable(...) { ... } [B b, elem] : String |
| B.java:96:5:96:5 | r : new Runnable(...) { ... } [B b, elem] : String | semmle.label | r : new Runnable(...) { ... } [B b, elem] : String |
| B.java:96:5:96:5 | r [post update] : new Runnable(...) { ... } [B b, elem] : String | semmle.label | r [post update] : new Runnable(...) { ... } [B b, elem] : String |
| B.java:102:5:102:6 | l1 [post update] : ArrayList [<element>] : String | semmle.label | l1 [post update] : ArrayList [<element>] : String |
| B.java:102:12:102:29 | source(...) : String | semmle.label | source(...) : String |
| B.java:103:5:103:6 | l2 [post update] : ArrayList [<element>, <element>] : String | semmle.label | l2 [post update] : ArrayList [<element>, <element>] : String |
| B.java:103:12:103:13 | l1 : ArrayList [<element>] : String | semmle.label | l1 : ArrayList [<element>] : String |
| B.java:104:16:104:32 | source(...) : String | semmle.label | source(...) : String |
| B.java:107:5:107:6 | l2 : ArrayList [<element>, <element>] : String | semmle.label | l2 : ArrayList [<element>, <element>] : String |
| B.java:107:16:107:16 | l : ArrayList [<element>] : String | semmle.label | l : ArrayList [<element>] : String |
| B.java:107:16:111:6 | ...->... : new Consumer<List<String>>(...) { ... } [String s] : String | semmle.label | ...->... : new Consumer<List<String>>(...) { ... } [String s] : String |
| B.java:107:16:111:6 | ...->... [post update] : new Consumer<List<String>>(...) { ... } [List<String> out1, <element>] : String | semmle.label | ...->... [post update] : new Consumer<List<String>>(...) { ... } [List<String> out1, <element>] : String |
| B.java:107:16:111:6 | ...->... [post update] : new Consumer<List<String>>(...) { ... } [List<String> out2, <element>] : String | semmle.label | ...->... [post update] : new Consumer<List<String>>(...) { ... } [List<String> out2, <element>] : String |
| B.java:107:16:111:6 | List<String> out1 : ArrayList [<element>] : String | semmle.label | List<String> out1 : ArrayList [<element>] : String |
| B.java:107:16:111:6 | List<String> out2 : ArrayList [<element>] : String | semmle.label | List<String> out2 : ArrayList [<element>] : String |
| B.java:107:16:111:6 | String s : String | semmle.label | String s : String |
| B.java:107:16:111:6 | parameter this : new Consumer<List<String>>(...) { ... } [String s] : String | semmle.label | parameter this : new Consumer<List<String>>(...) { ... } [String s] : String |
| B.java:107:16:111:6 | parameter this [Return] : new Consumer<List<String>>(...) { ... } [List<String> out1, <element>] : String | semmle.label | parameter this [Return] : new Consumer<List<String>>(...) { ... } [List<String> out1, <element>] : String |
| B.java:107:16:111:6 | parameter this [Return] : new Consumer<List<String>>(...) { ... } [List<String> out2, <element>] : String | semmle.label | parameter this [Return] : new Consumer<List<String>>(...) { ... } [List<String> out2, <element>] : String |
| B.java:107:16:111:6 | parameter this [Return] : new Consumer<List<String>>(...) { ... } [List<String> out2, <element>] : String | semmle.label | parameter this [Return] : new Consumer<List<String>>(...) { ... } [List<String> out2, <element>] : String |
| B.java:107:21:107:21 | l : ArrayList [<element>] : String | semmle.label | l : ArrayList [<element>] : String |
| B.java:107:31:107:31 | x : String | semmle.label | x : String |
| B.java:107:31:111:5 | ...->... : new Consumer<String>(...) { ... } [String s] : String | semmle.label | ...->... : new Consumer<String>(...) { ... } [String s] : String |
| B.java:107:31:111:5 | ...->... [post update] : new Consumer<String>(...) { ... } [List<String> out1, <element>] : String | semmle.label | ...->... [post update] : new Consumer<String>(...) { ... } [List<String> out1, <element>] : String |
| B.java:107:31:111:5 | ...->... [post update] : new Consumer<String>(...) { ... } [List<String> out2, <element>] : String | semmle.label | ...->... [post update] : new Consumer<String>(...) { ... } [List<String> out2, <element>] : String |
| B.java:107:31:111:5 | ...->... [post update] : new Consumer<String>(...) { ... } [List<String> out2, <element>] : String | semmle.label | ...->... [post update] : new Consumer<String>(...) { ... } [List<String> out2, <element>] : String |
| B.java:107:31:111:5 | List<String> out1 : ArrayList [<element>] : String | semmle.label | List<String> out1 : ArrayList [<element>] : String |
| B.java:107:31:111:5 | List<String> out2 : ArrayList [<element>] : String | semmle.label | List<String> out2 : ArrayList [<element>] : String |
| B.java:107:31:111:5 | List<String> out2 : ArrayList [<element>] : String | semmle.label | List<String> out2 : ArrayList [<element>] : String |
| B.java:107:31:111:5 | String s : String | semmle.label | String s : String |
| B.java:107:31:111:5 | parameter this : new Consumer<String>(...) { ... } [String s] : String | semmle.label | parameter this : new Consumer<String>(...) { ... } [String s] : String |
| B.java:107:31:111:5 | parameter this [Return] : new Consumer<String>(...) { ... } [List<String> out1, <element>] : String | semmle.label | parameter this [Return] : new Consumer<String>(...) { ... } [List<String> out1, <element>] : String |
| B.java:107:31:111:5 | parameter this [Return] : new Consumer<String>(...) { ... } [List<String> out2, <element>] : String | semmle.label | parameter this [Return] : new Consumer<String>(...) { ... } [List<String> out2, <element>] : String |
| B.java:107:31:111:5 | this : new Consumer<List<String>>(...) { ... } [List<String> out1, <element>] : String | semmle.label | this : new Consumer<List<String>>(...) { ... } [List<String> out1, <element>] : String |
| B.java:107:31:111:5 | this : new Consumer<List<String>>(...) { ... } [List<String> out2, <element>] : String | semmle.label | this : new Consumer<List<String>>(...) { ... } [List<String> out2, <element>] : String |
| B.java:107:31:111:5 | this : new Consumer<List<String>>(...) { ... } [List<String> out2, <element>] : String | semmle.label | this : new Consumer<List<String>>(...) { ... } [List<String> out2, <element>] : String |
| B.java:107:31:111:5 | this : new Consumer<List<String>>(...) { ... } [String s] : String | semmle.label | this : new Consumer<List<String>>(...) { ... } [String s] : String |
| B.java:108:12:108:12 | s | semmle.label | s |
| B.java:108:12:108:12 | this : new Consumer<String>(...) { ... } [String s] : String | semmle.label | this : new Consumer<String>(...) { ... } [String s] : String |
| B.java:109:7:109:10 | out1 [post update] : ArrayList [<element>] : String | semmle.label | out1 [post update] : ArrayList [<element>] : String |
| B.java:109:7:109:10 | this : new Consumer<String>(...) { ... } [List<String> out1, <element>] : String | semmle.label | this : new Consumer<String>(...) { ... } [List<String> out1, <element>] : String |
| B.java:109:16:109:16 | x : String | semmle.label | x : String |
| B.java:110:7:110:10 | out2 [post update] : ArrayList [<element>] : String | semmle.label | out2 [post update] : ArrayList [<element>] : String |
| B.java:110:7:110:10 | this : new Consumer<String>(...) { ... } [List<String> out2, <element>] : String | semmle.label | this : new Consumer<String>(...) { ... } [List<String> out2, <element>] : String |
| B.java:110:16:110:16 | s : String | semmle.label | s : String |
| B.java:110:16:110:16 | this : new Consumer<String>(...) { ... } [String s] : String | semmle.label | this : new Consumer<String>(...) { ... } [String s] : String |
| B.java:112:10:112:13 | out1 : ArrayList [<element>] : String | semmle.label | out1 : ArrayList [<element>] : String |
| B.java:112:10:112:20 | get(...) | semmle.label | get(...) |
| B.java:113:10:113:13 | out2 : ArrayList [<element>] : String | semmle.label | out2 : ArrayList [<element>] : String |
| B.java:113:10:113:20 | get(...) | semmle.label | get(...) |
| B.java:126:19:126:22 | parameter this [Return] : new TwoRuns(...) { ... } [List<String> l1, <element>] : String | semmle.label | parameter this [Return] : new TwoRuns(...) { ... } [List<String> l1, <element>] : String |
| B.java:127:9:127:10 | l1 [post update] : ArrayList [<element>] : String | semmle.label | l1 [post update] : ArrayList [<element>] : String |
| B.java:127:9:127:10 | this : new TwoRuns(...) { ... } [List<String> l1, <element>] : String | semmle.label | this : new TwoRuns(...) { ... } [List<String> l1, <element>] : String |
| B.java:127:16:127:29 | source(...) : String | semmle.label | source(...) : String |
| B.java:130:19:130:22 | parameter this : new TwoRuns(...) { ... } [List<String> l1, <element>] : String | semmle.label | parameter this : new TwoRuns(...) { ... } [List<String> l1, <element>] : String |
| B.java:130:19:130:22 | parameter this [Return] : new TwoRuns(...) { ... } [List<String> l2, <element>] : String | semmle.label | parameter this [Return] : new TwoRuns(...) { ... } [List<String> l2, <element>] : String |
| B.java:131:9:131:10 | l2 [post update] : ArrayList [<element>] : String | semmle.label | l2 [post update] : ArrayList [<element>] : String |
| B.java:131:9:131:10 | this : new TwoRuns(...) { ... } [List<String> l2, <element>] : String | semmle.label | this : new TwoRuns(...) { ... } [List<String> l2, <element>] : String |
| B.java:131:16:131:17 | l1 : ArrayList [<element>] : String | semmle.label | l1 : ArrayList [<element>] : String |
| B.java:131:16:131:17 | this : new TwoRuns(...) { ... } [List<String> l1, <element>] : String | semmle.label | this : new TwoRuns(...) { ... } [List<String> l1, <element>] : String |
| B.java:131:16:131:24 | get(...) : String | semmle.label | get(...) : String |
| B.java:136:5:136:5 | List<String> l1 : ArrayList [<element>] : String | semmle.label | List<String> l1 : ArrayList [<element>] : String |
| B.java:136:5:136:5 | r [post update] : new TwoRuns(...) { ... } [List<String> l1, <element>] : String | semmle.label | r [post update] : new TwoRuns(...) { ... } [List<String> l1, <element>] : String |
| B.java:137:5:137:5 | List<String> l1 : ArrayList [<element>] : String | semmle.label | List<String> l1 : ArrayList [<element>] : String |
| B.java:137:5:137:5 | List<String> l2 : ArrayList [<element>] : String | semmle.label | List<String> l2 : ArrayList [<element>] : String |
| B.java:137:5:137:5 | r : new TwoRuns(...) { ... } [List<String> l1, <element>] : String | semmle.label | r : new TwoRuns(...) { ... } [List<String> l1, <element>] : String |
| B.java:137:5:137:5 | r [post update] : new TwoRuns(...) { ... } [List<String> l2, <element>] : String | semmle.label | r [post update] : new TwoRuns(...) { ... } [List<String> l2, <element>] : String |
| B.java:138:10:138:11 | l2 : ArrayList [<element>] : String | semmle.label | l2 : ArrayList [<element>] : String |
| B.java:138:10:138:18 | get(...) | semmle.label | get(...) |
| B.java:142:16:142:31 | source(...) : String | semmle.label | source(...) : String |
| B.java:145:7:145:13 | parameter this : MyLocal [String s] : String | semmle.label | parameter this : MyLocal [String s] : String |
| B.java:145:7:145:13 | parameter this [Return] : MyLocal [f] : String | semmle.label | parameter this [Return] : MyLocal [f] : String |
| B.java:145:19:145:22 | this [post update] : MyLocal [f] : String | semmle.label | this [post update] : MyLocal [f] : String |
| B.java:145:28:145:28 | s : String | semmle.label | s : String |
| B.java:145:28:145:28 | this : MyLocal [String s] : String | semmle.label | this : MyLocal [String s] : String |
| B.java:146:14:146:17 | parameter this : MyLocal [f] : String | semmle.label | parameter this : MyLocal [f] : String |
| B.java:146:30:146:33 | this : MyLocal [f] : String | semmle.label | this : MyLocal [f] : String |
| B.java:146:30:146:35 | this.f : String | semmle.label | this.f : String |
| B.java:148:17:148:29 | String s : String | semmle.label | String s : String |
| B.java:148:17:148:29 | new MyLocal(...) : MyLocal [f] : String | semmle.label | new MyLocal(...) : MyLocal [f] : String |
| B.java:148:17:148:29 | new MyLocal(...) [pre constructor] : MyLocal [String s] : String | semmle.label | new MyLocal(...) [pre constructor] : MyLocal [String s] : String |
| B.java:149:10:149:10 | m : MyLocal [f] : String | semmle.label | m : MyLocal [f] : String |
| B.java:149:10:149:17 | getF(...) | semmle.label | getF(...) |
| B.java:153:17:153:28 | source(...) : String | semmle.label | source(...) : String |
| B.java:154:17:154:28 | source(...) : String | semmle.label | source(...) : String |
| B.java:158:7:158:13 | parameter this : MyLocal [String s1] : String | semmle.label | parameter this : MyLocal [String s1] : String |
| B.java:158:7:158:13 | parameter this : MyLocal [String s2] : String | semmle.label | parameter this : MyLocal [String s2] : String |
| B.java:158:7:158:13 | parameter this [Return] : MyLocal [f] : String | semmle.label | parameter this [Return] : MyLocal [f] : String |
| B.java:159:9:159:12 | this [post update] : MyLocal [f] : String | semmle.label | this [post update] : MyLocal [f] : String |
| B.java:159:18:159:19 | s1 : String | semmle.label | s1 : String |
| B.java:159:18:159:19 | this : MyLocal [String s1] : String | semmle.label | this : MyLocal [String s1] : String |
| B.java:160:14:160:15 | s2 | semmle.label | s2 |
| B.java:160:14:160:15 | this : MyLocal [String s2] : String | semmle.label | this : MyLocal [String s2] : String |
| B.java:162:12:162:15 | parameter this : MyLocal [String s2] : String | semmle.label | parameter this : MyLocal [String s2] : String |
| B.java:162:12:162:15 | parameter this : MyLocal [f] : String | semmle.label | parameter this : MyLocal [f] : String |
| B.java:163:14:163:14 | f | semmle.label | f |
| B.java:163:14:163:14 | this <.field> : MyLocal [f] : String | semmle.label | this <.field> : MyLocal [f] : String |
| B.java:164:14:164:15 | s2 | semmle.label | s2 |
| B.java:164:14:164:15 | this : MyLocal [String s2] : String | semmle.label | this : MyLocal [String s2] : String |
| B.java:166:12:166:14 | parameter this [Return] : MyLocal [List<String> l, <element>] : String | semmle.label | parameter this [Return] : MyLocal [List<String> l, <element>] : String |
| B.java:166:16:166:23 | s : String | semmle.label | s : String |
| B.java:167:9:167:9 | l [post update] : ArrayList [<element>] : String | semmle.label | l [post update] : ArrayList [<element>] : String |
| B.java:167:9:167:9 | this : MyLocal [List<String> l, <element>] : String | semmle.label | this : MyLocal [List<String> l, <element>] : String |
| B.java:167:15:167:15 | s : String | semmle.label | s : String |
| B.java:169:14:169:16 | parameter this : MyLocal [List<String> l, <element>] : String | semmle.label | parameter this : MyLocal [List<String> l, <element>] : String |
| B.java:170:16:170:16 | l : ArrayList [<element>] : String | semmle.label | l : ArrayList [<element>] : String |
| B.java:170:16:170:16 | this : MyLocal [List<String> l, <element>] : String | semmle.label | this : MyLocal [List<String> l, <element>] : String |
| B.java:170:16:170:23 | get(...) : String | semmle.label | get(...) : String |
| B.java:173:18:173:30 | String s1 : String | semmle.label | String s1 : String |
| B.java:173:18:173:30 | String s2 : String | semmle.label | String s2 : String |
| B.java:173:18:173:30 | String s2 : String | semmle.label | String s2 : String |
| B.java:173:18:173:30 | new MyLocal(...) : MyLocal [String s2] : String | semmle.label | new MyLocal(...) : MyLocal [String s2] : String |
| B.java:173:18:173:30 | new MyLocal(...) : MyLocal [f] : String | semmle.label | new MyLocal(...) : MyLocal [f] : String |
| B.java:173:18:173:30 | new MyLocal(...) [pre constructor] : MyLocal [String s1] : String | semmle.label | new MyLocal(...) [pre constructor] : MyLocal [String s1] : String |
| B.java:173:18:173:30 | new MyLocal(...) [pre constructor] : MyLocal [String s2] : String | semmle.label | new MyLocal(...) [pre constructor] : MyLocal [String s2] : String |
| B.java:174:18:174:30 | String s2 : String | semmle.label | String s2 : String |
| B.java:174:18:174:30 | String s2 : String | semmle.label | String s2 : String |
| B.java:174:18:174:30 | new MyLocal(...) : MyLocal [String s2] : String | semmle.label | new MyLocal(...) : MyLocal [String s2] : String |
| B.java:174:18:174:30 | new MyLocal(...) [pre constructor] : MyLocal [String s2] : String | semmle.label | new MyLocal(...) [pre constructor] : MyLocal [String s2] : String |
| B.java:175:5:175:6 | String s2 : String | semmle.label | String s2 : String |
| B.java:175:5:175:6 | m1 : MyLocal [String s2] : String | semmle.label | m1 : MyLocal [String s2] : String |
| B.java:175:5:175:6 | m1 : MyLocal [f] : String | semmle.label | m1 : MyLocal [f] : String |
| B.java:177:5:177:6 | List<String> l : ArrayList [<element>] : String | semmle.label | List<String> l : ArrayList [<element>] : String |
| B.java:177:5:177:6 | m1 [post update] : MyLocal [List<String> l, <element>] : String | semmle.label | m1 [post update] : MyLocal [List<String> l, <element>] : String |
| B.java:177:12:177:27 | source(...) : String | semmle.label | source(...) : String |
| B.java:178:10:178:11 | List<String> l : ArrayList [<element>] : String | semmle.label | List<String> l : ArrayList [<element>] : String |
| B.java:178:10:178:11 | m2 : MyLocal [List<String> l, <element>] : String | semmle.label | m2 : MyLocal [List<String> l, <element>] : String |
| B.java:178:10:178:17 | get(...) | semmle.label | get(...) |
| B.java:203:16:203:42 | source(...) : String | semmle.label | source(...) : String |
| B.java:205:19:208:5 | parameter this : new Runnable(...) { ... } [String s] : String | semmle.label | parameter this : new Runnable(...) { ... } [String s] : String |
| B.java:205:19:208:5 | parameter this [Return] : new Runnable(...) { ... } [List<String> out, <element>] : String | semmle.label | parameter this [Return] : new Runnable(...) { ... } [List<String> out, <element>] : String |
| B.java:206:12:206:12 | s | semmle.label | s |
| B.java:206:12:206:12 | this : new Runnable(...) { ... } [String s] : String | semmle.label | this : new Runnable(...) { ... } [String s] : String |
| B.java:207:7:207:9 | out [post update] : ArrayList [<element>] : String | semmle.label | out [post update] : ArrayList [<element>] : String |
| B.java:207:7:207:9 | this : new Runnable(...) { ... } [List<String> out, <element>] : String | semmle.label | this : new Runnable(...) { ... } [List<String> out, <element>] : String |
| B.java:207:15:207:42 | source(...) : String | semmle.label | source(...) : String |
| B.java:209:19:211:5 | parameter this : new Runnable(...) { ... } [String s] : String | semmle.label | parameter this : new Runnable(...) { ... } [String s] : String |
| B.java:209:19:211:5 | parameter this [Return] : new Runnable(...) { ... } [List<String> out, <element>] : String | semmle.label | parameter this [Return] : new Runnable(...) { ... } [List<String> out, <element>] : String |
| B.java:210:7:210:8 | List<String> out : ArrayList [<element>] : String | semmle.label | List<String> out : ArrayList [<element>] : String |
| B.java:210:7:210:8 | String s : String | semmle.label | String s : String |
| B.java:210:7:210:8 | r1 : new Runnable(...) { ... } [String s] : String | semmle.label | r1 : new Runnable(...) { ... } [String s] : String |
| B.java:210:7:210:8 | r1 [post update] : new Runnable(...) { ... } [List<String> out, <element>] : String | semmle.label | r1 [post update] : new Runnable(...) { ... } [List<String> out, <element>] : String |
| B.java:210:7:210:8 | this : new Runnable(...) { ... } [List<String> out, <element>] : String | semmle.label | this : new Runnable(...) { ... } [List<String> out, <element>] : String |
| B.java:210:7:210:8 | this : new Runnable(...) { ... } [String s] : String | semmle.label | this : new Runnable(...) { ... } [String s] : String |
| B.java:212:5:212:6 | List<String> out : ArrayList [<element>] : String | semmle.label | List<String> out : ArrayList [<element>] : String |
| B.java:212:5:212:6 | String s : String | semmle.label | String s : String |
| B.java:212:5:212:6 | r2 : new Runnable(...) { ... } [String s] : String | semmle.label | r2 : new Runnable(...) { ... } [String s] : String |
| B.java:212:5:212:6 | r2 [post update] : new Runnable(...) { ... } [List<String> out, <element>] : String | semmle.label | r2 [post update] : new Runnable(...) { ... } [List<String> out, <element>] : String |
| B.java:213:10:213:12 | out : ArrayList [<element>] : String | semmle.label | out : ArrayList [<element>] : String |
| B.java:213:10:213:19 | get(...) | semmle.label | get(...) |
| B.java:231:16:231:28 | source(...) : String | semmle.label | source(...) : String |
| B.java:235:7:235:14 | parameter this : MyLocal2 [String s] : String | semmle.label | parameter this : MyLocal2 [String s] : String |
| B.java:235:7:235:14 | parameter this [Return] : MyLocal2 [List<String> l, <element>] : String | semmle.label | parameter this [Return] : MyLocal2 [List<String> l, <element>] : String |
| B.java:238:9:238:9 | l [post update] : ArrayList [<element>] : String | semmle.label | l [post update] : ArrayList [<element>] : String |
| B.java:238:9:238:9 | this : MyLocal2 [List<String> l, <element>] : String | semmle.label | this : MyLocal2 [List<String> l, <element>] : String |
| B.java:238:15:238:15 | s : String | semmle.label | s : String |
| B.java:238:15:238:15 | this : MyLocal2 [String s] : String | semmle.label | this : MyLocal2 [String s] : String |
| B.java:240:12:240:14 | parameter this : MyLocal2 [List<String> l, <element>] : String | semmle.label | parameter this : MyLocal2 [List<String> l, <element>] : String |
| B.java:240:12:240:14 | parameter this [Return] : MyLocal2 [List<String> l2, <element>] : String | semmle.label | parameter this [Return] : MyLocal2 [List<String> l2, <element>] : String |
| B.java:241:9:241:10 | l2 [post update] : ArrayList [<element>] : String | semmle.label | l2 [post update] : ArrayList [<element>] : String |
| B.java:241:9:241:10 | this : MyLocal2 [List<String> l2, <element>] : String | semmle.label | this : MyLocal2 [List<String> l2, <element>] : String |
| B.java:241:16:241:16 | l : ArrayList [<element>] : String | semmle.label | l : ArrayList [<element>] : String |
| B.java:241:16:241:16 | this : MyLocal2 [List<String> l, <element>] : String | semmle.label | this : MyLocal2 [List<String> l, <element>] : String |
| B.java:241:16:241:23 | get(...) : String | semmle.label | get(...) : String |
| B.java:247:5:247:18 | List<String> l2 : ArrayList [<element>] : String | semmle.label | List<String> l2 : ArrayList [<element>] : String |
| B.java:247:5:247:18 | List<String> l : ArrayList [<element>] : String | semmle.label | List<String> l : ArrayList [<element>] : String |
| B.java:247:5:247:18 | String s : String | semmle.label | String s : String |
| B.java:247:5:247:18 | new MyLocal2(...) : MyLocal2 [List<String> l, <element>] : String | semmle.label | new MyLocal2(...) : MyLocal2 [List<String> l, <element>] : String |
| B.java:247:5:247:18 | new MyLocal2(...) [post update] : MyLocal2 [List<String> l2, <element>] : String | semmle.label | new MyLocal2(...) [post update] : MyLocal2 [List<String> l2, <element>] : String |
| B.java:247:5:247:18 | new MyLocal2(...) [pre constructor] : MyLocal2 [String s] : String | semmle.label | new MyLocal2(...) [pre constructor] : MyLocal2 [String s] : String |
| B.java:248:10:248:10 | l : ArrayList [<element>] : String | semmle.label | l : ArrayList [<element>] : String |
| B.java:248:10:248:17 | get(...) | semmle.label | get(...) |
| B.java:249:10:249:11 | l2 : ArrayList [<element>] : String | semmle.label | l2 : ArrayList [<element>] : String |
| B.java:249:10:249:18 | get(...) | semmle.label | get(...) |
subpaths
| B.java:13:5:13:6 | l1 : ArrayList [<element>] : String | B.java:13:16:13:16 | e : String | B.java:13:16:13:29 | parameter this [Return] : new Consumer<String>(...) { ... } [List<String> l2, <element>] : String | B.java:13:16:13:29 | ...->... [post update] : new Consumer<String>(...) { ... } [List<String> l2, <element>] : String |
| B.java:30:14:30:24 | source(...) : String | B.java:22:26:22:26 | x : String | B.java:22:26:22:71 | parameter this [Return] : new Consumer<String>(...) { ... } [B other, bf1] : String | B.java:30:5:30:5 | f [post update] : new Consumer<String>(...) { ... } [B other, bf1] : String |
| B.java:39:5:39:7 | inp : HashMap [<map.key>] : String | B.java:39:18:39:20 | key : String | B.java:39:17:39:56 | parameter this [Return] : new BiConsumer<String,String>(...) { ... } [out, <map.key>] : String | B.java:39:17:39:56 | ...->... [post update] : new BiConsumer<String,String>(...) { ... } [out, <map.key>] : String |
| B.java:39:5:39:7 | inp : HashMap [<map.value>] : String | B.java:39:23:39:27 | value : String | B.java:39:17:39:56 | parameter this [Return] : new BiConsumer<String,String>(...) { ... } [out, <map.value>] : String | B.java:39:17:39:56 | ...->... [post update] : new BiConsumer<String,String>(...) { ... } [out, <map.value>] : String |
| B.java:46:13:46:14 | m1 : HashMap [<map.key>] : String | B.java:38:23:38:45 | inp : HashMap [<map.key>] : String | B.java:38:48:38:70 | out [Return] : HashMap [<map.key>] : String | B.java:46:17:46:18 | m2 [post update] : HashMap [<map.key>] : String |
| B.java:46:13:46:14 | m1 : HashMap [<map.value>] : String | B.java:38:23:38:45 | inp : HashMap [<map.value>] : String | B.java:38:48:38:70 | out [Return] : HashMap [<map.value>] : String | B.java:46:17:46:18 | m2 [post update] : HashMap [<map.value>] : String |
| B.java:107:5:107:6 | l2 : ArrayList [<element>, <element>] : String | B.java:107:16:107:16 | l : ArrayList [<element>] : String | B.java:107:16:111:6 | parameter this [Return] : new Consumer<List<String>>(...) { ... } [List<String> out1, <element>] : String | B.java:107:16:111:6 | ...->... [post update] : new Consumer<List<String>>(...) { ... } [List<String> out1, <element>] : String |
| B.java:107:16:111:6 | ...->... : new Consumer<List<String>>(...) { ... } [String s] : String | B.java:107:16:111:6 | parameter this : new Consumer<List<String>>(...) { ... } [String s] : String | B.java:107:16:111:6 | parameter this [Return] : new Consumer<List<String>>(...) { ... } [List<String> out2, <element>] : String | B.java:107:16:111:6 | ...->... [post update] : new Consumer<List<String>>(...) { ... } [List<String> out2, <element>] : String |
| B.java:107:16:111:6 | ...->... : new Consumer<List<String>>(...) { ... } [String s] : String | B.java:107:16:111:6 | parameter this : new Consumer<List<String>>(...) { ... } [String s] : String | B.java:107:16:111:6 | parameter this [Return] : new Consumer<List<String>>(...) { ... } [List<String> out2, <element>] : String | B.java:107:16:111:6 | ...->... [post update] : new Consumer<List<String>>(...) { ... } [List<String> out2, <element>] : String |
| B.java:107:21:107:21 | l : ArrayList [<element>] : String | B.java:107:31:107:31 | x : String | B.java:107:31:111:5 | parameter this [Return] : new Consumer<String>(...) { ... } [List<String> out1, <element>] : String | B.java:107:31:111:5 | ...->... [post update] : new Consumer<String>(...) { ... } [List<String> out1, <element>] : String |
| B.java:107:31:111:5 | ...->... : new Consumer<String>(...) { ... } [String s] : String | B.java:107:31:111:5 | parameter this : new Consumer<String>(...) { ... } [String s] : String | B.java:107:31:111:5 | parameter this [Return] : new Consumer<String>(...) { ... } [List<String> out2, <element>] : String | B.java:107:31:111:5 | ...->... [post update] : new Consumer<String>(...) { ... } [List<String> out2, <element>] : String |
| B.java:107:31:111:5 | ...->... : new Consumer<String>(...) { ... } [String s] : String | B.java:107:31:111:5 | parameter this : new Consumer<String>(...) { ... } [String s] : String | B.java:107:31:111:5 | parameter this [Return] : new Consumer<String>(...) { ... } [List<String> out2, <element>] : String | B.java:107:31:111:5 | ...->... [post update] : new Consumer<String>(...) { ... } [List<String> out2, <element>] : String |
| B.java:137:5:137:5 | r : new TwoRuns(...) { ... } [List<String> l1, <element>] : String | B.java:130:19:130:22 | parameter this : new TwoRuns(...) { ... } [List<String> l1, <element>] : String | B.java:130:19:130:22 | parameter this [Return] : new TwoRuns(...) { ... } [List<String> l2, <element>] : String | B.java:137:5:137:5 | r [post update] : new TwoRuns(...) { ... } [List<String> l2, <element>] : String |
| B.java:148:17:148:29 | new MyLocal(...) [pre constructor] : MyLocal [String s] : String | B.java:145:7:145:13 | parameter this : MyLocal [String s] : String | B.java:145:7:145:13 | parameter this [Return] : MyLocal [f] : String | B.java:148:17:148:29 | new MyLocal(...) : MyLocal [f] : String |
| B.java:149:10:149:10 | m : MyLocal [f] : String | B.java:146:14:146:17 | parameter this : MyLocal [f] : String | B.java:146:30:146:35 | this.f : String | B.java:149:10:149:17 | getF(...) |
| B.java:173:18:173:30 | new MyLocal(...) [pre constructor] : MyLocal [String s1] : String | B.java:158:7:158:13 | parameter this : MyLocal [String s1] : String | B.java:158:7:158:13 | parameter this [Return] : MyLocal [f] : String | B.java:173:18:173:30 | new MyLocal(...) : MyLocal [f] : String |
| B.java:177:12:177:27 | source(...) : String | B.java:166:16:166:23 | s : String | B.java:166:12:166:14 | parameter this [Return] : MyLocal [List<String> l, <element>] : String | B.java:177:5:177:6 | m1 [post update] : MyLocal [List<String> l, <element>] : String |
| B.java:178:10:178:11 | m2 : MyLocal [List<String> l, <element>] : String | B.java:169:14:169:16 | parameter this : MyLocal [List<String> l, <element>] : String | B.java:170:16:170:23 | get(...) : String | B.java:178:10:178:17 | get(...) |
| B.java:247:5:247:18 | new MyLocal2(...) : MyLocal2 [List<String> l, <element>] : String | B.java:240:12:240:14 | parameter this : MyLocal2 [List<String> l, <element>] : String | B.java:240:12:240:14 | parameter this [Return] : MyLocal2 [List<String> l2, <element>] : String | B.java:247:5:247:18 | new MyLocal2(...) [post update] : MyLocal2 [List<String> l2, <element>] : String |
| B.java:247:5:247:18 | new MyLocal2(...) [pre constructor] : MyLocal2 [String s] : String | B.java:235:7:235:14 | parameter this : MyLocal2 [String s] : String | B.java:235:7:235:14 | parameter this [Return] : MyLocal2 [List<String> l, <element>] : String | B.java:247:5:247:18 | new MyLocal2(...) : MyLocal2 [List<String> l, <element>] : String |
testFailures

View File

@@ -1,2 +1,3 @@
import TestUtilities.InlineFlowTest
import DefaultFlowTest
import TaintFlow::PathGraph

View File

@@ -2,3 +2,4 @@ import java
import semmle.code.java.dataflow.DataFlow
import TestUtilities.InlineFlowTest
import DefaultFlowTest
import TaintFlow::PathGraph

View File

@@ -0,0 +1,72 @@
models
edges
| Test.java:23:25:23:32 | x : String | Test.java:24:18:24:18 | x : String | provenance | |
| Test.java:24:5:24:8 | this [post update] : Test [field] : String | Test.java:23:15:23:23 | parameter this [Return] : Test [field] : String | provenance | |
| Test.java:24:18:24:18 | x : String | Test.java:24:5:24:8 | this [post update] : Test [field] : String | provenance | |
| Test.java:32:17:32:19 | parameter this : Test [field] : String | Test.java:33:12:33:16 | this <.field> : Test [field] : String | provenance | |
| Test.java:33:12:33:16 | this <.field> : Test [field] : String | Test.java:33:12:33:16 | field : String | provenance | |
| Test.java:44:5:44:18 | fluentNoop(...) [post update] : Test [field] : String | Test.java:45:10:45:10 | t : Test [field] : String | provenance | |
| Test.java:44:30:44:37 | source(...) : String | Test.java:23:25:23:32 | x : String | provenance | |
| Test.java:44:30:44:37 | source(...) : String | Test.java:44:5:44:18 | fluentNoop(...) [post update] : Test [field] : String | provenance | |
| Test.java:45:10:45:10 | t : Test [field] : String | Test.java:32:17:32:19 | parameter this : Test [field] : String | provenance | |
| Test.java:45:10:45:10 | t : Test [field] : String | Test.java:45:10:45:16 | get(...) | provenance | |
| Test.java:50:5:50:33 | fluentNoop(...) [post update] : Test [field] : String | Test.java:51:10:51:10 | t : Test [field] : String | provenance | |
| Test.java:50:45:50:52 | source(...) : String | Test.java:23:25:23:32 | x : String | provenance | |
| Test.java:50:45:50:52 | source(...) : String | Test.java:50:5:50:33 | fluentNoop(...) [post update] : Test [field] : String | provenance | |
| Test.java:51:10:51:10 | t : Test [field] : String | Test.java:32:17:32:19 | parameter this : Test [field] : String | provenance | |
| Test.java:51:10:51:10 | t : Test [field] : String | Test.java:51:10:51:16 | get(...) | provenance | |
| Test.java:56:5:56:28 | indirectlyFluentNoop(...) [post update] : Test [field] : String | Test.java:57:10:57:10 | t : Test [field] : String | provenance | |
| Test.java:56:40:56:47 | source(...) : String | Test.java:23:25:23:32 | x : String | provenance | |
| Test.java:56:40:56:47 | source(...) : String | Test.java:56:5:56:28 | indirectlyFluentNoop(...) [post update] : Test [field] : String | provenance | |
| Test.java:57:10:57:10 | t : Test [field] : String | Test.java:32:17:32:19 | parameter this : Test [field] : String | provenance | |
| Test.java:57:10:57:10 | t : Test [field] : String | Test.java:57:10:57:16 | get(...) | provenance | |
| Test.java:62:5:62:51 | modelledFluentMethod(...) [post update] : Test [field] : String | Test.java:63:10:63:10 | t : Test [field] : String | provenance | ValuePreservingMethod |
| Test.java:62:63:62:70 | source(...) : String | Test.java:23:25:23:32 | x : String | provenance | |
| Test.java:62:63:62:70 | source(...) : String | Test.java:62:5:62:51 | modelledFluentMethod(...) [post update] : Test [field] : String | provenance | |
| Test.java:63:10:63:10 | t : Test [field] : String | Test.java:32:17:32:19 | parameter this : Test [field] : String | provenance | |
| Test.java:63:10:63:10 | t : Test [field] : String | Test.java:63:10:63:16 | get(...) | provenance | |
| Test.java:68:5:68:74 | modelledFluentMethod(...) [post update] : Test [field] : String | Test.java:69:10:69:10 | t : Test [field] : String | provenance | ValuePreservingMethod |
| Test.java:68:86:68:93 | source(...) : String | Test.java:23:25:23:32 | x : String | provenance | |
| Test.java:68:86:68:93 | source(...) : String | Test.java:68:5:68:74 | modelledFluentMethod(...) [post update] : Test [field] : String | provenance | |
| Test.java:69:10:69:10 | t : Test [field] : String | Test.java:32:17:32:19 | parameter this : Test [field] : String | provenance | |
| Test.java:69:10:69:10 | t : Test [field] : String | Test.java:69:10:69:16 | get(...) | provenance | |
nodes
| Test.java:23:15:23:23 | parameter this [Return] : Test [field] : String | semmle.label | parameter this [Return] : Test [field] : String |
| Test.java:23:25:23:32 | x : String | semmle.label | x : String |
| Test.java:24:5:24:8 | this [post update] : Test [field] : String | semmle.label | this [post update] : Test [field] : String |
| Test.java:24:18:24:18 | x : String | semmle.label | x : String |
| Test.java:32:17:32:19 | parameter this : Test [field] : String | semmle.label | parameter this : Test [field] : String |
| Test.java:33:12:33:16 | field : String | semmle.label | field : String |
| Test.java:33:12:33:16 | this <.field> : Test [field] : String | semmle.label | this <.field> : Test [field] : String |
| Test.java:44:5:44:18 | fluentNoop(...) [post update] : Test [field] : String | semmle.label | fluentNoop(...) [post update] : Test [field] : String |
| Test.java:44:30:44:37 | source(...) : String | semmle.label | source(...) : String |
| Test.java:45:10:45:10 | t : Test [field] : String | semmle.label | t : Test [field] : String |
| Test.java:45:10:45:16 | get(...) | semmle.label | get(...) |
| Test.java:50:5:50:33 | fluentNoop(...) [post update] : Test [field] : String | semmle.label | fluentNoop(...) [post update] : Test [field] : String |
| Test.java:50:45:50:52 | source(...) : String | semmle.label | source(...) : String |
| Test.java:51:10:51:10 | t : Test [field] : String | semmle.label | t : Test [field] : String |
| Test.java:51:10:51:16 | get(...) | semmle.label | get(...) |
| Test.java:56:5:56:28 | indirectlyFluentNoop(...) [post update] : Test [field] : String | semmle.label | indirectlyFluentNoop(...) [post update] : Test [field] : String |
| Test.java:56:40:56:47 | source(...) : String | semmle.label | source(...) : String |
| Test.java:57:10:57:10 | t : Test [field] : String | semmle.label | t : Test [field] : String |
| Test.java:57:10:57:16 | get(...) | semmle.label | get(...) |
| Test.java:62:5:62:51 | modelledFluentMethod(...) [post update] : Test [field] : String | semmle.label | modelledFluentMethod(...) [post update] : Test [field] : String |
| Test.java:62:63:62:70 | source(...) : String | semmle.label | source(...) : String |
| Test.java:63:10:63:10 | t : Test [field] : String | semmle.label | t : Test [field] : String |
| Test.java:63:10:63:16 | get(...) | semmle.label | get(...) |
| Test.java:68:5:68:74 | modelledFluentMethod(...) [post update] : Test [field] : String | semmle.label | modelledFluentMethod(...) [post update] : Test [field] : String |
| Test.java:68:86:68:93 | source(...) : String | semmle.label | source(...) : String |
| Test.java:69:10:69:10 | t : Test [field] : String | semmle.label | t : Test [field] : String |
| Test.java:69:10:69:16 | get(...) | semmle.label | get(...) |
subpaths
| Test.java:44:30:44:37 | source(...) : String | Test.java:23:25:23:32 | x : String | Test.java:23:15:23:23 | parameter this [Return] : Test [field] : String | Test.java:44:5:44:18 | fluentNoop(...) [post update] : Test [field] : String |
| Test.java:45:10:45:10 | t : Test [field] : String | Test.java:32:17:32:19 | parameter this : Test [field] : String | Test.java:33:12:33:16 | field : String | Test.java:45:10:45:16 | get(...) |
| Test.java:50:45:50:52 | source(...) : String | Test.java:23:25:23:32 | x : String | Test.java:23:15:23:23 | parameter this [Return] : Test [field] : String | Test.java:50:5:50:33 | fluentNoop(...) [post update] : Test [field] : String |
| Test.java:51:10:51:10 | t : Test [field] : String | Test.java:32:17:32:19 | parameter this : Test [field] : String | Test.java:33:12:33:16 | field : String | Test.java:51:10:51:16 | get(...) |
| Test.java:56:40:56:47 | source(...) : String | Test.java:23:25:23:32 | x : String | Test.java:23:15:23:23 | parameter this [Return] : Test [field] : String | Test.java:56:5:56:28 | indirectlyFluentNoop(...) [post update] : Test [field] : String |
| Test.java:57:10:57:10 | t : Test [field] : String | Test.java:32:17:32:19 | parameter this : Test [field] : String | Test.java:33:12:33:16 | field : String | Test.java:57:10:57:16 | get(...) |
| Test.java:62:63:62:70 | source(...) : String | Test.java:23:25:23:32 | x : String | Test.java:23:15:23:23 | parameter this [Return] : Test [field] : String | Test.java:62:5:62:51 | modelledFluentMethod(...) [post update] : Test [field] : String |
| Test.java:63:10:63:10 | t : Test [field] : String | Test.java:32:17:32:19 | parameter this : Test [field] : String | Test.java:33:12:33:16 | field : String | Test.java:63:10:63:16 | get(...) |
| Test.java:68:86:68:93 | source(...) : String | Test.java:23:25:23:32 | x : String | Test.java:23:15:23:23 | parameter this [Return] : Test [field] : String | Test.java:68:5:68:74 | modelledFluentMethod(...) [post update] : Test [field] : String |
| Test.java:69:10:69:10 | t : Test [field] : String | Test.java:32:17:32:19 | parameter this : Test [field] : String | Test.java:33:12:33:16 | field : String | Test.java:69:10:69:16 | get(...) |
testFailures

View File

@@ -3,6 +3,7 @@ import semmle.code.java.dataflow.DataFlow
import semmle.code.java.dataflow.FlowSteps
import TestUtilities.InlineFlowTest
import DefaultFlowTest
import TaintFlow::PathGraph
class Model extends FluentMethod {
Model() { this.getName() = "modelledFluentMethod" }

View File

@@ -0,0 +1,94 @@
models
| 1 | Summary: java.lang; Iterable; true; iterator; (); ; Argument[this].Element; ReturnValue.Element; value; manual |
| 2 | Summary: java.util; Arrays; false; stream; ; ; Argument[0].ArrayElement; ReturnValue.Element; value; manual |
| 3 | Summary: java.util; Iterator; true; next; ; ; Argument[this].Element; ReturnValue; value; manual |
| 4 | Summary: java.util; List; true; get; (int); ; Argument[this].Element; ReturnValue; value; manual |
| 5 | Summary: java.util; Map; true; get; ; ; Argument[this].MapValue; ReturnValue; value; manual |
| 6 | Summary: java.util; Optional; false; get; ; ; Argument[this].Element; ReturnValue; value; manual |
edges
| A.java:10:19:10:43 | {...} : String[] [[]] : String | A.java:11:38:11:39 | xs : String[] [[]] : String | provenance | |
| A.java:10:34:10:41 | source(...) : String | A.java:10:19:10:43 | {...} : String[] [[]] : String | provenance | |
| A.java:11:24:11:40 | stream(...) : Stream [<element>] : String | A.java:13:10:13:10 | s : Stream [<element>] : String | provenance | |
| A.java:11:24:11:40 | stream(...) : Stream [<element>] : String | A.java:14:10:14:10 | s : Stream [<element>] : String | provenance | |
| A.java:11:24:11:40 | stream(...) : Stream [<element>] : String | A.java:15:10:15:10 | s : Stream [<element>] : String | provenance | |
| A.java:11:24:11:40 | stream(...) : Stream [<element>] : String | A.java:16:10:16:10 | s : Stream [<element>] : String | provenance | |
| A.java:11:24:11:40 | stream(...) : Stream [<element>] : String | A.java:17:10:17:10 | s : Stream [<element>] : String | provenance | |
| A.java:11:24:11:40 | stream(...) : Stream [<element>] : String | A.java:18:10:18:10 | s : Stream [<element>] : String | provenance | |
| A.java:11:24:11:40 | stream(...) : Stream [<element>] : String | A.java:19:10:19:10 | s : Stream [<element>] : String | provenance | |
| A.java:11:24:11:40 | stream(...) : Stream [<element>] : String | A.java:24:10:24:10 | s : Stream [<element>] : String | provenance | |
| A.java:11:24:11:40 | stream(...) : Stream [<element>] : String | A.java:26:10:26:10 | s : Stream [<element>] : String | provenance | |
| A.java:11:24:11:40 | stream(...) : Stream [<element>] : String | A.java:27:10:27:10 | s : Stream [<element>] : String | provenance | |
| A.java:11:24:11:40 | stream(...) : Stream [<element>] : String | A.java:28:10:28:10 | s : Stream [<element>] : String | provenance | |
| A.java:11:38:11:39 | xs : String[] [[]] : String | A.java:11:24:11:40 | stream(...) : Stream [<element>] : String | provenance | MaD:2 |
| A.java:13:10:13:10 | s : Stream [<element>] : String | A.java:13:10:13:42 | collect(...) : Optional [<element>] : String | provenance | java.util.stream.collect()+Collectors.[toList,...] |
| A.java:13:10:13:42 | collect(...) : Optional [<element>] : String | A.java:13:10:13:48 | get(...) | provenance | MaD:6 |
| A.java:14:10:14:10 | s : Stream [<element>] : String | A.java:14:10:14:42 | collect(...) : Optional [<element>] : String | provenance | java.util.stream.collect()+Collectors.[toList,...] |
| A.java:14:10:14:42 | collect(...) : Optional [<element>] : String | A.java:14:10:14:48 | get(...) | provenance | MaD:6 |
| A.java:15:10:15:10 | s : Stream [<element>] : String | A.java:15:10:15:49 | collect(...) : Collection [<element>] : String | provenance | java.util.stream.collect()+Collectors.[toList,...] |
| A.java:15:10:15:49 | collect(...) : Collection [<element>] : String | A.java:15:10:15:60 | iterator(...) : Iterator [<element>] : String | provenance | MaD:1 |
| A.java:15:10:15:60 | iterator(...) : Iterator [<element>] : String | A.java:15:10:15:67 | next(...) | provenance | MaD:3 |
| A.java:16:10:16:10 | s : Stream [<element>] : String | A.java:16:10:16:39 | collect(...) : List [<element>] : String | provenance | java.util.stream.collect()+Collectors.[toList,...] |
| A.java:16:10:16:39 | collect(...) : List [<element>] : String | A.java:16:10:16:46 | get(...) | provenance | MaD:4 |
| A.java:17:10:17:10 | s : Stream [<element>] : String | A.java:17:10:17:38 | collect(...) : Set [<element>] : String | provenance | java.util.stream.collect()+Collectors.[toList,...] |
| A.java:17:10:17:38 | collect(...) : Set [<element>] : String | A.java:17:10:17:49 | iterator(...) : Iterator [<element>] : String | provenance | MaD:1 |
| A.java:17:10:17:49 | iterator(...) : Iterator [<element>] : String | A.java:17:10:17:56 | next(...) | provenance | MaD:3 |
| A.java:18:10:18:10 | s : Stream [<element>] : String | A.java:18:10:18:51 | collect(...) : List [<element>] : String | provenance | java.util.stream.collect()+Collectors.[toList,...] |
| A.java:18:10:18:51 | collect(...) : List [<element>] : String | A.java:18:10:18:58 | get(...) | provenance | MaD:4 |
| A.java:19:10:19:10 | s : Stream [<element>] : String | A.java:19:10:19:50 | collect(...) : Set [<element>] : String | provenance | java.util.stream.collect()+Collectors.[toList,...] |
| A.java:19:10:19:50 | collect(...) : Set [<element>] : String | A.java:19:10:19:61 | iterator(...) : Iterator [<element>] : String | provenance | MaD:1 |
| A.java:19:10:19:61 | iterator(...) : Iterator [<element>] : String | A.java:19:10:19:68 | next(...) | provenance | MaD:3 |
| A.java:24:10:24:10 | s : Stream [<element>] : String | A.java:24:10:24:40 | collect(...) | provenance | java.util.stream.collect()+Collectors.joining |
| A.java:26:10:26:10 | s : Stream [<element>] : String | A.java:26:10:26:47 | collect(...) : Map [<map.value>, <element>] : String | provenance | java.util.stream.collect()+Collectors.[groupingBy(Function),...] |
| A.java:26:10:26:47 | collect(...) : Map [<map.value>, <element>] : String | A.java:26:10:26:57 | get(...) : List [<element>] : String | provenance | MaD:5 |
| A.java:26:10:26:57 | get(...) : List [<element>] : String | A.java:26:10:26:64 | get(...) | provenance | MaD:4 |
| A.java:27:10:27:10 | s : Stream [<element>] : String | A.java:27:10:27:57 | collect(...) : ConcurrentMap [<map.value>, <element>] : String | provenance | java.util.stream.collect()+Collectors.[groupingBy(Function),...] |
| A.java:27:10:27:57 | collect(...) : ConcurrentMap [<map.value>, <element>] : String | A.java:27:10:27:67 | get(...) : List [<element>] : String | provenance | MaD:5 |
| A.java:27:10:27:67 | get(...) : List [<element>] : String | A.java:27:10:27:74 | get(...) | provenance | MaD:4 |
| A.java:28:10:28:10 | s : Stream [<element>] : String | A.java:28:10:28:51 | collect(...) : Map [<map.value>, <element>] : String | provenance | java.util.stream.collect()+Collectors.[groupingBy(Function),...] |
| A.java:28:10:28:51 | collect(...) : Map [<map.value>, <element>] : String | A.java:28:10:28:61 | get(...) : List [<element>] : String | provenance | MaD:5 |
| A.java:28:10:28:61 | get(...) : List [<element>] : String | A.java:28:10:28:68 | get(...) | provenance | MaD:4 |
nodes
| A.java:10:19:10:43 | {...} : String[] [[]] : String | semmle.label | {...} : String[] [[]] : String |
| A.java:10:34:10:41 | source(...) : String | semmle.label | source(...) : String |
| A.java:11:24:11:40 | stream(...) : Stream [<element>] : String | semmle.label | stream(...) : Stream [<element>] : String |
| A.java:11:38:11:39 | xs : String[] [[]] : String | semmle.label | xs : String[] [[]] : String |
| A.java:13:10:13:10 | s : Stream [<element>] : String | semmle.label | s : Stream [<element>] : String |
| A.java:13:10:13:42 | collect(...) : Optional [<element>] : String | semmle.label | collect(...) : Optional [<element>] : String |
| A.java:13:10:13:48 | get(...) | semmle.label | get(...) |
| A.java:14:10:14:10 | s : Stream [<element>] : String | semmle.label | s : Stream [<element>] : String |
| A.java:14:10:14:42 | collect(...) : Optional [<element>] : String | semmle.label | collect(...) : Optional [<element>] : String |
| A.java:14:10:14:48 | get(...) | semmle.label | get(...) |
| A.java:15:10:15:10 | s : Stream [<element>] : String | semmle.label | s : Stream [<element>] : String |
| A.java:15:10:15:49 | collect(...) : Collection [<element>] : String | semmle.label | collect(...) : Collection [<element>] : String |
| A.java:15:10:15:60 | iterator(...) : Iterator [<element>] : String | semmle.label | iterator(...) : Iterator [<element>] : String |
| A.java:15:10:15:67 | next(...) | semmle.label | next(...) |
| A.java:16:10:16:10 | s : Stream [<element>] : String | semmle.label | s : Stream [<element>] : String |
| A.java:16:10:16:39 | collect(...) : List [<element>] : String | semmle.label | collect(...) : List [<element>] : String |
| A.java:16:10:16:46 | get(...) | semmle.label | get(...) |
| A.java:17:10:17:10 | s : Stream [<element>] : String | semmle.label | s : Stream [<element>] : String |
| A.java:17:10:17:38 | collect(...) : Set [<element>] : String | semmle.label | collect(...) : Set [<element>] : String |
| A.java:17:10:17:49 | iterator(...) : Iterator [<element>] : String | semmle.label | iterator(...) : Iterator [<element>] : String |
| A.java:17:10:17:56 | next(...) | semmle.label | next(...) |
| A.java:18:10:18:10 | s : Stream [<element>] : String | semmle.label | s : Stream [<element>] : String |
| A.java:18:10:18:51 | collect(...) : List [<element>] : String | semmle.label | collect(...) : List [<element>] : String |
| A.java:18:10:18:58 | get(...) | semmle.label | get(...) |
| A.java:19:10:19:10 | s : Stream [<element>] : String | semmle.label | s : Stream [<element>] : String |
| A.java:19:10:19:50 | collect(...) : Set [<element>] : String | semmle.label | collect(...) : Set [<element>] : String |
| A.java:19:10:19:61 | iterator(...) : Iterator [<element>] : String | semmle.label | iterator(...) : Iterator [<element>] : String |
| A.java:19:10:19:68 | next(...) | semmle.label | next(...) |
| A.java:24:10:24:10 | s : Stream [<element>] : String | semmle.label | s : Stream [<element>] : String |
| A.java:24:10:24:40 | collect(...) | semmle.label | collect(...) |
| A.java:26:10:26:10 | s : Stream [<element>] : String | semmle.label | s : Stream [<element>] : String |
| A.java:26:10:26:47 | collect(...) : Map [<map.value>, <element>] : String | semmle.label | collect(...) : Map [<map.value>, <element>] : String |
| A.java:26:10:26:57 | get(...) : List [<element>] : String | semmle.label | get(...) : List [<element>] : String |
| A.java:26:10:26:64 | get(...) | semmle.label | get(...) |
| A.java:27:10:27:10 | s : Stream [<element>] : String | semmle.label | s : Stream [<element>] : String |
| A.java:27:10:27:57 | collect(...) : ConcurrentMap [<map.value>, <element>] : String | semmle.label | collect(...) : ConcurrentMap [<map.value>, <element>] : String |
| A.java:27:10:27:67 | get(...) : List [<element>] : String | semmle.label | get(...) : List [<element>] : String |
| A.java:27:10:27:74 | get(...) | semmle.label | get(...) |
| A.java:28:10:28:10 | s : Stream [<element>] : String | semmle.label | s : Stream [<element>] : String |
| A.java:28:10:28:51 | collect(...) : Map [<map.value>, <element>] : String | semmle.label | collect(...) : Map [<map.value>, <element>] : String |
| A.java:28:10:28:61 | get(...) : List [<element>] : String | semmle.label | get(...) : List [<element>] : String |
| A.java:28:10:28:68 | get(...) | semmle.label | get(...) |
subpaths
testFailures

View File

@@ -1,2 +1,3 @@
import TestUtilities.InlineFlowTest
import DefaultFlowTest
import TaintFlow::PathGraph

View File

@@ -0,0 +1,45 @@
models
| 1 | Summary: java.io; InputStream; true; read; (byte[]); ; Argument[this]; Argument[0]; taint; manual |
edges
| A.java:31:27:31:34 | source(...) : InputStream | A.java:33:14:33:21 | wrapper1 | provenance | AdditionalTaintStep |
| A.java:31:27:31:34 | source(...) : InputStream | A.java:35:14:35:21 | wrapper2 | provenance | AdditionalTaintStep |
| A.java:31:27:31:34 | source(...) : InputStream | A.java:37:14:37:21 | wrapper3 | provenance | AdditionalTaintStep |
| A.java:31:27:31:34 | source(...) : InputStream | A.java:51:14:51:21 | wrapper4 | provenance | AdditionalTaintStep |
| A.java:55:31:66:9 | new (...) : new InputStream(...) { ... } | A.java:67:14:67:20 | wrapper | provenance | |
| A.java:63:34:63:41 | source(...) : InputStream | A.java:64:24:64:25 | in : InputStream | provenance | |
| A.java:64:24:64:25 | in : InputStream | A.java:64:32:64:32 | b [post update] : byte[] | provenance | MaD:1 |
| A.java:64:32:64:32 | b [post update] : byte[] | A.java:55:31:66:9 | new (...) : new InputStream(...) { ... } | provenance | AdditionalTaintStep |
| A.java:71:26:71:33 | source(...) : InputStream | A.java:84:14:84:20 | wrapper | provenance | AdditionalTaintStep |
| A.java:87:42:87:55 | in : InputStream | A.java:88:16:98:9 | new (...) : new InputStream(...) { ... } | provenance | AdditionalTaintStep |
| A.java:103:25:103:32 | source(...) : InputStream | A.java:87:42:87:55 | in : InputStream | provenance | |
| A.java:103:25:103:32 | source(...) : InputStream | A.java:103:14:103:33 | wrapStream(...) | provenance | AdditionalTaintStep |
| A.java:116:34:116:41 | source(...) : InputStream | A.java:117:24:117:25 | in : InputStream | provenance | |
| A.java:117:24:117:25 | in : InputStream | A.java:117:32:117:32 | b [post update] : byte[] | provenance | MaD:1 |
| A.java:117:32:117:32 | b [post update] : byte[] | A.java:120:14:120:35 | new LocalInputStream(...) | provenance | AdditionalTaintStep |
| A.java:124:26:124:33 | source(...) : InputStream | A.java:137:14:137:35 | new LocalInputStream(...) | provenance | AdditionalTaintStep |
nodes
| A.java:31:27:31:34 | source(...) : InputStream | semmle.label | source(...) : InputStream |
| A.java:33:14:33:21 | wrapper1 | semmle.label | wrapper1 |
| A.java:35:14:35:21 | wrapper2 | semmle.label | wrapper2 |
| A.java:37:14:37:21 | wrapper3 | semmle.label | wrapper3 |
| A.java:51:14:51:21 | wrapper4 | semmle.label | wrapper4 |
| A.java:55:31:66:9 | new (...) : new InputStream(...) { ... } | semmle.label | new (...) : new InputStream(...) { ... } |
| A.java:63:34:63:41 | source(...) : InputStream | semmle.label | source(...) : InputStream |
| A.java:64:24:64:25 | in : InputStream | semmle.label | in : InputStream |
| A.java:64:32:64:32 | b [post update] : byte[] | semmle.label | b [post update] : byte[] |
| A.java:67:14:67:20 | wrapper | semmle.label | wrapper |
| A.java:71:26:71:33 | source(...) : InputStream | semmle.label | source(...) : InputStream |
| A.java:84:14:84:20 | wrapper | semmle.label | wrapper |
| A.java:87:42:87:55 | in : InputStream | semmle.label | in : InputStream |
| A.java:88:16:98:9 | new (...) : new InputStream(...) { ... } | semmle.label | new (...) : new InputStream(...) { ... } |
| A.java:103:14:103:33 | wrapStream(...) | semmle.label | wrapStream(...) |
| A.java:103:25:103:32 | source(...) : InputStream | semmle.label | source(...) : InputStream |
| A.java:116:34:116:41 | source(...) : InputStream | semmle.label | source(...) : InputStream |
| A.java:117:24:117:25 | in : InputStream | semmle.label | in : InputStream |
| A.java:117:32:117:32 | b [post update] : byte[] | semmle.label | b [post update] : byte[] |
| A.java:120:14:120:35 | new LocalInputStream(...) | semmle.label | new LocalInputStream(...) |
| A.java:124:26:124:33 | source(...) : InputStream | semmle.label | source(...) : InputStream |
| A.java:137:14:137:35 | new LocalInputStream(...) | semmle.label | new LocalInputStream(...) |
subpaths
| A.java:103:25:103:32 | source(...) : InputStream | A.java:87:42:87:55 | in : InputStream | A.java:88:16:98:9 | new (...) : new InputStream(...) { ... } | A.java:103:14:103:33 | wrapStream(...) |
testFailures

View File

@@ -1,2 +1,3 @@
import TestUtilities.InlineFlowTest
import DefaultFlowTest
import TaintFlow::PathGraph

View File

@@ -1,2 +1,18 @@
models
| 1 | Summary: my.qltest.synth; A; false; storeInArray; (String); ; Argument[0]; SyntheticGlobal[db1].ArrayElement; value; manual |
| 2 | Summary: my.qltest.synth; A; false; storeTaintInArray; (String); ; Argument[0]; SyntheticGlobal[db1].ArrayElement; taint; manual |
| 3 | Summary: my.qltest.synth; A; false; storeValue; (String); ; Argument[0]; SyntheticGlobal[db1]; value; manual |
edges
| A.java:16:18:16:28 | source(...) : String | A.java:23:10:23:20 | readArray(...) | provenance | MaD:1 |
| A.java:17:23:17:33 | source(...) : String | A.java:23:10:23:20 | readArray(...) | provenance | MaD:2 |
| A.java:18:16:18:26 | source(...) : String | A.java:22:10:22:20 | readValue(...) | provenance | MaD:3 |
| A.java:18:16:18:26 | source(...) : String | A.java:23:10:23:20 | readArray(...) | provenance | MaD:3 |
nodes
| A.java:16:18:16:28 | source(...) : String | semmle.label | source(...) : String |
| A.java:17:23:17:33 | source(...) : String | semmle.label | source(...) : String |
| A.java:18:16:18:26 | source(...) : String | semmle.label | source(...) : String |
| A.java:22:10:22:20 | readValue(...) | semmle.label | readValue(...) |
| A.java:23:10:23:20 | readArray(...) | semmle.label | readArray(...) |
subpaths
testFailures
invalidModelRow

View File

@@ -3,3 +3,4 @@ import semmle.code.java.dataflow.ExternalFlow
import TestUtilities.InlineFlowTest
import DefaultFlowTest
import ModelValidation
import TaintFlow::PathGraph

View File

@@ -0,0 +1,81 @@
models
| 1 | Summary: java.util; Formatter; false; Formatter; (Appendable); ; Argument[0]; Argument[this]; taint; df-generated |
| 2 | Summary: java.util; Formatter; false; format; (String,Object[]); ; Argument[1].ArrayElement; ReturnValue; taint; df-generated |
| 3 | Summary: java.util; Formatter; false; format; (String,Object[]); ; Argument[this]; ReturnValue; taint; df-generated |
| 4 | Summary: java.lang; AbstractStringBuilder; true; append; ; ; Argument[this]; ReturnValue; value; manual |
| 5 | Summary: java.lang; AbstractStringBuilder; true; append; ; ; Argument[0]; Argument[this]; taint; manual |
| 6 | Summary: java.lang; CharSequence; true; toString; ; ; Argument[this]; ReturnValue; taint; manual |
| 7 | Summary: java.lang; String; false; format; (String,Object[]); ; Argument[1].ArrayElement; ReturnValue; taint; manual |
| 8 | Summary: java.lang; String; false; formatted; (Object[]); ; Argument[this]; ReturnValue; taint; manual |
| 9 | Summary: java.lang; String; false; formatted; (Object[]); ; Argument[0].ArrayElement; ReturnValue; taint; manual |
edges
| A.java:12:22:12:29 | source(...) : String | A.java:15:14:15:16 | bad : String | provenance | |
| A.java:12:22:12:29 | source(...) : String | A.java:16:34:16:36 | bad : String | provenance | |
| A.java:12:22:12:29 | source(...) : String | A.java:17:36:17:38 | bad : String | provenance | |
| A.java:12:22:12:29 | source(...) : String | A.java:19:107:19:109 | bad : String | provenance | |
| A.java:15:14:15:16 | bad : String | A.java:15:14:15:32 | formatted(...) | provenance | MaD:8 |
| A.java:16:14:16:48 | new ..[] { .. } : Object[] [[]] : String | A.java:16:14:16:48 | formatted(...) | provenance | MaD:9 |
| A.java:16:34:16:36 | bad : String | A.java:16:14:16:48 | new ..[] { .. } : Object[] [[]] : String | provenance | |
| A.java:17:14:17:45 | new ..[] { .. } : Object[] [[]] : String | A.java:17:14:17:45 | format(...) | provenance | MaD:7 |
| A.java:17:36:17:38 | bad : String | A.java:17:14:17:45 | new ..[] { .. } : Object[] [[]] : String | provenance | |
| A.java:19:14:19:110 | new ..[] { .. } : Object[] [[]] : String | A.java:19:14:19:110 | format(...) | provenance | MaD:7 |
| A.java:19:107:19:109 | bad : String | A.java:19:14:19:110 | new ..[] { .. } : Object[] [[]] : String | provenance | |
| A.java:23:22:23:29 | source(...) : String | A.java:27:14:27:32 | format(...) | provenance | TaintPreservingCallable |
| A.java:23:22:23:29 | source(...) : String | A.java:27:29:27:31 | bad : String | provenance | |
| A.java:23:22:23:29 | source(...) : String | A.java:28:14:28:25 | toString(...) | provenance | TaintPreservingCallable |
| A.java:27:14:27:32 | new ..[] { .. } : Object[] [[]] : String | A.java:27:14:27:32 | format(...) | provenance | MaD:2 |
| A.java:27:29:27:31 | bad : String | A.java:27:14:27:32 | new ..[] { .. } : Object[] [[]] : String | provenance | |
| A.java:32:22:32:29 | source(...) : String | A.java:36:14:36:15 | sb : StringBuilder | provenance | formatStep |
| A.java:32:22:32:29 | source(...) : String | A.java:37:14:37:32 | format(...) | provenance | TaintPreservingCallable |
| A.java:32:22:32:29 | source(...) : String | A.java:37:29:37:31 | bad : String | provenance | |
| A.java:32:22:32:29 | source(...) : String | A.java:38:14:38:15 | sb : StringBuilder | provenance | formatStep |
| A.java:36:14:36:15 | sb : StringBuilder | A.java:36:14:36:26 | toString(...) | provenance | MaD:6 |
| A.java:37:14:37:32 | new ..[] { .. } : Object[] [[]] : String | A.java:37:14:37:32 | format(...) | provenance | MaD:2 |
| A.java:37:29:37:31 | bad : String | A.java:37:14:37:32 | new ..[] { .. } : Object[] [[]] : String | provenance | |
| A.java:38:14:38:15 | sb : StringBuilder | A.java:38:14:38:26 | toString(...) | provenance | MaD:6 |
| A.java:42:22:42:29 | source(...) : String | A.java:45:24:45:26 | bad : String | provenance | |
| A.java:45:14:45:15 | sb [post update] : StringBuilder | A.java:47:14:47:30 | new Formatter(...) : Formatter | provenance | TaintPreservingCallable |
| A.java:45:14:45:15 | sb [post update] : StringBuilder | A.java:47:14:47:54 | toString(...) | provenance | TaintPreservingCallable |
| A.java:45:14:45:15 | sb [post update] : StringBuilder | A.java:47:28:47:29 | sb : StringBuilder | provenance | |
| A.java:45:24:45:26 | bad : String | A.java:45:14:45:15 | sb [post update] : StringBuilder | provenance | MaD:5 |
| A.java:45:24:45:26 | bad : String | A.java:45:14:45:27 | append(...) | provenance | MaD:5+MaD:4 |
| A.java:47:14:47:30 | new Formatter(...) : Formatter | A.java:47:14:47:43 | format(...) : Formatter | provenance | MaD:3 |
| A.java:47:14:47:30 | new Formatter(...) : Formatter | A.java:47:14:47:54 | toString(...) | provenance | TaintPreservingCallable |
| A.java:47:14:47:43 | format(...) : Formatter | A.java:47:14:47:54 | toString(...) | provenance | TaintPreservingCallable |
| A.java:47:28:47:29 | sb : StringBuilder | A.java:47:14:47:30 | new Formatter(...) : Formatter | provenance | MaD:1 |
nodes
| A.java:12:22:12:29 | source(...) : String | semmle.label | source(...) : String |
| A.java:15:14:15:16 | bad : String | semmle.label | bad : String |
| A.java:15:14:15:32 | formatted(...) | semmle.label | formatted(...) |
| A.java:16:14:16:48 | formatted(...) | semmle.label | formatted(...) |
| A.java:16:14:16:48 | new ..[] { .. } : Object[] [[]] : String | semmle.label | new ..[] { .. } : Object[] [[]] : String |
| A.java:16:34:16:36 | bad : String | semmle.label | bad : String |
| A.java:17:14:17:45 | format(...) | semmle.label | format(...) |
| A.java:17:14:17:45 | new ..[] { .. } : Object[] [[]] : String | semmle.label | new ..[] { .. } : Object[] [[]] : String |
| A.java:17:36:17:38 | bad : String | semmle.label | bad : String |
| A.java:19:14:19:110 | format(...) | semmle.label | format(...) |
| A.java:19:14:19:110 | new ..[] { .. } : Object[] [[]] : String | semmle.label | new ..[] { .. } : Object[] [[]] : String |
| A.java:19:107:19:109 | bad : String | semmle.label | bad : String |
| A.java:23:22:23:29 | source(...) : String | semmle.label | source(...) : String |
| A.java:27:14:27:32 | format(...) | semmle.label | format(...) |
| A.java:27:14:27:32 | new ..[] { .. } : Object[] [[]] : String | semmle.label | new ..[] { .. } : Object[] [[]] : String |
| A.java:27:29:27:31 | bad : String | semmle.label | bad : String |
| A.java:28:14:28:25 | toString(...) | semmle.label | toString(...) |
| A.java:32:22:32:29 | source(...) : String | semmle.label | source(...) : String |
| A.java:36:14:36:15 | sb : StringBuilder | semmle.label | sb : StringBuilder |
| A.java:36:14:36:26 | toString(...) | semmle.label | toString(...) |
| A.java:37:14:37:32 | format(...) | semmle.label | format(...) |
| A.java:37:14:37:32 | new ..[] { .. } : Object[] [[]] : String | semmle.label | new ..[] { .. } : Object[] [[]] : String |
| A.java:37:29:37:31 | bad : String | semmle.label | bad : String |
| A.java:38:14:38:15 | sb : StringBuilder | semmle.label | sb : StringBuilder |
| A.java:38:14:38:26 | toString(...) | semmle.label | toString(...) |
| A.java:42:22:42:29 | source(...) : String | semmle.label | source(...) : String |
| A.java:45:14:45:15 | sb [post update] : StringBuilder | semmle.label | sb [post update] : StringBuilder |
| A.java:45:14:45:27 | append(...) | semmle.label | append(...) |
| A.java:45:24:45:26 | bad : String | semmle.label | bad : String |
| A.java:47:14:47:30 | new Formatter(...) : Formatter | semmle.label | new Formatter(...) : Formatter |
| A.java:47:14:47:43 | format(...) : Formatter | semmle.label | format(...) : Formatter |
| A.java:47:14:47:54 | toString(...) | semmle.label | toString(...) |
| A.java:47:28:47:29 | sb : StringBuilder | semmle.label | sb : StringBuilder |
subpaths
testFailures

View File

@@ -1,3 +1,4 @@
import java
import TestUtilities.InlineFlowTest
import DefaultFlowTest
import TaintFlow::PathGraph

View File

@@ -0,0 +1,50 @@
models
| 1 | Summary: com.google.gson; Gson; false; fromJson; ; ; Argument[0]; ReturnValue; taint; manual |
edges
| Test.java:9:24:9:30 | parameter this : Potato | Test.java:10:20:10:23 | name : String | provenance | |
| Test.java:13:24:13:31 | parameter this : Potato | Test.java:14:20:14:24 | inner : Potato | provenance | |
| Test.java:17:24:17:32 | parameter this : Potato | Test.java:18:20:18:25 | object : Object | provenance | |
| Test.java:30:20:30:27 | source(...) : String | Test.java:31:46:31:46 | s : String | provenance | |
| Test.java:31:26:31:61 | fromJson(...) : Potato | Test.java:32:14:32:20 | tainted | provenance | |
| Test.java:31:26:31:61 | fromJson(...) : Potato | Test.java:33:14:33:20 | tainted : Potato | provenance | |
| Test.java:31:26:31:61 | fromJson(...) : Potato | Test.java:34:14:34:20 | tainted : Potato | provenance | |
| Test.java:31:26:31:61 | fromJson(...) : Potato | Test.java:35:14:35:20 | tainted : Potato | provenance | |
| Test.java:31:26:31:61 | fromJson(...) : Potato | Test.java:36:14:36:20 | tainted : Potato | provenance | |
| Test.java:31:46:31:46 | s : String | Test.java:31:26:31:61 | fromJson(...) : Potato | provenance | MaD:1 |
| Test.java:33:14:33:20 | tainted : Potato | Test.java:9:24:9:30 | parameter this : Potato | provenance | |
| Test.java:33:14:33:20 | tainted : Potato | Test.java:33:14:33:30 | getName(...) | provenance | |
| Test.java:34:14:34:20 | tainted : Potato | Test.java:13:24:13:31 | parameter this : Potato | provenance | |
| Test.java:34:14:34:20 | tainted : Potato | Test.java:34:14:34:31 | getInner(...) | provenance | |
| Test.java:35:14:35:20 | tainted : Potato | Test.java:13:24:13:31 | parameter this : Potato | provenance | |
| Test.java:35:14:35:20 | tainted : Potato | Test.java:35:14:35:31 | getInner(...) : Potato | provenance | |
| Test.java:35:14:35:31 | getInner(...) : Potato | Test.java:9:24:9:30 | parameter this : Potato | provenance | |
| Test.java:35:14:35:31 | getInner(...) : Potato | Test.java:35:14:35:41 | getName(...) | provenance | |
| Test.java:36:14:36:20 | tainted : Potato | Test.java:17:24:17:32 | parameter this : Potato | provenance | |
| Test.java:36:14:36:20 | tainted : Potato | Test.java:36:14:36:32 | getObject(...) | provenance | |
nodes
| Test.java:9:24:9:30 | parameter this : Potato | semmle.label | parameter this : Potato |
| Test.java:10:20:10:23 | name : String | semmle.label | name : String |
| Test.java:13:24:13:31 | parameter this : Potato | semmle.label | parameter this : Potato |
| Test.java:14:20:14:24 | inner : Potato | semmle.label | inner : Potato |
| Test.java:17:24:17:32 | parameter this : Potato | semmle.label | parameter this : Potato |
| Test.java:18:20:18:25 | object : Object | semmle.label | object : Object |
| Test.java:30:20:30:27 | source(...) : String | semmle.label | source(...) : String |
| Test.java:31:26:31:61 | fromJson(...) : Potato | semmle.label | fromJson(...) : Potato |
| Test.java:31:46:31:46 | s : String | semmle.label | s : String |
| Test.java:32:14:32:20 | tainted | semmle.label | tainted |
| Test.java:33:14:33:20 | tainted : Potato | semmle.label | tainted : Potato |
| Test.java:33:14:33:30 | getName(...) | semmle.label | getName(...) |
| Test.java:34:14:34:20 | tainted : Potato | semmle.label | tainted : Potato |
| Test.java:34:14:34:31 | getInner(...) | semmle.label | getInner(...) |
| Test.java:35:14:35:20 | tainted : Potato | semmle.label | tainted : Potato |
| Test.java:35:14:35:31 | getInner(...) : Potato | semmle.label | getInner(...) : Potato |
| Test.java:35:14:35:41 | getName(...) | semmle.label | getName(...) |
| Test.java:36:14:36:20 | tainted : Potato | semmle.label | tainted : Potato |
| Test.java:36:14:36:32 | getObject(...) | semmle.label | getObject(...) |
subpaths
| Test.java:33:14:33:20 | tainted : Potato | Test.java:9:24:9:30 | parameter this : Potato | Test.java:10:20:10:23 | name : String | Test.java:33:14:33:30 | getName(...) |
| Test.java:34:14:34:20 | tainted : Potato | Test.java:13:24:13:31 | parameter this : Potato | Test.java:14:20:14:24 | inner : Potato | Test.java:34:14:34:31 | getInner(...) |
| Test.java:35:14:35:20 | tainted : Potato | Test.java:13:24:13:31 | parameter this : Potato | Test.java:14:20:14:24 | inner : Potato | Test.java:35:14:35:31 | getInner(...) : Potato |
| Test.java:35:14:35:31 | getInner(...) : Potato | Test.java:9:24:9:30 | parameter this : Potato | Test.java:10:20:10:23 | name : String | Test.java:35:14:35:41 | getName(...) |
| Test.java:36:14:36:20 | tainted : Potato | Test.java:17:24:17:32 | parameter this : Potato | Test.java:18:20:18:25 | object : Object | Test.java:36:14:36:32 | getObject(...) |
testFailures

View File

@@ -1,3 +1,4 @@
import java
import TestUtilities.InlineFlowTest
import DefaultFlowTest
import TaintFlow::PathGraph

View File

@@ -0,0 +1,110 @@
models
| 1 | Summary: com.fasterxml.jackson.databind; ObjectMapper; true; convertValue; ; ; Argument[0]; ReturnValue; taint; manual |
| 2 | Summary: com.fasterxml.jackson.databind; ObjectMapper; true; valueToTree; ; ; Argument[0].MapValue; ReturnValue; taint; manual |
| 3 | Summary: com.fasterxml.jackson.databind; ObjectMapper; true; valueToTree; ; ; Argument[0].MapValue.Element; ReturnValue; taint; manual |
| 4 | Summary: java.io; FileOutputStream; true; FileOutputStream; (File); ; Argument[0]; Argument[this]; taint; df-generated |
| 5 | Summary: java.lang; String; false; String; ; ; Argument[0]; Argument[this]; taint; manual |
| 6 | Summary: java.util; Iterator; true; next; ; ; Argument[this].Element; ReturnValue; value; manual |
| 7 | Summary: java.util; Map; true; put; (Object,Object); ; Argument[1]; Argument[this].MapValue; value; manual |
edges
| Test.java:21:18:21:24 | parameter this : Potato | Test.java:22:11:22:14 | name : String | provenance | AdditionalTaintStep |
| Test.java:33:14:33:20 | taint(...) : String | Test.java:37:8:37:11 | file | provenance | TaintPreservingCallable |
| Test.java:33:14:33:20 | taint(...) : String | Test.java:40:8:40:11 | file | provenance | TaintPreservingCallable |
| Test.java:33:14:33:20 | taint(...) : String | Test.java:43:8:43:13 | writer | provenance | TaintPreservingCallable |
| Test.java:33:14:33:20 | taint(...) : String | Test.java:46:8:46:16 | generator | provenance | TaintPreservingCallable |
| Test.java:33:14:33:20 | taint(...) : String | Test.java:48:8:48:8 | t | provenance | TaintPreservingCallable |
| Test.java:33:14:33:20 | taint(...) : String | Test.java:50:37:50:38 | bs : byte[] | provenance | TaintPreservingCallable |
| Test.java:33:14:33:20 | taint(...) : String | Test.java:51:8:51:9 | bs | provenance | TaintPreservingCallable |
| Test.java:50:26:50:48 | new String(...) : String | Test.java:52:8:52:20 | reconstructed | provenance | |
| Test.java:50:37:50:38 | bs : byte[] | Test.java:50:26:50:48 | new String(...) : String | provenance | MaD:5 |
| Test.java:56:14:56:20 | taint(...) : String | Test.java:60:8:60:11 | file | provenance | TaintPreservingCallable |
| Test.java:56:14:56:20 | taint(...) : String | Test.java:61:43:61:46 | file : File | provenance | TaintPreservingCallable |
| Test.java:56:14:56:20 | taint(...) : String | Test.java:63:8:63:10 | out | provenance | TaintPreservingCallable |
| Test.java:56:14:56:20 | taint(...) : String | Test.java:66:8:66:13 | writer | provenance | TaintPreservingCallable |
| Test.java:56:14:56:20 | taint(...) : String | Test.java:69:8:69:16 | generator | provenance | TaintPreservingCallable |
| Test.java:56:14:56:20 | taint(...) : String | Test.java:71:8:71:8 | t | provenance | TaintPreservingCallable |
| Test.java:56:14:56:20 | taint(...) : String | Test.java:73:37:73:38 | bs : byte[] | provenance | TaintPreservingCallable |
| Test.java:56:14:56:20 | taint(...) : String | Test.java:74:8:74:9 | bs | provenance | TaintPreservingCallable |
| Test.java:61:22:61:47 | new FileOutputStream(...) : FileOutputStream | Test.java:63:8:63:10 | out | provenance | |
| Test.java:61:43:61:46 | file : File | Test.java:61:22:61:47 | new FileOutputStream(...) : FileOutputStream | provenance | MaD:4 |
| Test.java:73:26:73:48 | new String(...) : String | Test.java:75:8:75:20 | reconstructed | provenance | |
| Test.java:73:37:73:38 | bs : byte[] | Test.java:73:26:73:48 | new String(...) : String | provenance | MaD:5 |
| Test.java:79:14:79:20 | taint(...) : String | Test.java:82:8:82:26 | readValue(...) | provenance | TaintPreservingCallable |
| Test.java:79:14:79:20 | taint(...) : String | Test.java:83:8:83:45 | readValue(...).name | provenance | TaintPreservingCallable |
| Test.java:79:14:79:20 | taint(...) : String | Test.java:84:8:84:40 | readValue(...) : Potato | provenance | TaintPreservingCallable |
| Test.java:84:8:84:40 | readValue(...) : Potato | Test.java:21:18:21:24 | parameter this : Potato | provenance | |
| Test.java:84:8:84:40 | readValue(...) : Potato | Test.java:84:8:84:50 | getName(...) | provenance | AdditionalTaintStep |
| Test.java:88:14:88:20 | taint(...) : String | Test.java:91:8:91:27 | readValues(...) | provenance | TaintPreservingCallable |
| Test.java:88:14:88:20 | taint(...) : String | Test.java:94:15:94:23 | pIterator : MappingIterator | provenance | TaintPreservingCallable |
| Test.java:94:15:94:23 | pIterator : MappingIterator | Test.java:94:15:94:30 | next(...) : Potato | provenance | MaD:6 |
| Test.java:94:15:94:30 | next(...) : Potato | Test.java:95:9:95:9 | p | provenance | |
| Test.java:94:15:94:30 | next(...) : Potato | Test.java:96:9:96:14 | p.name | provenance | AdditionalTaintStep |
| Test.java:94:15:94:30 | next(...) : Potato | Test.java:97:9:97:9 | p : Potato | provenance | |
| Test.java:97:9:97:9 | p : Potato | Test.java:21:18:21:24 | parameter this : Potato | provenance | |
| Test.java:97:9:97:9 | p : Potato | Test.java:97:9:97:19 | getName(...) | provenance | AdditionalTaintStep |
| Test.java:102:14:102:20 | taint(...) : String | Test.java:104:29:104:29 | s : String | provenance | |
| Test.java:104:3:104:15 | taintedParams [post update] : HashMap [<map.value>] : String | Test.java:106:32:106:44 | taintedParams : HashMap [<map.value>] : String | provenance | |
| Test.java:104:29:104:29 | s : String | Test.java:104:3:104:15 | taintedParams [post update] : HashMap [<map.value>] : String | provenance | MaD:7 |
| Test.java:106:17:106:45 | valueToTree(...) : JsonNode | Test.java:107:8:107:9 | jn | provenance | |
| Test.java:106:17:106:45 | valueToTree(...) : JsonNode | Test.java:108:30:108:31 | jn : JsonNode | provenance | |
| Test.java:106:32:106:44 | taintedParams : HashMap [<map.value>] : String | Test.java:106:17:106:45 | valueToTree(...) : JsonNode | provenance | MaD:2 |
| Test.java:106:32:106:44 | taintedParams : HashMap [<map.value>] : String | Test.java:106:17:106:45 | valueToTree(...) : JsonNode | provenance | MaD:3 |
| Test.java:108:14:108:46 | convertValue(...) : Potato | Test.java:109:8:109:8 | p | provenance | |
| Test.java:108:14:108:46 | convertValue(...) : Potato | Test.java:110:8:110:8 | p : Potato | provenance | |
| Test.java:108:30:108:31 | jn : JsonNode | Test.java:108:14:108:46 | convertValue(...) : Potato | provenance | MaD:1 |
| Test.java:110:8:110:8 | p : Potato | Test.java:21:18:21:24 | parameter this : Potato | provenance | |
| Test.java:110:8:110:8 | p : Potato | Test.java:110:8:110:18 | getName(...) | provenance | AdditionalTaintStep |
nodes
| Test.java:21:18:21:24 | parameter this : Potato | semmle.label | parameter this : Potato |
| Test.java:22:11:22:14 | name : String | semmle.label | name : String |
| Test.java:33:14:33:20 | taint(...) : String | semmle.label | taint(...) : String |
| Test.java:37:8:37:11 | file | semmle.label | file |
| Test.java:40:8:40:11 | file | semmle.label | file |
| Test.java:43:8:43:13 | writer | semmle.label | writer |
| Test.java:46:8:46:16 | generator | semmle.label | generator |
| Test.java:48:8:48:8 | t | semmle.label | t |
| Test.java:50:26:50:48 | new String(...) : String | semmle.label | new String(...) : String |
| Test.java:50:37:50:38 | bs : byte[] | semmle.label | bs : byte[] |
| Test.java:51:8:51:9 | bs | semmle.label | bs |
| Test.java:52:8:52:20 | reconstructed | semmle.label | reconstructed |
| Test.java:56:14:56:20 | taint(...) : String | semmle.label | taint(...) : String |
| Test.java:60:8:60:11 | file | semmle.label | file |
| Test.java:61:22:61:47 | new FileOutputStream(...) : FileOutputStream | semmle.label | new FileOutputStream(...) : FileOutputStream |
| Test.java:61:43:61:46 | file : File | semmle.label | file : File |
| Test.java:63:8:63:10 | out | semmle.label | out |
| Test.java:66:8:66:13 | writer | semmle.label | writer |
| Test.java:69:8:69:16 | generator | semmle.label | generator |
| Test.java:71:8:71:8 | t | semmle.label | t |
| Test.java:73:26:73:48 | new String(...) : String | semmle.label | new String(...) : String |
| Test.java:73:37:73:38 | bs : byte[] | semmle.label | bs : byte[] |
| Test.java:74:8:74:9 | bs | semmle.label | bs |
| Test.java:75:8:75:20 | reconstructed | semmle.label | reconstructed |
| Test.java:79:14:79:20 | taint(...) : String | semmle.label | taint(...) : String |
| Test.java:82:8:82:26 | readValue(...) | semmle.label | readValue(...) |
| Test.java:83:8:83:45 | readValue(...).name | semmle.label | readValue(...).name |
| Test.java:84:8:84:40 | readValue(...) : Potato | semmle.label | readValue(...) : Potato |
| Test.java:84:8:84:50 | getName(...) | semmle.label | getName(...) |
| Test.java:88:14:88:20 | taint(...) : String | semmle.label | taint(...) : String |
| Test.java:91:8:91:27 | readValues(...) | semmle.label | readValues(...) |
| Test.java:94:15:94:23 | pIterator : MappingIterator | semmle.label | pIterator : MappingIterator |
| Test.java:94:15:94:30 | next(...) : Potato | semmle.label | next(...) : Potato |
| Test.java:95:9:95:9 | p | semmle.label | p |
| Test.java:96:9:96:14 | p.name | semmle.label | p.name |
| Test.java:97:9:97:9 | p : Potato | semmle.label | p : Potato |
| Test.java:97:9:97:19 | getName(...) | semmle.label | getName(...) |
| Test.java:102:14:102:20 | taint(...) : String | semmle.label | taint(...) : String |
| Test.java:104:3:104:15 | taintedParams [post update] : HashMap [<map.value>] : String | semmle.label | taintedParams [post update] : HashMap [<map.value>] : String |
| Test.java:104:29:104:29 | s : String | semmle.label | s : String |
| Test.java:106:17:106:45 | valueToTree(...) : JsonNode | semmle.label | valueToTree(...) : JsonNode |
| Test.java:106:32:106:44 | taintedParams : HashMap [<map.value>] : String | semmle.label | taintedParams : HashMap [<map.value>] : String |
| Test.java:107:8:107:9 | jn | semmle.label | jn |
| Test.java:108:14:108:46 | convertValue(...) : Potato | semmle.label | convertValue(...) : Potato |
| Test.java:108:30:108:31 | jn : JsonNode | semmle.label | jn : JsonNode |
| Test.java:109:8:109:8 | p | semmle.label | p |
| Test.java:110:8:110:8 | p : Potato | semmle.label | p : Potato |
| Test.java:110:8:110:18 | getName(...) | semmle.label | getName(...) |
subpaths
| Test.java:84:8:84:40 | readValue(...) : Potato | Test.java:21:18:21:24 | parameter this : Potato | Test.java:22:11:22:14 | name : String | Test.java:84:8:84:50 | getName(...) |
| Test.java:97:9:97:9 | p : Potato | Test.java:21:18:21:24 | parameter this : Potato | Test.java:22:11:22:14 | name : String | Test.java:97:9:97:19 | getName(...) |
| Test.java:110:8:110:8 | p : Potato | Test.java:21:18:21:24 | parameter this : Potato | Test.java:22:11:22:14 | name : String | Test.java:110:8:110:18 | getName(...) |
testFailures

View File

@@ -1,3 +1,4 @@
import java
import TestUtilities.InlineFlowTest
import DefaultFlowTest
import TaintFlow::PathGraph

View File

@@ -0,0 +1,33 @@
models
| 1 | Summary: java.lang; Iterable; true; forEach; (Consumer); ; Argument[this].Element; Argument[0].Parameter[0]; value; manual |
| 2 | Summary: java.util; Collection; true; add; ; ; Argument[0]; Argument[this].Element; value; manual |
edges
| A.java:13:28:13:35 | x : String | A.java:14:11:14:11 | x : String | provenance | |
| A.java:14:11:14:11 | x : String | A.java:22:16:22:16 | x : String | provenance | |
| A.java:17:33:17:40 | x : String | A.java:18:14:18:14 | x : String | provenance | |
| A.java:18:14:18:14 | x : String | A.java:13:28:13:35 | x : String | provenance | |
| A.java:22:16:22:16 | x : String | A.java:22:28:22:28 | x | provenance | |
| A.java:22:35:22:45 | source(...) : String | A.java:17:33:17:40 | x : String | provenance | |
| A.java:28:21:28:34 | l : ArrayList [<element>] : String | A.java:29:5:29:5 | l : ArrayList [<element>] : String | provenance | |
| A.java:29:5:29:5 | l : ArrayList [<element>] : String | A.java:37:27:37:27 | x : String | provenance | MaD:1 |
| A.java:34:5:34:11 | tainted [post update] : ArrayList [<element>] : String | A.java:37:18:37:24 | tainted : ArrayList [<element>] : String | provenance | |
| A.java:34:17:34:27 | source(...) : String | A.java:34:5:34:11 | tainted [post update] : ArrayList [<element>] : String | provenance | MaD:2 |
| A.java:37:18:37:24 | tainted : ArrayList [<element>] : String | A.java:28:21:28:34 | l : ArrayList [<element>] : String | provenance | |
| A.java:37:27:37:27 | x : String | A.java:37:39:37:39 | x | provenance | |
nodes
| A.java:13:28:13:35 | x : String | semmle.label | x : String |
| A.java:14:11:14:11 | x : String | semmle.label | x : String |
| A.java:17:33:17:40 | x : String | semmle.label | x : String |
| A.java:18:14:18:14 | x : String | semmle.label | x : String |
| A.java:22:16:22:16 | x : String | semmle.label | x : String |
| A.java:22:28:22:28 | x | semmle.label | x |
| A.java:22:35:22:45 | source(...) : String | semmle.label | source(...) : String |
| A.java:28:21:28:34 | l : ArrayList [<element>] : String | semmle.label | l : ArrayList [<element>] : String |
| A.java:29:5:29:5 | l : ArrayList [<element>] : String | semmle.label | l : ArrayList [<element>] : String |
| A.java:34:5:34:11 | tainted [post update] : ArrayList [<element>] : String | semmle.label | tainted [post update] : ArrayList [<element>] : String |
| A.java:34:17:34:27 | source(...) : String | semmle.label | source(...) : String |
| A.java:37:18:37:24 | tainted : ArrayList [<element>] : String | semmle.label | tainted : ArrayList [<element>] : String |
| A.java:37:27:37:27 | x : String | semmle.label | x : String |
| A.java:37:39:37:39 | x | semmle.label | x |
subpaths
testFailures

View File

@@ -1,2 +1,3 @@
import TestUtilities.InlineFlowTest
import DefaultFlowTest
import TaintFlow::PathGraph