mirror of
https://github.com/github/codeql.git
synced 2026-04-22 07:15:15 +02:00
Merge branch 'main' into redsun82/kotlin
This commit is contained in:
@@ -1 +1 @@
|
||||
7.1.0
|
||||
7.1.2
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
description: Revert support for repeated initializers, which are allowed in C with designated initializers.
|
||||
compatibility: full
|
||||
aggregate_field_init.rel: reorder aggregate_field_init.rel (int aggregate, int initializer, int field, int position) aggregate initializer field
|
||||
aggregate_array_init.rel: reorder aggregate_array_init.rel (int aggregate, int initializer, int element_index, int position) aggregate initializer element_index
|
||||
aggregate_field_init.rel: reorder aggregate_field_init.rel (@aggregateliteral aggregate, @expr initializer, @membervariable field, int position) aggregate initializer field
|
||||
aggregate_array_init.rel: reorder aggregate_array_init.rel (@aggregateliteral aggregate, @expr initializer, int element_index, int position) aggregate initializer element_index
|
||||
|
||||
@@ -546,7 +546,7 @@ module ProductFlow {
|
||||
Flow1::PathGraph::edges(pred1, succ1, _, _) and
|
||||
exists(ReturnKindExt returnKind |
|
||||
succ1.getNode() = returnKind.getAnOutNode(call) and
|
||||
pred1.getNode().(ReturnNodeExt).getKind() = returnKind
|
||||
paramReturnNode(_, pred1.asParameterReturnNode(), _, returnKind)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -574,7 +574,7 @@ module ProductFlow {
|
||||
Flow2::PathGraph::edges(pred2, succ2, _, _) and
|
||||
exists(ReturnKindExt returnKind |
|
||||
succ2.getNode() = returnKind.getAnOutNode(call) and
|
||||
pred2.getNode().(ReturnNodeExt).getKind() = returnKind
|
||||
paramReturnNode(_, pred2.asParameterReturnNode(), _, returnKind)
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
description: Removed unused column from the `folders` and `files` relations
|
||||
compatibility: full
|
||||
files.rel: reorder files.rel (int id, string name, string simple, string ext, int fromSource) id name
|
||||
folders.rel: reorder folders.rel (int id, string name, string simple) id name
|
||||
files.rel: reorder files.rel (@file id, string name, string simple, string ext, int fromSource) id name
|
||||
folders.rel: reorder folders.rel (@folder id, string name, string simple) id name
|
||||
@@ -54,6 +54,7 @@ predicate undefinedLocalUse(VariableAccess va) {
|
||||
// it is hard to tell when a struct or array has been initialized, so we
|
||||
// ignore them
|
||||
not isAggregateType(lv.getUnderlyingType()) and
|
||||
not lv.isStatic() and // static variables are initialized to zero or null by default
|
||||
not lv.getType().hasName("va_list") and
|
||||
va = lv.getAnAccess() and
|
||||
noDefPath(lv, va) and
|
||||
@@ -70,7 +71,8 @@ predicate uninitialisedGlobal(GlobalVariable gv) {
|
||||
va = gv.getAnAccess() and
|
||||
va.isRValue() and
|
||||
not gv.hasInitializer() and
|
||||
not gv.hasSpecifier("extern")
|
||||
not gv.hasSpecifier("extern") and
|
||||
not gv.isStatic() // static variables are initialized to zero or null by default
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ in the previous example, one solution is to make the log message a trailing argu
|
||||
<p>An alternative solution is to allow <code>log_with_timestamp</code> to accept format arguments:</p>
|
||||
<sample src="NonConstantFormat-2-good.c" />
|
||||
<p>In this formulation, the non-constant format string to <code>printf</code> has been replaced with
|
||||
a non-constant format string to <code>vprintf</code>. Semmle will no longer consider the body of
|
||||
a non-constant format string to <code>vprintf</code>. The analysis will no longer consider the body of
|
||||
<code>log_with_timestamp</code> to be a problem, and will instead check that every call to
|
||||
<code>log_with_timestamp</code> passes a constant format string.</p>
|
||||
|
||||
|
||||
@@ -107,7 +107,7 @@ class SnprintfSizeExpr extends BufferAccess, FunctionCall {
|
||||
}
|
||||
|
||||
class MemcmpSizeExpr extends BufferAccess, FunctionCall {
|
||||
MemcmpSizeExpr() { this.getTarget().hasName("Memcmp") }
|
||||
MemcmpSizeExpr() { this.getTarget().hasName("memcmp") }
|
||||
|
||||
override Expr getPointer() {
|
||||
result = this.getArgument(0) or
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
---
|
||||
category: minorAnalysis
|
||||
---
|
||||
* The "Variable not initialized before use" query (`cpp/not-initialised`) no longer reports an alert on static variables.
|
||||
@@ -1,7 +1,9 @@
|
||||
edges
|
||||
| A.cpp:23:10:23:10 | c | A.cpp:25:7:25:17 | ... = ... | provenance | |
|
||||
| A.cpp:25:7:25:10 | *this [post update] [c] | A.cpp:23:5:23:5 | *this [Return] [c] | provenance | |
|
||||
| A.cpp:25:7:25:17 | ... = ... | A.cpp:25:7:25:10 | *this [post update] [c] | provenance | |
|
||||
| A.cpp:27:17:27:17 | c | A.cpp:27:22:27:32 | ... = ... | provenance | |
|
||||
| A.cpp:27:22:27:25 | *this [post update] [c] | A.cpp:27:10:27:12 | *this [Return] [c] | provenance | |
|
||||
| A.cpp:27:22:27:32 | ... = ... | A.cpp:27:22:27:25 | *this [post update] [c] | provenance | |
|
||||
| A.cpp:28:8:28:10 | *this [c] | A.cpp:28:23:28:26 | *this [c] | provenance | |
|
||||
| A.cpp:28:23:28:26 | *this [c] | A.cpp:28:29:28:29 | c | provenance | |
|
||||
@@ -66,23 +68,28 @@ edges
|
||||
| A.cpp:112:7:112:13 | *... = ... [a] | A.cpp:118:18:118:39 | *cc [a] | provenance | |
|
||||
| A.cpp:118:18:118:39 | *cc [a] | A.cpp:120:12:120:13 | *c1 [a] | provenance | |
|
||||
| A.cpp:120:12:120:13 | *c1 [a] | A.cpp:120:12:120:16 | a | provenance | |
|
||||
| A.cpp:124:14:124:14 | *b [Return] [c] | A.cpp:131:8:131:8 | f7 output argument [c] | provenance | |
|
||||
| A.cpp:124:14:124:14 | *b [c] | A.cpp:131:8:131:8 | f7 output argument [c] | provenance | |
|
||||
| A.cpp:126:5:126:5 | set output argument [c] | A.cpp:124:14:124:14 | *b [Return] [c] | provenance | |
|
||||
| A.cpp:126:5:126:5 | set output argument [c] | A.cpp:124:14:124:14 | *b [c] | provenance | |
|
||||
| A.cpp:126:5:126:5 | set output argument [c] | A.cpp:131:8:131:8 | f7 output argument [c] | provenance | |
|
||||
| A.cpp:126:12:126:18 | new | A.cpp:27:17:27:17 | c | provenance | |
|
||||
| A.cpp:126:12:126:18 | new | A.cpp:126:5:126:5 | set output argument [c] | provenance | |
|
||||
| A.cpp:126:12:126:18 | new | A.cpp:126:12:126:18 | new | provenance | |
|
||||
| A.cpp:131:8:131:8 | f7 output argument [c] | A.cpp:132:10:132:10 | *b [c] | provenance | |
|
||||
| A.cpp:132:10:132:10 | *b [c] | A.cpp:132:10:132:13 | c | provenance | |
|
||||
| A.cpp:140:5:140:5 | *this [Return] [*b, c] | A.cpp:151:12:151:24 | call to D [*b, c] | provenance | |
|
||||
| A.cpp:140:5:140:5 | *this [Return] [b] | A.cpp:151:12:151:24 | call to D [b] | provenance | |
|
||||
| A.cpp:140:13:140:13 | *b [Return] [c] | A.cpp:151:18:151:18 | D output argument [c] | provenance | |
|
||||
| A.cpp:140:13:140:13 | *b [c] | A.cpp:151:18:151:18 | D output argument [c] | provenance | |
|
||||
| A.cpp:140:13:140:13 | b | A.cpp:143:7:143:31 | ... = ... | provenance | |
|
||||
| A.cpp:142:7:142:7 | *b [post update] [c] | A.cpp:140:13:140:13 | *b [Return] [c] | provenance | |
|
||||
| A.cpp:142:7:142:7 | *b [post update] [c] | A.cpp:140:13:140:13 | *b [c] | provenance | |
|
||||
| A.cpp:142:7:142:7 | *b [post update] [c] | A.cpp:143:7:143:31 | *... = ... [c] | provenance | |
|
||||
| A.cpp:142:7:142:7 | *b [post update] [c] | A.cpp:151:18:151:18 | D output argument [c] | provenance | |
|
||||
| A.cpp:142:7:142:20 | ... = ... | A.cpp:142:7:142:7 | *b [post update] [c] | provenance | |
|
||||
| A.cpp:142:14:142:20 | new | A.cpp:142:7:142:20 | ... = ... | provenance | |
|
||||
| A.cpp:143:7:143:10 | *this [post update] [*b, c] | A.cpp:151:12:151:24 | call to D [*b, c] | provenance | |
|
||||
| A.cpp:143:7:143:10 | *this [post update] [b] | A.cpp:151:12:151:24 | call to D [b] | provenance | |
|
||||
| A.cpp:143:7:143:10 | *this [post update] [*b, c] | A.cpp:140:5:140:5 | *this [Return] [*b, c] | provenance | |
|
||||
| A.cpp:143:7:143:10 | *this [post update] [b] | A.cpp:140:5:140:5 | *this [Return] [b] | provenance | |
|
||||
| A.cpp:143:7:143:10 | *this [post update] [b] | A.cpp:140:5:140:5 | *this [Return] [b] | provenance | |
|
||||
| A.cpp:143:7:143:31 | *... = ... [c] | A.cpp:143:7:143:10 | *this [post update] [*b, c] | provenance | |
|
||||
| A.cpp:143:7:143:31 | ... = ... | A.cpp:143:7:143:10 | *this [post update] [b] | provenance | |
|
||||
| A.cpp:143:7:143:31 | ... = ... | A.cpp:143:7:143:10 | *this [post update] [b] | provenance | |
|
||||
@@ -138,7 +145,10 @@ edges
|
||||
| A.cpp:181:15:181:21 | newHead | A.cpp:183:7:183:20 | ... = ... | provenance | |
|
||||
| A.cpp:181:32:181:35 | *next [*next, head] | A.cpp:184:7:184:23 | *... = ... [*next, head] | provenance | |
|
||||
| A.cpp:181:32:181:35 | *next [head] | A.cpp:184:7:184:23 | *... = ... [head] | provenance | |
|
||||
| A.cpp:183:7:183:10 | *this [post update] [head] | A.cpp:181:5:181:10 | *this [Return] [head] | provenance | |
|
||||
| A.cpp:183:7:183:20 | ... = ... | A.cpp:183:7:183:10 | *this [post update] [head] | provenance | |
|
||||
| A.cpp:184:7:184:10 | *this [post update] [*next, *next, head] | A.cpp:181:5:181:10 | *this [Return] [*next, *next, head] | provenance | |
|
||||
| A.cpp:184:7:184:10 | *this [post update] [*next, head] | A.cpp:181:5:181:10 | *this [Return] [*next, head] | provenance | |
|
||||
| A.cpp:184:7:184:23 | *... = ... [*next, head] | A.cpp:184:7:184:10 | *this [post update] [*next, *next, head] | provenance | |
|
||||
| A.cpp:184:7:184:23 | *... = ... [head] | A.cpp:184:7:184:10 | *this [post update] [*next, head] | provenance | |
|
||||
| B.cpp:6:15:6:24 | new | B.cpp:6:15:6:24 | new | provenance | |
|
||||
@@ -167,10 +177,14 @@ edges
|
||||
| B.cpp:19:14:19:17 | *box1 [elem2] | B.cpp:19:10:19:24 | elem2 | provenance | |
|
||||
| B.cpp:33:16:33:17 | e1 | B.cpp:35:7:35:22 | ... = ... | provenance | |
|
||||
| B.cpp:33:26:33:27 | e2 | B.cpp:36:7:36:22 | ... = ... | provenance | |
|
||||
| B.cpp:35:7:35:10 | *this [post update] [elem1] | B.cpp:33:5:33:8 | *this [Return] [elem1] | provenance | |
|
||||
| B.cpp:35:7:35:22 | ... = ... | B.cpp:35:7:35:10 | *this [post update] [elem1] | provenance | |
|
||||
| B.cpp:36:7:36:10 | *this [post update] [elem2] | B.cpp:33:5:33:8 | *this [Return] [elem2] | provenance | |
|
||||
| B.cpp:36:7:36:22 | ... = ... | B.cpp:36:7:36:10 | *this [post update] [elem2] | provenance | |
|
||||
| B.cpp:44:16:44:17 | *b1 [elem1] | B.cpp:46:7:46:21 | *... = ... [elem1] | provenance | |
|
||||
| B.cpp:44:16:44:17 | *b1 [elem2] | B.cpp:46:7:46:21 | *... = ... [elem2] | provenance | |
|
||||
| B.cpp:46:7:46:10 | *this [post update] [*box1, elem1] | B.cpp:44:5:44:8 | *this [Return] [*box1, elem1] | provenance | |
|
||||
| B.cpp:46:7:46:10 | *this [post update] [*box1, elem2] | B.cpp:44:5:44:8 | *this [Return] [*box1, elem2] | provenance | |
|
||||
| B.cpp:46:7:46:21 | *... = ... [elem1] | B.cpp:46:7:46:10 | *this [post update] [*box1, elem1] | provenance | |
|
||||
| B.cpp:46:7:46:21 | *... = ... [elem2] | B.cpp:46:7:46:10 | *this [post update] [*box1, elem2] | provenance | |
|
||||
| C.cpp:18:12:18:18 | *new [s1] | C.cpp:19:5:19:5 | *c [s1] | provenance | |
|
||||
@@ -179,10 +193,12 @@ edges
|
||||
| C.cpp:18:12:18:18 | call to C [s3] | C.cpp:18:12:18:18 | *new [s3] | provenance | |
|
||||
| C.cpp:19:5:19:5 | *c [s1] | C.cpp:27:8:27:11 | *this [s1] | provenance | |
|
||||
| C.cpp:19:5:19:5 | *c [s3] | C.cpp:27:8:27:11 | *this [s3] | provenance | |
|
||||
| C.cpp:22:3:22:3 | *this [post update] [s1] | C.cpp:18:12:18:18 | call to C [s1] | provenance | |
|
||||
| C.cpp:22:3:22:3 | *this [Return] [s1] | C.cpp:18:12:18:18 | call to C [s1] | provenance | |
|
||||
| C.cpp:22:3:22:3 | *this [Return] [s3] | C.cpp:18:12:18:18 | call to C [s3] | provenance | |
|
||||
| C.cpp:22:3:22:3 | *this [post update] [s1] | C.cpp:22:3:22:3 | *this [Return] [s1] | provenance | |
|
||||
| C.cpp:22:12:22:21 | new | C.cpp:22:3:22:3 | *this [post update] [s1] | provenance | |
|
||||
| C.cpp:22:12:22:21 | new | C.cpp:22:12:22:21 | new | provenance | |
|
||||
| C.cpp:24:5:24:8 | *this [post update] [s3] | C.cpp:18:12:18:18 | call to C [s3] | provenance | |
|
||||
| C.cpp:24:5:24:8 | *this [post update] [s3] | C.cpp:22:3:22:3 | *this [Return] [s3] | provenance | |
|
||||
| C.cpp:24:5:24:25 | ... = ... | C.cpp:24:5:24:8 | *this [post update] [s3] | provenance | |
|
||||
| C.cpp:24:16:24:25 | new | C.cpp:24:5:24:25 | ... = ... | provenance | |
|
||||
| C.cpp:27:8:27:11 | *this [s1] | C.cpp:29:10:29:11 | *this [s1] | provenance | |
|
||||
@@ -194,6 +210,7 @@ edges
|
||||
| D.cpp:10:30:10:33 | elem | D.cpp:10:11:10:17 | *getElem | provenance | |
|
||||
| D.cpp:10:30:10:33 | elem | D.cpp:10:30:10:33 | elem | provenance | |
|
||||
| D.cpp:11:24:11:24 | e | D.cpp:11:29:11:36 | ... = ... | provenance | |
|
||||
| D.cpp:11:29:11:32 | *this [post update] [elem] | D.cpp:11:10:11:16 | *this [Return] [elem] | provenance | |
|
||||
| D.cpp:11:29:11:36 | ... = ... | D.cpp:11:29:11:32 | *this [post update] [elem] | provenance | |
|
||||
| D.cpp:17:11:17:17 | *this [*box, elem] | D.cpp:17:30:17:32 | *this [*box, elem] | provenance | |
|
||||
| D.cpp:17:30:17:32 | *box [elem] | D.cpp:17:11:17:17 | **getBox1 [elem] | provenance | |
|
||||
@@ -252,14 +269,16 @@ edges
|
||||
| E.cpp:30:23:30:26 | *data [post update] [*buffer] | E.cpp:30:21:30:21 | *p [post update] [data, *buffer] | provenance | |
|
||||
| E.cpp:32:10:32:10 | *b [*buffer] | E.cpp:32:13:32:18 | *buffer | provenance | |
|
||||
| E.cpp:33:18:33:19 | *& ... [data, *buffer] | E.cpp:19:27:19:27 | *p [data, *buffer] | provenance | |
|
||||
| aliasing.cpp:8:23:8:23 | *s [Return] [m1] | aliasing.cpp:25:17:25:19 | pointerSetter output argument [m1] | provenance | |
|
||||
| aliasing.cpp:8:23:8:23 | *s [m1] | aliasing.cpp:25:17:25:19 | pointerSetter output argument [m1] | provenance | |
|
||||
| aliasing.cpp:9:3:9:3 | *s [post update] [m1] | aliasing.cpp:8:23:8:23 | *s [Return] [m1] | provenance | |
|
||||
| aliasing.cpp:9:3:9:3 | *s [post update] [m1] | aliasing.cpp:8:23:8:23 | *s [m1] | provenance | |
|
||||
| aliasing.cpp:9:3:9:3 | *s [post update] [m1] | aliasing.cpp:25:17:25:19 | pointerSetter output argument [m1] | provenance | |
|
||||
| aliasing.cpp:9:3:9:22 | ... = ... | aliasing.cpp:9:3:9:3 | *s [post update] [m1] | provenance | |
|
||||
| aliasing.cpp:9:11:9:20 | call to user_input | aliasing.cpp:9:3:9:22 | ... = ... | provenance | |
|
||||
| aliasing.cpp:12:25:12:25 | *s [Return] [m1] | aliasing.cpp:26:19:26:20 | referenceSetter output argument [m1] | provenance | |
|
||||
| aliasing.cpp:12:25:12:25 | *s [m1] | aliasing.cpp:26:19:26:20 | referenceSetter output argument [m1] | provenance | |
|
||||
| aliasing.cpp:13:3:13:3 | *s [post update] [m1] | aliasing.cpp:12:25:12:25 | *s [Return] [m1] | provenance | |
|
||||
| aliasing.cpp:13:3:13:3 | *s [post update] [m1] | aliasing.cpp:12:25:12:25 | *s [m1] | provenance | |
|
||||
| aliasing.cpp:13:3:13:3 | *s [post update] [m1] | aliasing.cpp:26:19:26:20 | referenceSetter output argument [m1] | provenance | |
|
||||
| aliasing.cpp:13:3:13:21 | ... = ... | aliasing.cpp:13:3:13:3 | *s [post update] [m1] | provenance | |
|
||||
| aliasing.cpp:13:10:13:19 | call to user_input | aliasing.cpp:13:3:13:21 | ... = ... | provenance | |
|
||||
| aliasing.cpp:25:17:25:19 | pointerSetter output argument [m1] | aliasing.cpp:29:8:29:9 | *s1 [m1] | provenance | |
|
||||
@@ -376,14 +395,18 @@ edges
|
||||
| arrays.cpp:50:10:50:17 | *indirect [*ptr, data] | arrays.cpp:50:20:50:22 | *ptr [data] | provenance | |
|
||||
| arrays.cpp:50:20:50:22 | *ptr [data] | arrays.cpp:50:8:50:25 | *access to array [data] | provenance | |
|
||||
| by_reference.cpp:11:48:11:52 | value | by_reference.cpp:12:5:12:16 | ... = ... | provenance | |
|
||||
| by_reference.cpp:12:5:12:5 | *s [post update] [a] | by_reference.cpp:11:39:11:39 | *s [Return] [a] | provenance | |
|
||||
| by_reference.cpp:12:5:12:5 | *s [post update] [a] | by_reference.cpp:11:39:11:39 | *s [a] | provenance | |
|
||||
| by_reference.cpp:12:5:12:16 | ... = ... | by_reference.cpp:12:5:12:5 | *s [post update] [a] | provenance | |
|
||||
| by_reference.cpp:15:26:15:30 | value | by_reference.cpp:16:5:16:19 | ... = ... | provenance | |
|
||||
| by_reference.cpp:16:5:16:8 | *this [post update] [a] | by_reference.cpp:15:8:15:18 | *this [Return] [a] | provenance | |
|
||||
| by_reference.cpp:16:5:16:19 | ... = ... | by_reference.cpp:16:5:16:8 | *this [post update] [a] | provenance | |
|
||||
| by_reference.cpp:19:28:19:32 | value | by_reference.cpp:20:23:20:27 | value | provenance | |
|
||||
| by_reference.cpp:20:5:20:8 | setDirectly output argument [a] | by_reference.cpp:19:8:19:20 | *this [Return] [a] | provenance | |
|
||||
| by_reference.cpp:20:23:20:27 | value | by_reference.cpp:15:26:15:30 | value | provenance | |
|
||||
| by_reference.cpp:20:23:20:27 | value | by_reference.cpp:20:5:20:8 | setDirectly output argument [a] | provenance | |
|
||||
| by_reference.cpp:23:34:23:38 | value | by_reference.cpp:24:25:24:29 | value | provenance | |
|
||||
| by_reference.cpp:24:19:24:22 | nonMemberSetA output argument [a] | by_reference.cpp:23:8:23:26 | *this [Return] [a] | provenance | |
|
||||
| by_reference.cpp:24:25:24:29 | value | by_reference.cpp:11:48:11:52 | value | provenance | |
|
||||
| by_reference.cpp:24:25:24:29 | value | by_reference.cpp:24:19:24:22 | nonMemberSetA output argument [a] | provenance | |
|
||||
| by_reference.cpp:31:46:31:46 | *s [a] | by_reference.cpp:32:12:32:12 | *s [a] | provenance | |
|
||||
@@ -424,26 +447,28 @@ edges
|
||||
| by_reference.cpp:68:21:68:30 | call to user_input | by_reference.cpp:68:17:68:18 | nonMemberSetA output argument [a] | provenance | |
|
||||
| by_reference.cpp:69:22:69:23 | *& ... [a] | by_reference.cpp:31:46:31:46 | *s [a] | provenance | |
|
||||
| by_reference.cpp:69:22:69:23 | *& ... [a] | by_reference.cpp:69:8:69:20 | call to nonMemberGetA | provenance | |
|
||||
| by_reference.cpp:83:31:83:35 | *inner [Return] [a] | by_reference.cpp:102:21:102:39 | taint_inner_a_ptr output argument [a] | provenance | |
|
||||
| by_reference.cpp:83:31:83:35 | *inner [Return] [a] | by_reference.cpp:103:27:103:35 | taint_inner_a_ptr output argument [a] | provenance | |
|
||||
| by_reference.cpp:83:31:83:35 | *inner [Return] [a] | by_reference.cpp:106:21:106:41 | taint_inner_a_ptr output argument [a] | provenance | |
|
||||
| by_reference.cpp:83:31:83:35 | *inner [Return] [a] | by_reference.cpp:107:29:107:37 | taint_inner_a_ptr output argument [a] | provenance | |
|
||||
| by_reference.cpp:83:31:83:35 | *inner [a] | by_reference.cpp:102:21:102:39 | taint_inner_a_ptr output argument [a] | provenance | |
|
||||
| by_reference.cpp:83:31:83:35 | *inner [a] | by_reference.cpp:103:27:103:35 | taint_inner_a_ptr output argument [a] | provenance | |
|
||||
| by_reference.cpp:83:31:83:35 | *inner [a] | by_reference.cpp:106:21:106:41 | taint_inner_a_ptr output argument [a] | provenance | |
|
||||
| by_reference.cpp:83:31:83:35 | *inner [a] | by_reference.cpp:107:29:107:37 | taint_inner_a_ptr output argument [a] | provenance | |
|
||||
| by_reference.cpp:84:3:84:7 | *inner [post update] [a] | by_reference.cpp:83:31:83:35 | *inner [Return] [a] | provenance | |
|
||||
| by_reference.cpp:84:3:84:7 | *inner [post update] [a] | by_reference.cpp:83:31:83:35 | *inner [a] | provenance | |
|
||||
| by_reference.cpp:84:3:84:7 | *inner [post update] [a] | by_reference.cpp:102:21:102:39 | taint_inner_a_ptr output argument [a] | provenance | |
|
||||
| by_reference.cpp:84:3:84:7 | *inner [post update] [a] | by_reference.cpp:103:27:103:35 | taint_inner_a_ptr output argument [a] | provenance | |
|
||||
| by_reference.cpp:84:3:84:7 | *inner [post update] [a] | by_reference.cpp:106:21:106:41 | taint_inner_a_ptr output argument [a] | provenance | |
|
||||
| by_reference.cpp:84:3:84:7 | *inner [post update] [a] | by_reference.cpp:107:29:107:37 | taint_inner_a_ptr output argument [a] | provenance | |
|
||||
| by_reference.cpp:84:3:84:25 | ... = ... | by_reference.cpp:84:3:84:7 | *inner [post update] [a] | provenance | |
|
||||
| by_reference.cpp:84:14:84:23 | call to user_input | by_reference.cpp:84:3:84:25 | ... = ... | provenance | |
|
||||
| by_reference.cpp:87:31:87:35 | *inner [Return] [a] | by_reference.cpp:122:21:122:38 | taint_inner_a_ref output argument [a] | provenance | |
|
||||
| by_reference.cpp:87:31:87:35 | *inner [Return] [a] | by_reference.cpp:123:21:123:36 | taint_inner_a_ref output argument [a] | provenance | |
|
||||
| by_reference.cpp:87:31:87:35 | *inner [Return] [a] | by_reference.cpp:126:21:126:40 | taint_inner_a_ref output argument [a] | provenance | |
|
||||
| by_reference.cpp:87:31:87:35 | *inner [Return] [a] | by_reference.cpp:127:21:127:38 | taint_inner_a_ref output argument [a] | provenance | |
|
||||
| by_reference.cpp:87:31:87:35 | *inner [a] | by_reference.cpp:122:21:122:38 | taint_inner_a_ref output argument [a] | provenance | |
|
||||
| by_reference.cpp:87:31:87:35 | *inner [a] | by_reference.cpp:123:21:123:36 | taint_inner_a_ref output argument [a] | provenance | |
|
||||
| by_reference.cpp:87:31:87:35 | *inner [a] | by_reference.cpp:126:21:126:40 | taint_inner_a_ref output argument [a] | provenance | |
|
||||
| by_reference.cpp:87:31:87:35 | *inner [a] | by_reference.cpp:127:21:127:38 | taint_inner_a_ref output argument [a] | provenance | |
|
||||
| by_reference.cpp:88:3:88:7 | *inner [post update] [a] | by_reference.cpp:87:31:87:35 | *inner [Return] [a] | provenance | |
|
||||
| by_reference.cpp:88:3:88:7 | *inner [post update] [a] | by_reference.cpp:87:31:87:35 | *inner [a] | provenance | |
|
||||
| by_reference.cpp:88:3:88:7 | *inner [post update] [a] | by_reference.cpp:122:21:122:38 | taint_inner_a_ref output argument [a] | provenance | |
|
||||
| by_reference.cpp:88:3:88:7 | *inner [post update] [a] | by_reference.cpp:123:21:123:36 | taint_inner_a_ref output argument [a] | provenance | |
|
||||
| by_reference.cpp:88:3:88:7 | *inner [post update] [a] | by_reference.cpp:126:21:126:40 | taint_inner_a_ref output argument [a] | provenance | |
|
||||
| by_reference.cpp:88:3:88:7 | *inner [post update] [a] | by_reference.cpp:127:21:127:38 | taint_inner_a_ref output argument [a] | provenance | |
|
||||
| by_reference.cpp:88:3:88:24 | ... = ... | by_reference.cpp:88:3:88:7 | *inner [post update] [a] | provenance | |
|
||||
| by_reference.cpp:88:13:88:22 | call to user_input | by_reference.cpp:88:3:88:24 | ... = ... | provenance | |
|
||||
| by_reference.cpp:91:25:91:26 | *pa | by_reference.cpp:104:15:104:22 | taint_a_ptr output argument | provenance | |
|
||||
@@ -599,8 +624,10 @@ edges
|
||||
| complex.cpp:10:20:10:21 | b_ | complex.cpp:10:7:10:7 | *b | provenance | |
|
||||
| complex.cpp:10:20:10:21 | b_ | complex.cpp:10:20:10:21 | b_ | provenance | |
|
||||
| complex.cpp:11:17:11:17 | a | complex.cpp:11:22:11:27 | ... = ... | provenance | |
|
||||
| complex.cpp:11:22:11:23 | *this [post update] [a_] | complex.cpp:11:8:11:11 | *this [Return] [a_] | provenance | |
|
||||
| complex.cpp:11:22:11:27 | ... = ... | complex.cpp:11:22:11:23 | *this [post update] [a_] | provenance | |
|
||||
| complex.cpp:12:17:12:17 | b | complex.cpp:12:22:12:27 | ... = ... | provenance | |
|
||||
| complex.cpp:12:22:12:23 | *this [post update] [b_] | complex.cpp:12:8:12:11 | *this [Return] [b_] | provenance | |
|
||||
| complex.cpp:12:22:12:27 | ... = ... | complex.cpp:12:22:12:23 | *this [post update] [b_] | provenance | |
|
||||
| complex.cpp:40:17:40:17 | *b [inner, f, a_] | complex.cpp:42:8:42:8 | *b [inner, f, a_] | provenance | |
|
||||
| complex.cpp:40:17:40:17 | *b [inner, f, b_] | complex.cpp:43:8:43:8 | *b [inner, f, b_] | provenance | |
|
||||
@@ -669,6 +696,8 @@ edges
|
||||
| constructors.cpp:19:22:19:23 | *this [b_] | constructors.cpp:19:22:19:23 | b_ | provenance | |
|
||||
| constructors.cpp:19:22:19:23 | b_ | constructors.cpp:19:9:19:9 | *b | provenance | |
|
||||
| constructors.cpp:19:22:19:23 | b_ | constructors.cpp:19:22:19:23 | b_ | provenance | |
|
||||
| constructors.cpp:23:5:23:7 | *this [post update] [a_] | constructors.cpp:23:5:23:7 | *this [Return] [a_] | provenance | |
|
||||
| constructors.cpp:23:5:23:7 | *this [post update] [b_] | constructors.cpp:23:5:23:7 | *this [Return] [b_] | provenance | |
|
||||
| constructors.cpp:23:13:23:13 | a | constructors.cpp:23:28:23:28 | a | provenance | |
|
||||
| constructors.cpp:23:20:23:20 | b | constructors.cpp:23:35:23:35 | b | provenance | |
|
||||
| constructors.cpp:23:28:23:28 | a | constructors.cpp:23:5:23:7 | *this [post update] [a_] | provenance | |
|
||||
@@ -696,11 +725,14 @@ edges
|
||||
| constructors.cpp:46:9:46:9 | *h [a_] | constructors.cpp:26:15:26:15 | *f [a_] | provenance | |
|
||||
| constructors.cpp:46:9:46:9 | *h [b_] | constructors.cpp:26:15:26:15 | *f [b_] | provenance | |
|
||||
| qualifiers.cpp:9:21:9:25 | value | qualifiers.cpp:9:30:9:44 | ... = ... | provenance | |
|
||||
| qualifiers.cpp:9:30:9:33 | *this [post update] [a] | qualifiers.cpp:9:10:9:13 | *this [Return] [a] | provenance | |
|
||||
| qualifiers.cpp:9:30:9:44 | ... = ... | qualifiers.cpp:9:30:9:33 | *this [post update] [a] | provenance | |
|
||||
| qualifiers.cpp:12:40:12:44 | value | qualifiers.cpp:12:49:12:64 | ... = ... | provenance | |
|
||||
| qualifiers.cpp:12:49:12:53 | *inner [post update] [a] | qualifiers.cpp:12:27:12:31 | *inner [Return] [a] | provenance | |
|
||||
| qualifiers.cpp:12:49:12:53 | *inner [post update] [a] | qualifiers.cpp:12:27:12:31 | *inner [a] | provenance | |
|
||||
| qualifiers.cpp:12:49:12:64 | ... = ... | qualifiers.cpp:12:49:12:53 | *inner [post update] [a] | provenance | |
|
||||
| qualifiers.cpp:13:42:13:46 | value | qualifiers.cpp:13:51:13:65 | ... = ... | provenance | |
|
||||
| qualifiers.cpp:13:51:13:55 | *inner [post update] [a] | qualifiers.cpp:13:29:13:33 | *inner [Return] [a] | provenance | |
|
||||
| qualifiers.cpp:13:51:13:55 | *inner [post update] [a] | qualifiers.cpp:13:29:13:33 | *inner [a] | provenance | |
|
||||
| qualifiers.cpp:13:51:13:65 | ... = ... | qualifiers.cpp:13:51:13:55 | *inner [post update] [a] | provenance | |
|
||||
| qualifiers.cpp:22:5:22:9 | getInner output argument [*inner, a] | qualifiers.cpp:23:10:23:14 | *outer [*inner, a] | provenance | |
|
||||
@@ -758,8 +790,10 @@ edges
|
||||
| simple.cpp:19:22:19:23 | b_ | simple.cpp:19:9:19:9 | *b | provenance | |
|
||||
| simple.cpp:19:22:19:23 | b_ | simple.cpp:19:22:19:23 | b_ | provenance | |
|
||||
| simple.cpp:20:19:20:19 | a | simple.cpp:20:24:20:29 | ... = ... | provenance | |
|
||||
| simple.cpp:20:24:20:25 | *this [post update] [a_] | simple.cpp:20:10:20:13 | *this [Return] [a_] | provenance | |
|
||||
| simple.cpp:20:24:20:29 | ... = ... | simple.cpp:20:24:20:25 | *this [post update] [a_] | provenance | |
|
||||
| simple.cpp:21:19:21:19 | b | simple.cpp:21:24:21:29 | ... = ... | provenance | |
|
||||
| simple.cpp:21:24:21:25 | *this [post update] [b_] | simple.cpp:21:10:21:13 | *this [Return] [b_] | provenance | |
|
||||
| simple.cpp:21:24:21:29 | ... = ... | simple.cpp:21:24:21:25 | *this [post update] [b_] | provenance | |
|
||||
| simple.cpp:26:15:26:15 | *f [a_] | simple.cpp:28:10:28:10 | *f [a_] | provenance | |
|
||||
| simple.cpp:26:15:26:15 | *f [b_] | simple.cpp:29:10:29:10 | *f [b_] | provenance | |
|
||||
@@ -844,9 +878,11 @@ edges
|
||||
| struct_init.c:46:10:46:14 | *outer [*pointerAB, a] | struct_init.c:46:16:46:24 | *pointerAB [a] | provenance | |
|
||||
| struct_init.c:46:16:46:24 | *pointerAB [a] | struct_init.c:14:24:14:25 | *ab [a] | provenance | |
|
||||
nodes
|
||||
| A.cpp:23:5:23:5 | *this [Return] [c] | semmle.label | *this [Return] [c] |
|
||||
| A.cpp:23:10:23:10 | c | semmle.label | c |
|
||||
| A.cpp:25:7:25:10 | *this [post update] [c] | semmle.label | *this [post update] [c] |
|
||||
| A.cpp:25:7:25:17 | ... = ... | semmle.label | ... = ... |
|
||||
| A.cpp:27:10:27:12 | *this [Return] [c] | semmle.label | *this [Return] [c] |
|
||||
| A.cpp:27:17:27:17 | c | semmle.label | c |
|
||||
| A.cpp:27:22:27:25 | *this [post update] [c] | semmle.label | *this [post update] [c] |
|
||||
| A.cpp:27:22:27:32 | ... = ... | semmle.label | ... = ... |
|
||||
@@ -914,6 +950,7 @@ nodes
|
||||
| A.cpp:118:18:118:39 | *cc [a] | semmle.label | *cc [a] |
|
||||
| A.cpp:120:12:120:13 | *c1 [a] | semmle.label | *c1 [a] |
|
||||
| A.cpp:120:12:120:16 | a | semmle.label | a |
|
||||
| A.cpp:124:14:124:14 | *b [Return] [c] | semmle.label | *b [Return] [c] |
|
||||
| A.cpp:124:14:124:14 | *b [c] | semmle.label | *b [c] |
|
||||
| A.cpp:126:5:126:5 | set output argument [c] | semmle.label | set output argument [c] |
|
||||
| A.cpp:126:12:126:18 | new | semmle.label | new |
|
||||
@@ -921,6 +958,10 @@ nodes
|
||||
| A.cpp:131:8:131:8 | f7 output argument [c] | semmle.label | f7 output argument [c] |
|
||||
| A.cpp:132:10:132:10 | *b [c] | semmle.label | *b [c] |
|
||||
| A.cpp:132:10:132:13 | c | semmle.label | c |
|
||||
| A.cpp:140:5:140:5 | *this [Return] [*b, c] | semmle.label | *this [Return] [*b, c] |
|
||||
| A.cpp:140:5:140:5 | *this [Return] [b] | semmle.label | *this [Return] [b] |
|
||||
| A.cpp:140:5:140:5 | *this [Return] [b] | semmle.label | *this [Return] [b] |
|
||||
| A.cpp:140:13:140:13 | *b [Return] [c] | semmle.label | *b [Return] [c] |
|
||||
| A.cpp:140:13:140:13 | *b [c] | semmle.label | *b [c] |
|
||||
| A.cpp:140:13:140:13 | b | semmle.label | b |
|
||||
| A.cpp:142:7:142:7 | *b [post update] [c] | semmle.label | *b [post update] [c] |
|
||||
@@ -979,6 +1020,9 @@ nodes
|
||||
| A.cpp:169:12:169:18 | head | semmle.label | head |
|
||||
| A.cpp:173:26:173:26 | *o [c] | semmle.label | *o [c] |
|
||||
| A.cpp:173:26:173:26 | *o [c] | semmle.label | *o [c] |
|
||||
| A.cpp:181:5:181:10 | *this [Return] [*next, *next, head] | semmle.label | *this [Return] [*next, *next, head] |
|
||||
| A.cpp:181:5:181:10 | *this [Return] [*next, head] | semmle.label | *this [Return] [*next, head] |
|
||||
| A.cpp:181:5:181:10 | *this [Return] [head] | semmle.label | *this [Return] [head] |
|
||||
| A.cpp:181:15:181:21 | newHead | semmle.label | newHead |
|
||||
| A.cpp:181:32:181:35 | *next [*next, head] | semmle.label | *next [*next, head] |
|
||||
| A.cpp:181:32:181:35 | *next [head] | semmle.label | *next [head] |
|
||||
@@ -1010,12 +1054,16 @@ nodes
|
||||
| B.cpp:19:10:19:11 | *b2 [*box1, elem2] | semmle.label | *b2 [*box1, elem2] |
|
||||
| B.cpp:19:10:19:24 | elem2 | semmle.label | elem2 |
|
||||
| B.cpp:19:14:19:17 | *box1 [elem2] | semmle.label | *box1 [elem2] |
|
||||
| B.cpp:33:5:33:8 | *this [Return] [elem1] | semmle.label | *this [Return] [elem1] |
|
||||
| B.cpp:33:5:33:8 | *this [Return] [elem2] | semmle.label | *this [Return] [elem2] |
|
||||
| B.cpp:33:16:33:17 | e1 | semmle.label | e1 |
|
||||
| B.cpp:33:26:33:27 | e2 | semmle.label | e2 |
|
||||
| B.cpp:35:7:35:10 | *this [post update] [elem1] | semmle.label | *this [post update] [elem1] |
|
||||
| B.cpp:35:7:35:22 | ... = ... | semmle.label | ... = ... |
|
||||
| B.cpp:36:7:36:10 | *this [post update] [elem2] | semmle.label | *this [post update] [elem2] |
|
||||
| B.cpp:36:7:36:22 | ... = ... | semmle.label | ... = ... |
|
||||
| B.cpp:44:5:44:8 | *this [Return] [*box1, elem1] | semmle.label | *this [Return] [*box1, elem1] |
|
||||
| B.cpp:44:5:44:8 | *this [Return] [*box1, elem2] | semmle.label | *this [Return] [*box1, elem2] |
|
||||
| B.cpp:44:16:44:17 | *b1 [elem1] | semmle.label | *b1 [elem1] |
|
||||
| B.cpp:44:16:44:17 | *b1 [elem2] | semmle.label | *b1 [elem2] |
|
||||
| B.cpp:46:7:46:10 | *this [post update] [*box1, elem1] | semmle.label | *this [post update] [*box1, elem1] |
|
||||
@@ -1028,6 +1076,8 @@ nodes
|
||||
| C.cpp:18:12:18:18 | call to C [s3] | semmle.label | call to C [s3] |
|
||||
| C.cpp:19:5:19:5 | *c [s1] | semmle.label | *c [s1] |
|
||||
| C.cpp:19:5:19:5 | *c [s3] | semmle.label | *c [s3] |
|
||||
| C.cpp:22:3:22:3 | *this [Return] [s1] | semmle.label | *this [Return] [s1] |
|
||||
| C.cpp:22:3:22:3 | *this [Return] [s3] | semmle.label | *this [Return] [s3] |
|
||||
| C.cpp:22:3:22:3 | *this [post update] [s1] | semmle.label | *this [post update] [s1] |
|
||||
| C.cpp:22:12:22:21 | new | semmle.label | new |
|
||||
| C.cpp:22:12:22:21 | new | semmle.label | new |
|
||||
@@ -1045,6 +1095,7 @@ nodes
|
||||
| D.cpp:10:30:10:33 | *this [elem] | semmle.label | *this [elem] |
|
||||
| D.cpp:10:30:10:33 | elem | semmle.label | elem |
|
||||
| D.cpp:10:30:10:33 | elem | semmle.label | elem |
|
||||
| D.cpp:11:10:11:16 | *this [Return] [elem] | semmle.label | *this [Return] [elem] |
|
||||
| D.cpp:11:24:11:24 | e | semmle.label | e |
|
||||
| D.cpp:11:29:11:32 | *this [post update] [elem] | semmle.label | *this [post update] [elem] |
|
||||
| D.cpp:11:29:11:36 | ... = ... | semmle.label | ... = ... |
|
||||
@@ -1107,10 +1158,12 @@ nodes
|
||||
| E.cpp:32:10:32:10 | *b [*buffer] | semmle.label | *b [*buffer] |
|
||||
| E.cpp:32:13:32:18 | *buffer | semmle.label | *buffer |
|
||||
| E.cpp:33:18:33:19 | *& ... [data, *buffer] | semmle.label | *& ... [data, *buffer] |
|
||||
| aliasing.cpp:8:23:8:23 | *s [Return] [m1] | semmle.label | *s [Return] [m1] |
|
||||
| aliasing.cpp:8:23:8:23 | *s [m1] | semmle.label | *s [m1] |
|
||||
| aliasing.cpp:9:3:9:3 | *s [post update] [m1] | semmle.label | *s [post update] [m1] |
|
||||
| aliasing.cpp:9:3:9:22 | ... = ... | semmle.label | ... = ... |
|
||||
| aliasing.cpp:9:11:9:20 | call to user_input | semmle.label | call to user_input |
|
||||
| aliasing.cpp:12:25:12:25 | *s [Return] [m1] | semmle.label | *s [Return] [m1] |
|
||||
| aliasing.cpp:12:25:12:25 | *s [m1] | semmle.label | *s [m1] |
|
||||
| aliasing.cpp:13:3:13:3 | *s [post update] [m1] | semmle.label | *s [post update] [m1] |
|
||||
| aliasing.cpp:13:3:13:21 | ... = ... | semmle.label | ... = ... |
|
||||
@@ -1236,16 +1289,20 @@ nodes
|
||||
| arrays.cpp:50:10:50:17 | *indirect [*ptr, data] | semmle.label | *indirect [*ptr, data] |
|
||||
| arrays.cpp:50:20:50:22 | *ptr [data] | semmle.label | *ptr [data] |
|
||||
| arrays.cpp:50:27:50:30 | data | semmle.label | data |
|
||||
| by_reference.cpp:11:39:11:39 | *s [Return] [a] | semmle.label | *s [Return] [a] |
|
||||
| by_reference.cpp:11:39:11:39 | *s [a] | semmle.label | *s [a] |
|
||||
| by_reference.cpp:11:48:11:52 | value | semmle.label | value |
|
||||
| by_reference.cpp:12:5:12:5 | *s [post update] [a] | semmle.label | *s [post update] [a] |
|
||||
| by_reference.cpp:12:5:12:16 | ... = ... | semmle.label | ... = ... |
|
||||
| by_reference.cpp:15:8:15:18 | *this [Return] [a] | semmle.label | *this [Return] [a] |
|
||||
| by_reference.cpp:15:26:15:30 | value | semmle.label | value |
|
||||
| by_reference.cpp:16:5:16:8 | *this [post update] [a] | semmle.label | *this [post update] [a] |
|
||||
| by_reference.cpp:16:5:16:19 | ... = ... | semmle.label | ... = ... |
|
||||
| by_reference.cpp:19:8:19:20 | *this [Return] [a] | semmle.label | *this [Return] [a] |
|
||||
| by_reference.cpp:19:28:19:32 | value | semmle.label | value |
|
||||
| by_reference.cpp:20:5:20:8 | setDirectly output argument [a] | semmle.label | setDirectly output argument [a] |
|
||||
| by_reference.cpp:20:23:20:27 | value | semmle.label | value |
|
||||
| by_reference.cpp:23:8:23:26 | *this [Return] [a] | semmle.label | *this [Return] [a] |
|
||||
| by_reference.cpp:23:34:23:38 | value | semmle.label | value |
|
||||
| by_reference.cpp:24:19:24:22 | nonMemberSetA output argument [a] | semmle.label | nonMemberSetA output argument [a] |
|
||||
| by_reference.cpp:24:25:24:29 | value | semmle.label | value |
|
||||
@@ -1285,10 +1342,12 @@ nodes
|
||||
| by_reference.cpp:68:21:68:30 | call to user_input | semmle.label | call to user_input |
|
||||
| by_reference.cpp:69:8:69:20 | call to nonMemberGetA | semmle.label | call to nonMemberGetA |
|
||||
| by_reference.cpp:69:22:69:23 | *& ... [a] | semmle.label | *& ... [a] |
|
||||
| by_reference.cpp:83:31:83:35 | *inner [Return] [a] | semmle.label | *inner [Return] [a] |
|
||||
| by_reference.cpp:83:31:83:35 | *inner [a] | semmle.label | *inner [a] |
|
||||
| by_reference.cpp:84:3:84:7 | *inner [post update] [a] | semmle.label | *inner [post update] [a] |
|
||||
| by_reference.cpp:84:3:84:25 | ... = ... | semmle.label | ... = ... |
|
||||
| by_reference.cpp:84:14:84:23 | call to user_input | semmle.label | call to user_input |
|
||||
| by_reference.cpp:87:31:87:35 | *inner [Return] [a] | semmle.label | *inner [Return] [a] |
|
||||
| by_reference.cpp:87:31:87:35 | *inner [a] | semmle.label | *inner [a] |
|
||||
| by_reference.cpp:88:3:88:7 | *inner [post update] [a] | semmle.label | *inner [post update] [a] |
|
||||
| by_reference.cpp:88:3:88:24 | ... = ... | semmle.label | ... = ... |
|
||||
@@ -1454,9 +1513,11 @@ nodes
|
||||
| complex.cpp:10:20:10:21 | *this [b_] | semmle.label | *this [b_] |
|
||||
| complex.cpp:10:20:10:21 | b_ | semmle.label | b_ |
|
||||
| complex.cpp:10:20:10:21 | b_ | semmle.label | b_ |
|
||||
| complex.cpp:11:8:11:11 | *this [Return] [a_] | semmle.label | *this [Return] [a_] |
|
||||
| complex.cpp:11:17:11:17 | a | semmle.label | a |
|
||||
| complex.cpp:11:22:11:23 | *this [post update] [a_] | semmle.label | *this [post update] [a_] |
|
||||
| complex.cpp:11:22:11:27 | ... = ... | semmle.label | ... = ... |
|
||||
| complex.cpp:12:8:12:11 | *this [Return] [b_] | semmle.label | *this [Return] [b_] |
|
||||
| complex.cpp:12:17:12:17 | b | semmle.label | b |
|
||||
| complex.cpp:12:22:12:23 | *this [post update] [b_] | semmle.label | *this [post update] [b_] |
|
||||
| complex.cpp:12:22:12:27 | ... = ... | semmle.label | ... = ... |
|
||||
@@ -1531,6 +1592,8 @@ nodes
|
||||
| constructors.cpp:19:22:19:23 | *this [b_] | semmle.label | *this [b_] |
|
||||
| constructors.cpp:19:22:19:23 | b_ | semmle.label | b_ |
|
||||
| constructors.cpp:19:22:19:23 | b_ | semmle.label | b_ |
|
||||
| constructors.cpp:23:5:23:7 | *this [Return] [a_] | semmle.label | *this [Return] [a_] |
|
||||
| constructors.cpp:23:5:23:7 | *this [Return] [b_] | semmle.label | *this [Return] [b_] |
|
||||
| constructors.cpp:23:5:23:7 | *this [post update] [a_] | semmle.label | *this [post update] [a_] |
|
||||
| constructors.cpp:23:5:23:7 | *this [post update] [b_] | semmle.label | *this [post update] [b_] |
|
||||
| constructors.cpp:23:13:23:13 | a | semmle.label | a |
|
||||
@@ -1555,13 +1618,16 @@ nodes
|
||||
| constructors.cpp:43:9:43:9 | *g [b_] | semmle.label | *g [b_] |
|
||||
| constructors.cpp:46:9:46:9 | *h [a_] | semmle.label | *h [a_] |
|
||||
| constructors.cpp:46:9:46:9 | *h [b_] | semmle.label | *h [b_] |
|
||||
| qualifiers.cpp:9:10:9:13 | *this [Return] [a] | semmle.label | *this [Return] [a] |
|
||||
| qualifiers.cpp:9:21:9:25 | value | semmle.label | value |
|
||||
| qualifiers.cpp:9:30:9:33 | *this [post update] [a] | semmle.label | *this [post update] [a] |
|
||||
| qualifiers.cpp:9:30:9:44 | ... = ... | semmle.label | ... = ... |
|
||||
| qualifiers.cpp:12:27:12:31 | *inner [Return] [a] | semmle.label | *inner [Return] [a] |
|
||||
| qualifiers.cpp:12:27:12:31 | *inner [a] | semmle.label | *inner [a] |
|
||||
| qualifiers.cpp:12:40:12:44 | value | semmle.label | value |
|
||||
| qualifiers.cpp:12:49:12:53 | *inner [post update] [a] | semmle.label | *inner [post update] [a] |
|
||||
| qualifiers.cpp:12:49:12:64 | ... = ... | semmle.label | ... = ... |
|
||||
| qualifiers.cpp:13:29:13:33 | *inner [Return] [a] | semmle.label | *inner [Return] [a] |
|
||||
| qualifiers.cpp:13:29:13:33 | *inner [a] | semmle.label | *inner [a] |
|
||||
| qualifiers.cpp:13:42:13:46 | value | semmle.label | value |
|
||||
| qualifiers.cpp:13:51:13:55 | *inner [post update] [a] | semmle.label | *inner [post update] [a] |
|
||||
@@ -1626,9 +1692,11 @@ nodes
|
||||
| simple.cpp:19:22:19:23 | *this [b_] | semmle.label | *this [b_] |
|
||||
| simple.cpp:19:22:19:23 | b_ | semmle.label | b_ |
|
||||
| simple.cpp:19:22:19:23 | b_ | semmle.label | b_ |
|
||||
| simple.cpp:20:10:20:13 | *this [Return] [a_] | semmle.label | *this [Return] [a_] |
|
||||
| simple.cpp:20:19:20:19 | a | semmle.label | a |
|
||||
| simple.cpp:20:24:20:25 | *this [post update] [a_] | semmle.label | *this [post update] [a_] |
|
||||
| simple.cpp:20:24:20:29 | ... = ... | semmle.label | ... = ... |
|
||||
| simple.cpp:21:10:21:13 | *this [Return] [b_] | semmle.label | *this [Return] [b_] |
|
||||
| simple.cpp:21:19:21:19 | b | semmle.label | b |
|
||||
| simple.cpp:21:24:21:25 | *this [post update] [b_] | semmle.label | *this [post update] [b_] |
|
||||
| simple.cpp:21:24:21:29 | ... = ... | semmle.label | ... = ... |
|
||||
@@ -1715,67 +1783,67 @@ nodes
|
||||
| struct_init.c:46:10:46:14 | *outer [*pointerAB, a] | semmle.label | *outer [*pointerAB, a] |
|
||||
| struct_init.c:46:16:46:24 | *pointerAB [a] | semmle.label | *pointerAB [a] |
|
||||
subpaths
|
||||
| A.cpp:31:20:31:20 | c | A.cpp:23:10:23:10 | c | A.cpp:25:7:25:10 | *this [post update] [c] | A.cpp:31:14:31:21 | call to B [c] |
|
||||
| A.cpp:31:20:31:20 | c | A.cpp:23:10:23:10 | c | A.cpp:23:5:23:5 | *this [Return] [c] | A.cpp:31:14:31:21 | call to B [c] |
|
||||
| A.cpp:48:20:48:20 | c | A.cpp:29:23:29:23 | c | A.cpp:29:15:29:18 | **make [c] | A.cpp:48:12:48:18 | *call to make [c] |
|
||||
| A.cpp:55:12:55:19 | new | A.cpp:27:17:27:17 | c | A.cpp:27:22:27:25 | *this [post update] [c] | A.cpp:55:5:55:5 | set output argument [c] |
|
||||
| A.cpp:55:12:55:19 | new | A.cpp:27:17:27:17 | c | A.cpp:27:10:27:12 | *this [Return] [c] | A.cpp:55:5:55:5 | set output argument [c] |
|
||||
| A.cpp:56:10:56:10 | *b [c] | A.cpp:28:8:28:10 | *this [c] | A.cpp:28:8:28:10 | *get | A.cpp:56:10:56:17 | call to get |
|
||||
| A.cpp:57:11:57:24 | *new [c] | A.cpp:28:8:28:10 | *this [c] | A.cpp:28:8:28:10 | *get | A.cpp:57:10:57:32 | call to get |
|
||||
| A.cpp:57:17:57:23 | new | A.cpp:23:10:23:10 | c | A.cpp:25:7:25:10 | *this [post update] [c] | A.cpp:57:11:57:24 | call to B [c] |
|
||||
| A.cpp:57:17:57:23 | new | A.cpp:23:10:23:10 | c | A.cpp:23:5:23:5 | *this [Return] [c] | A.cpp:57:11:57:24 | call to B [c] |
|
||||
| A.cpp:64:21:64:28 | new | A.cpp:85:26:85:26 | c | A.cpp:85:9:85:14 | **setOnB [c] | A.cpp:64:10:64:15 | *call to setOnB [c] |
|
||||
| A.cpp:73:25:73:32 | new | A.cpp:78:27:78:27 | c | A.cpp:78:6:78:15 | **setOnBWrap [c] | A.cpp:73:10:73:19 | *call to setOnBWrap [c] |
|
||||
| A.cpp:81:21:81:21 | c | A.cpp:85:26:85:26 | c | A.cpp:85:9:85:14 | **setOnB [c] | A.cpp:81:10:81:15 | *call to setOnB [c] |
|
||||
| A.cpp:90:15:90:15 | c | A.cpp:27:17:27:17 | c | A.cpp:27:22:27:25 | *this [post update] [c] | A.cpp:90:7:90:8 | set output argument [c] |
|
||||
| A.cpp:126:12:126:18 | new | A.cpp:27:17:27:17 | c | A.cpp:27:22:27:25 | *this [post update] [c] | A.cpp:126:5:126:5 | set output argument [c] |
|
||||
| A.cpp:151:18:151:18 | b | A.cpp:140:13:140:13 | b | A.cpp:143:7:143:10 | *this [post update] [b] | A.cpp:151:12:151:24 | call to D [b] |
|
||||
| A.cpp:90:15:90:15 | c | A.cpp:27:17:27:17 | c | A.cpp:27:10:27:12 | *this [Return] [c] | A.cpp:90:7:90:8 | set output argument [c] |
|
||||
| A.cpp:126:12:126:18 | new | A.cpp:27:17:27:17 | c | A.cpp:27:10:27:12 | *this [Return] [c] | A.cpp:126:5:126:5 | set output argument [c] |
|
||||
| A.cpp:151:18:151:18 | b | A.cpp:140:13:140:13 | b | A.cpp:140:5:140:5 | *this [Return] [b] | A.cpp:151:12:151:24 | call to D [b] |
|
||||
| A.cpp:152:10:152:13 | *b [c] | A.cpp:173:26:173:26 | *o [c] | A.cpp:173:26:173:26 | *o [c] | A.cpp:152:10:152:13 | sink output argument [c] |
|
||||
| A.cpp:160:29:160:29 | b | A.cpp:181:15:181:21 | newHead | A.cpp:183:7:183:10 | *this [post update] [head] | A.cpp:160:18:160:60 | call to MyList [head] |
|
||||
| A.cpp:161:38:161:39 | *l1 [head] | A.cpp:181:32:181:35 | *next [head] | A.cpp:184:7:184:10 | *this [post update] [*next, head] | A.cpp:161:18:161:40 | call to MyList [*next, head] |
|
||||
| A.cpp:162:38:162:39 | *l2 [*next, head] | A.cpp:181:32:181:35 | *next [*next, head] | A.cpp:184:7:184:10 | *this [post update] [*next, *next, head] | A.cpp:162:18:162:40 | call to MyList [*next, *next, head] |
|
||||
| B.cpp:7:25:7:25 | e | B.cpp:33:16:33:17 | e1 | B.cpp:35:7:35:10 | *this [post update] [elem1] | B.cpp:7:16:7:35 | call to Box1 [elem1] |
|
||||
| B.cpp:8:25:8:26 | *b1 [elem1] | B.cpp:44:16:44:17 | *b1 [elem1] | B.cpp:46:7:46:10 | *this [post update] [*box1, elem1] | B.cpp:8:16:8:27 | call to Box2 [*box1, elem1] |
|
||||
| B.cpp:16:37:16:37 | e | B.cpp:33:26:33:27 | e2 | B.cpp:36:7:36:10 | *this [post update] [elem2] | B.cpp:16:16:16:38 | call to Box1 [elem2] |
|
||||
| B.cpp:17:25:17:26 | *b1 [elem2] | B.cpp:44:16:44:17 | *b1 [elem2] | B.cpp:46:7:46:10 | *this [post update] [*box1, elem2] | B.cpp:17:16:17:27 | call to Box2 [*box1, elem2] |
|
||||
| A.cpp:160:29:160:29 | b | A.cpp:181:15:181:21 | newHead | A.cpp:181:5:181:10 | *this [Return] [head] | A.cpp:160:18:160:60 | call to MyList [head] |
|
||||
| A.cpp:161:38:161:39 | *l1 [head] | A.cpp:181:32:181:35 | *next [head] | A.cpp:181:5:181:10 | *this [Return] [*next, head] | A.cpp:161:18:161:40 | call to MyList [*next, head] |
|
||||
| A.cpp:162:38:162:39 | *l2 [*next, head] | A.cpp:181:32:181:35 | *next [*next, head] | A.cpp:181:5:181:10 | *this [Return] [*next, *next, head] | A.cpp:162:18:162:40 | call to MyList [*next, *next, head] |
|
||||
| B.cpp:7:25:7:25 | e | B.cpp:33:16:33:17 | e1 | B.cpp:33:5:33:8 | *this [Return] [elem1] | B.cpp:7:16:7:35 | call to Box1 [elem1] |
|
||||
| B.cpp:8:25:8:26 | *b1 [elem1] | B.cpp:44:16:44:17 | *b1 [elem1] | B.cpp:44:5:44:8 | *this [Return] [*box1, elem1] | B.cpp:8:16:8:27 | call to Box2 [*box1, elem1] |
|
||||
| B.cpp:16:37:16:37 | e | B.cpp:33:26:33:27 | e2 | B.cpp:33:5:33:8 | *this [Return] [elem2] | B.cpp:16:16:16:38 | call to Box1 [elem2] |
|
||||
| B.cpp:17:25:17:26 | *b1 [elem2] | B.cpp:44:16:44:17 | *b1 [elem2] | B.cpp:44:5:44:8 | *this [Return] [*box1, elem2] | B.cpp:17:16:17:27 | call to Box2 [*box1, elem2] |
|
||||
| D.cpp:22:10:22:11 | *b2 [*box, elem] | D.cpp:17:11:17:17 | *this [*box, elem] | D.cpp:17:11:17:17 | **getBox1 [elem] | D.cpp:22:14:22:20 | *call to getBox1 [elem] |
|
||||
| D.cpp:22:14:22:20 | *call to getBox1 [elem] | D.cpp:10:11:10:17 | *this [elem] | D.cpp:10:11:10:17 | *getElem | D.cpp:22:10:22:33 | call to getElem |
|
||||
| D.cpp:37:21:37:21 | e | D.cpp:11:24:11:24 | e | D.cpp:11:29:11:32 | *this [post update] [elem] | D.cpp:37:8:37:10 | setElem output argument [elem] |
|
||||
| D.cpp:51:27:51:27 | e | D.cpp:11:24:11:24 | e | D.cpp:11:29:11:32 | *this [post update] [elem] | D.cpp:51:8:51:14 | setElem output argument [elem] |
|
||||
| by_reference.cpp:20:23:20:27 | value | by_reference.cpp:15:26:15:30 | value | by_reference.cpp:16:5:16:8 | *this [post update] [a] | by_reference.cpp:20:5:20:8 | setDirectly output argument [a] |
|
||||
| D.cpp:37:21:37:21 | e | D.cpp:11:24:11:24 | e | D.cpp:11:10:11:16 | *this [Return] [elem] | D.cpp:37:8:37:10 | setElem output argument [elem] |
|
||||
| D.cpp:51:27:51:27 | e | D.cpp:11:24:11:24 | e | D.cpp:11:10:11:16 | *this [Return] [elem] | D.cpp:51:8:51:14 | setElem output argument [elem] |
|
||||
| by_reference.cpp:20:23:20:27 | value | by_reference.cpp:15:26:15:30 | value | by_reference.cpp:15:8:15:18 | *this [Return] [a] | by_reference.cpp:20:5:20:8 | setDirectly output argument [a] |
|
||||
| by_reference.cpp:24:25:24:29 | value | by_reference.cpp:11:48:11:52 | value | by_reference.cpp:11:39:11:39 | *s [Return] [a] | by_reference.cpp:24:19:24:22 | nonMemberSetA output argument [a] |
|
||||
| by_reference.cpp:24:25:24:29 | value | by_reference.cpp:11:48:11:52 | value | by_reference.cpp:11:39:11:39 | *s [a] | by_reference.cpp:24:19:24:22 | nonMemberSetA output argument [a] |
|
||||
| by_reference.cpp:24:25:24:29 | value | by_reference.cpp:11:48:11:52 | value | by_reference.cpp:12:5:12:5 | *s [post update] [a] | by_reference.cpp:24:19:24:22 | nonMemberSetA output argument [a] |
|
||||
| by_reference.cpp:40:12:40:15 | *this [a] | by_reference.cpp:35:9:35:19 | *this [a] | by_reference.cpp:35:9:35:19 | *getDirectly | by_reference.cpp:40:18:40:28 | call to getDirectly |
|
||||
| by_reference.cpp:44:26:44:29 | *this [a] | by_reference.cpp:31:46:31:46 | *s [a] | by_reference.cpp:31:16:31:28 | *nonMemberGetA | by_reference.cpp:44:12:44:24 | call to nonMemberGetA |
|
||||
| by_reference.cpp:50:17:50:26 | call to user_input | by_reference.cpp:15:26:15:30 | value | by_reference.cpp:16:5:16:8 | *this [post update] [a] | by_reference.cpp:50:3:50:3 | setDirectly output argument [a] |
|
||||
| by_reference.cpp:50:17:50:26 | call to user_input | by_reference.cpp:15:26:15:30 | value | by_reference.cpp:15:8:15:18 | *this [Return] [a] | by_reference.cpp:50:3:50:3 | setDirectly output argument [a] |
|
||||
| by_reference.cpp:51:8:51:8 | *s [a] | by_reference.cpp:35:9:35:19 | *this [a] | by_reference.cpp:35:9:35:19 | *getDirectly | by_reference.cpp:51:10:51:20 | call to getDirectly |
|
||||
| by_reference.cpp:56:19:56:28 | call to user_input | by_reference.cpp:19:28:19:32 | value | by_reference.cpp:20:5:20:8 | setDirectly output argument [a] | by_reference.cpp:56:3:56:3 | setIndirectly output argument [a] |
|
||||
| by_reference.cpp:56:19:56:28 | call to user_input | by_reference.cpp:19:28:19:32 | value | by_reference.cpp:19:8:19:20 | *this [Return] [a] | by_reference.cpp:56:3:56:3 | setIndirectly output argument [a] |
|
||||
| by_reference.cpp:57:8:57:8 | *s [a] | by_reference.cpp:39:9:39:21 | *this [a] | by_reference.cpp:39:9:39:21 | *getIndirectly | by_reference.cpp:57:10:57:22 | call to getIndirectly |
|
||||
| by_reference.cpp:62:25:62:34 | call to user_input | by_reference.cpp:23:34:23:38 | value | by_reference.cpp:24:19:24:22 | nonMemberSetA output argument [a] | by_reference.cpp:62:3:62:3 | setThroughNonMember output argument [a] |
|
||||
| by_reference.cpp:62:25:62:34 | call to user_input | by_reference.cpp:23:34:23:38 | value | by_reference.cpp:23:8:23:26 | *this [Return] [a] | by_reference.cpp:62:3:62:3 | setThroughNonMember output argument [a] |
|
||||
| by_reference.cpp:63:8:63:8 | *s [a] | by_reference.cpp:43:9:43:27 | *this [a] | by_reference.cpp:43:9:43:27 | *getThroughNonMember | by_reference.cpp:63:10:63:28 | call to getThroughNonMember |
|
||||
| by_reference.cpp:68:21:68:30 | call to user_input | by_reference.cpp:11:48:11:52 | value | by_reference.cpp:11:39:11:39 | *s [Return] [a] | by_reference.cpp:68:17:68:18 | nonMemberSetA output argument [a] |
|
||||
| by_reference.cpp:68:21:68:30 | call to user_input | by_reference.cpp:11:48:11:52 | value | by_reference.cpp:11:39:11:39 | *s [a] | by_reference.cpp:68:17:68:18 | nonMemberSetA output argument [a] |
|
||||
| by_reference.cpp:68:21:68:30 | call to user_input | by_reference.cpp:11:48:11:52 | value | by_reference.cpp:12:5:12:5 | *s [post update] [a] | by_reference.cpp:68:17:68:18 | nonMemberSetA output argument [a] |
|
||||
| by_reference.cpp:69:22:69:23 | *& ... [a] | by_reference.cpp:31:46:31:46 | *s [a] | by_reference.cpp:31:16:31:28 | *nonMemberGetA | by_reference.cpp:69:8:69:20 | call to nonMemberGetA |
|
||||
| complex.cpp:42:16:42:16 | *f [a_] | complex.cpp:9:7:9:7 | *this [a_] | complex.cpp:9:7:9:7 | *a | complex.cpp:42:18:42:18 | call to a |
|
||||
| complex.cpp:43:16:43:16 | *f [b_] | complex.cpp:10:7:10:7 | *this [b_] | complex.cpp:10:7:10:7 | *b | complex.cpp:43:18:43:18 | call to b |
|
||||
| complex.cpp:53:19:53:28 | call to user_input | complex.cpp:11:17:11:17 | a | complex.cpp:11:22:11:23 | *this [post update] [a_] | complex.cpp:53:12:53:12 | setA output argument [a_] |
|
||||
| complex.cpp:54:19:54:28 | call to user_input | complex.cpp:12:17:12:17 | b | complex.cpp:12:22:12:23 | *this [post update] [b_] | complex.cpp:54:12:54:12 | setB output argument [b_] |
|
||||
| complex.cpp:55:19:55:28 | call to user_input | complex.cpp:11:17:11:17 | a | complex.cpp:11:22:11:23 | *this [post update] [a_] | complex.cpp:55:12:55:12 | setA output argument [a_] |
|
||||
| complex.cpp:56:19:56:28 | call to user_input | complex.cpp:12:17:12:17 | b | complex.cpp:12:22:12:23 | *this [post update] [b_] | complex.cpp:56:12:56:12 | setB output argument [b_] |
|
||||
| complex.cpp:53:19:53:28 | call to user_input | complex.cpp:11:17:11:17 | a | complex.cpp:11:8:11:11 | *this [Return] [a_] | complex.cpp:53:12:53:12 | setA output argument [a_] |
|
||||
| complex.cpp:54:19:54:28 | call to user_input | complex.cpp:12:17:12:17 | b | complex.cpp:12:8:12:11 | *this [Return] [b_] | complex.cpp:54:12:54:12 | setB output argument [b_] |
|
||||
| complex.cpp:55:19:55:28 | call to user_input | complex.cpp:11:17:11:17 | a | complex.cpp:11:8:11:11 | *this [Return] [a_] | complex.cpp:55:12:55:12 | setA output argument [a_] |
|
||||
| complex.cpp:56:19:56:28 | call to user_input | complex.cpp:12:17:12:17 | b | complex.cpp:12:8:12:11 | *this [Return] [b_] | complex.cpp:56:12:56:12 | setB output argument [b_] |
|
||||
| constructors.cpp:28:10:28:10 | *f [a_] | constructors.cpp:18:9:18:9 | *this [a_] | constructors.cpp:18:9:18:9 | *a | constructors.cpp:28:12:28:12 | call to a |
|
||||
| constructors.cpp:29:10:29:10 | *f [b_] | constructors.cpp:19:9:19:9 | *this [b_] | constructors.cpp:19:9:19:9 | *b | constructors.cpp:29:12:29:12 | call to b |
|
||||
| constructors.cpp:34:11:34:20 | call to user_input | constructors.cpp:23:13:23:13 | a | constructors.cpp:23:5:23:7 | *this [post update] [a_] | constructors.cpp:34:9:34:9 | call to Foo [a_] |
|
||||
| constructors.cpp:35:14:35:23 | call to user_input | constructors.cpp:23:20:23:20 | b | constructors.cpp:23:5:23:7 | *this [post update] [b_] | constructors.cpp:35:9:35:9 | call to Foo [b_] |
|
||||
| constructors.cpp:36:11:36:20 | call to user_input | constructors.cpp:23:13:23:13 | a | constructors.cpp:23:5:23:7 | *this [post update] [a_] | constructors.cpp:36:9:36:9 | call to Foo [a_] |
|
||||
| constructors.cpp:36:25:36:34 | call to user_input | constructors.cpp:23:20:23:20 | b | constructors.cpp:23:5:23:7 | *this [post update] [b_] | constructors.cpp:36:9:36:9 | call to Foo [b_] |
|
||||
| qualifiers.cpp:27:28:27:37 | call to user_input | qualifiers.cpp:9:21:9:25 | value | qualifiers.cpp:9:30:9:33 | *this [post update] [a] | qualifiers.cpp:27:11:27:18 | setA output argument [a] |
|
||||
| constructors.cpp:34:11:34:20 | call to user_input | constructors.cpp:23:13:23:13 | a | constructors.cpp:23:5:23:7 | *this [Return] [a_] | constructors.cpp:34:9:34:9 | call to Foo [a_] |
|
||||
| constructors.cpp:35:14:35:23 | call to user_input | constructors.cpp:23:20:23:20 | b | constructors.cpp:23:5:23:7 | *this [Return] [b_] | constructors.cpp:35:9:35:9 | call to Foo [b_] |
|
||||
| constructors.cpp:36:11:36:20 | call to user_input | constructors.cpp:23:13:23:13 | a | constructors.cpp:23:5:23:7 | *this [Return] [a_] | constructors.cpp:36:9:36:9 | call to Foo [a_] |
|
||||
| constructors.cpp:36:25:36:34 | call to user_input | constructors.cpp:23:20:23:20 | b | constructors.cpp:23:5:23:7 | *this [Return] [b_] | constructors.cpp:36:9:36:9 | call to Foo [b_] |
|
||||
| qualifiers.cpp:27:28:27:37 | call to user_input | qualifiers.cpp:9:21:9:25 | value | qualifiers.cpp:9:10:9:13 | *this [Return] [a] | qualifiers.cpp:27:11:27:18 | setA output argument [a] |
|
||||
| qualifiers.cpp:32:35:32:44 | call to user_input | qualifiers.cpp:12:40:12:44 | value | qualifiers.cpp:12:27:12:31 | *inner [Return] [a] | qualifiers.cpp:32:23:32:30 | pointerSetA output argument [a] |
|
||||
| qualifiers.cpp:32:35:32:44 | call to user_input | qualifiers.cpp:12:40:12:44 | value | qualifiers.cpp:12:27:12:31 | *inner [a] | qualifiers.cpp:32:23:32:30 | pointerSetA output argument [a] |
|
||||
| qualifiers.cpp:32:35:32:44 | call to user_input | qualifiers.cpp:12:40:12:44 | value | qualifiers.cpp:12:49:12:53 | *inner [post update] [a] | qualifiers.cpp:32:23:32:30 | pointerSetA output argument [a] |
|
||||
| qualifiers.cpp:37:38:37:47 | call to user_input | qualifiers.cpp:13:42:13:46 | value | qualifiers.cpp:13:29:13:33 | *inner [Return] [a] | qualifiers.cpp:37:19:37:35 | referenceSetA output argument [a] |
|
||||
| qualifiers.cpp:37:38:37:47 | call to user_input | qualifiers.cpp:13:42:13:46 | value | qualifiers.cpp:13:29:13:33 | *inner [a] | qualifiers.cpp:37:19:37:35 | referenceSetA output argument [a] |
|
||||
| qualifiers.cpp:37:38:37:47 | call to user_input | qualifiers.cpp:13:42:13:46 | value | qualifiers.cpp:13:51:13:55 | *inner [post update] [a] | qualifiers.cpp:37:19:37:35 | referenceSetA output argument [a] |
|
||||
| simple.cpp:28:10:28:10 | *f [a_] | simple.cpp:18:9:18:9 | *this [a_] | simple.cpp:18:9:18:9 | *a | simple.cpp:28:12:28:12 | call to a |
|
||||
| simple.cpp:29:10:29:10 | *f [b_] | simple.cpp:19:9:19:9 | *this [b_] | simple.cpp:19:9:19:9 | *b | simple.cpp:29:12:29:12 | call to b |
|
||||
| simple.cpp:39:12:39:21 | call to user_input | simple.cpp:20:19:20:19 | a | simple.cpp:20:24:20:25 | *this [post update] [a_] | simple.cpp:39:5:39:5 | setA output argument [a_] |
|
||||
| simple.cpp:40:12:40:21 | call to user_input | simple.cpp:21:19:21:19 | b | simple.cpp:21:24:21:25 | *this [post update] [b_] | simple.cpp:40:5:40:5 | setB output argument [b_] |
|
||||
| simple.cpp:41:12:41:21 | call to user_input | simple.cpp:20:19:20:19 | a | simple.cpp:20:24:20:25 | *this [post update] [a_] | simple.cpp:41:5:41:5 | setA output argument [a_] |
|
||||
| simple.cpp:42:12:42:21 | call to user_input | simple.cpp:21:19:21:19 | b | simple.cpp:21:24:21:25 | *this [post update] [b_] | simple.cpp:42:5:42:5 | setB output argument [b_] |
|
||||
| simple.cpp:39:12:39:21 | call to user_input | simple.cpp:20:19:20:19 | a | simple.cpp:20:10:20:13 | *this [Return] [a_] | simple.cpp:39:5:39:5 | setA output argument [a_] |
|
||||
| simple.cpp:40:12:40:21 | call to user_input | simple.cpp:21:19:21:19 | b | simple.cpp:21:10:21:13 | *this [Return] [b_] | simple.cpp:40:5:40:5 | setB output argument [b_] |
|
||||
| simple.cpp:41:12:41:21 | call to user_input | simple.cpp:20:19:20:19 | a | simple.cpp:20:10:20:13 | *this [Return] [a_] | simple.cpp:41:5:41:5 | setA output argument [a_] |
|
||||
| simple.cpp:42:12:42:21 | call to user_input | simple.cpp:21:19:21:19 | b | simple.cpp:21:10:21:13 | *this [Return] [b_] | simple.cpp:42:5:42:5 | setB output argument [b_] |
|
||||
| simple.cpp:84:14:84:20 | *this [f2, f1] | simple.cpp:78:9:78:15 | *this [f2, f1] | simple.cpp:78:9:78:15 | *getf2f1 | simple.cpp:84:14:84:20 | call to getf2f1 |
|
||||
| struct_init.c:24:10:24:12 | *& ... [a] | struct_init.c:14:24:14:25 | *ab [a] | struct_init.c:14:24:14:25 | *ab [a] | struct_init.c:24:10:24:12 | absink output argument [a] |
|
||||
#select
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
edges
|
||||
| A.cpp:23:10:23:10 | c | A.cpp:25:7:25:17 | ... = ... | provenance | |
|
||||
| A.cpp:25:7:25:10 | this [post update] [c] | A.cpp:23:5:23:5 | this [Return] [c] | provenance | |
|
||||
| A.cpp:25:7:25:17 | ... = ... | A.cpp:25:7:25:10 | this [post update] [c] | provenance | |
|
||||
| A.cpp:27:17:27:17 | c | A.cpp:27:22:27:32 | ... = ... | provenance | |
|
||||
| A.cpp:27:22:27:25 | this [post update] [c] | A.cpp:27:10:27:12 | this [Return] [c] | provenance | |
|
||||
| A.cpp:27:22:27:32 | ... = ... | A.cpp:27:22:27:25 | this [post update] [c] | provenance | |
|
||||
| A.cpp:28:8:28:10 | this [c] | A.cpp:28:23:28:26 | this [c] | provenance | |
|
||||
| A.cpp:28:23:28:26 | this [c] | A.cpp:28:29:28:29 | c | provenance | |
|
||||
@@ -51,22 +53,27 @@ edges
|
||||
| A.cpp:103:14:103:14 | c [a] | A.cpp:120:12:120:13 | c1 [a] | provenance | |
|
||||
| A.cpp:107:12:107:13 | c1 [a] | A.cpp:107:16:107:16 | a | provenance | |
|
||||
| A.cpp:120:12:120:13 | c1 [a] | A.cpp:120:16:120:16 | a | provenance | |
|
||||
| A.cpp:124:14:124:14 | b [Return] [c] | A.cpp:131:8:131:8 | ref arg b [c] | provenance | |
|
||||
| A.cpp:124:14:124:14 | b [c] | A.cpp:131:8:131:8 | ref arg b [c] | provenance | |
|
||||
| A.cpp:126:5:126:5 | ref arg b [c] | A.cpp:124:14:124:14 | b [Return] [c] | provenance | |
|
||||
| A.cpp:126:5:126:5 | ref arg b [c] | A.cpp:124:14:124:14 | b [c] | provenance | |
|
||||
| A.cpp:126:5:126:5 | ref arg b [c] | A.cpp:131:8:131:8 | ref arg b [c] | provenance | |
|
||||
| A.cpp:126:12:126:18 | new | A.cpp:27:17:27:17 | c | provenance | |
|
||||
| A.cpp:126:12:126:18 | new | A.cpp:126:5:126:5 | ref arg b [c] | provenance | |
|
||||
| A.cpp:131:8:131:8 | ref arg b [c] | A.cpp:132:10:132:10 | b [c] | provenance | |
|
||||
| A.cpp:132:10:132:10 | b [c] | A.cpp:132:13:132:13 | c | provenance | |
|
||||
| A.cpp:140:5:140:5 | this [Return] [b, c] | A.cpp:151:12:151:24 | call to D [b, c] | provenance | |
|
||||
| A.cpp:140:5:140:5 | this [Return] [b] | A.cpp:151:12:151:24 | call to D [b] | provenance | |
|
||||
| A.cpp:140:13:140:13 | b | A.cpp:143:7:143:31 | ... = ... | provenance | |
|
||||
| A.cpp:140:13:140:13 | b [Return] [c] | A.cpp:151:18:151:18 | ref arg b [c] | provenance | |
|
||||
| A.cpp:140:13:140:13 | b [c] | A.cpp:151:18:151:18 | ref arg b [c] | provenance | |
|
||||
| A.cpp:142:7:142:7 | b [post update] [c] | A.cpp:140:13:140:13 | b [Return] [c] | provenance | |
|
||||
| A.cpp:142:7:142:7 | b [post update] [c] | A.cpp:140:13:140:13 | b [c] | provenance | |
|
||||
| A.cpp:142:7:142:7 | b [post update] [c] | A.cpp:143:7:143:31 | ... = ... [c] | provenance | |
|
||||
| A.cpp:142:7:142:7 | b [post update] [c] | A.cpp:151:18:151:18 | ref arg b [c] | provenance | |
|
||||
| A.cpp:142:7:142:20 | ... = ... | A.cpp:142:7:142:7 | b [post update] [c] | provenance | |
|
||||
| A.cpp:142:14:142:20 | new | A.cpp:142:7:142:20 | ... = ... | provenance | |
|
||||
| A.cpp:143:7:143:10 | this [post update] [b, c] | A.cpp:151:12:151:24 | call to D [b, c] | provenance | |
|
||||
| A.cpp:143:7:143:10 | this [post update] [b] | A.cpp:151:12:151:24 | call to D [b] | provenance | |
|
||||
| A.cpp:143:7:143:10 | this [post update] [b, c] | A.cpp:140:5:140:5 | this [Return] [b, c] | provenance | |
|
||||
| A.cpp:143:7:143:10 | this [post update] [b] | A.cpp:140:5:140:5 | this [Return] [b] | provenance | |
|
||||
| A.cpp:143:7:143:10 | this [post update] [b] | A.cpp:140:5:140:5 | this [Return] [b] | provenance | |
|
||||
| A.cpp:143:7:143:31 | ... = ... | A.cpp:143:7:143:10 | this [post update] [b] | provenance | |
|
||||
| A.cpp:143:7:143:31 | ... = ... | A.cpp:143:7:143:10 | this [post update] [b] | provenance | |
|
||||
| A.cpp:143:7:143:31 | ... = ... [c] | A.cpp:143:7:143:10 | this [post update] [b, c] | provenance | |
|
||||
@@ -118,7 +125,10 @@ edges
|
||||
| A.cpp:181:15:181:21 | newHead | A.cpp:183:7:183:20 | ... = ... | provenance | |
|
||||
| A.cpp:181:32:181:35 | next [head] | A.cpp:184:7:184:23 | ... = ... [head] | provenance | |
|
||||
| A.cpp:181:32:181:35 | next [next, head] | A.cpp:184:7:184:23 | ... = ... [next, head] | provenance | |
|
||||
| A.cpp:183:7:183:10 | this [post update] [head] | A.cpp:181:5:181:10 | this [Return] [head] | provenance | |
|
||||
| A.cpp:183:7:183:20 | ... = ... | A.cpp:183:7:183:10 | this [post update] [head] | provenance | |
|
||||
| A.cpp:184:7:184:10 | this [post update] [next, head] | A.cpp:181:5:181:10 | this [Return] [next, head] | provenance | |
|
||||
| A.cpp:184:7:184:10 | this [post update] [next, next, head] | A.cpp:181:5:181:10 | this [Return] [next, next, head] | provenance | |
|
||||
| A.cpp:184:7:184:23 | ... = ... [head] | A.cpp:184:7:184:10 | this [post update] [next, head] | provenance | |
|
||||
| A.cpp:184:7:184:23 | ... = ... [next, head] | A.cpp:184:7:184:10 | this [post update] [next, next, head] | provenance | |
|
||||
| B.cpp:6:15:6:24 | new | B.cpp:7:25:7:25 | e | provenance | |
|
||||
@@ -141,19 +151,25 @@ edges
|
||||
| B.cpp:19:14:19:17 | box1 [elem2] | B.cpp:19:20:19:24 | elem2 | provenance | |
|
||||
| B.cpp:33:16:33:17 | e1 | B.cpp:35:7:35:22 | ... = ... | provenance | |
|
||||
| B.cpp:33:26:33:27 | e2 | B.cpp:36:7:36:22 | ... = ... | provenance | |
|
||||
| B.cpp:35:7:35:10 | this [post update] [elem1] | B.cpp:33:5:33:8 | this [Return] [elem1] | provenance | |
|
||||
| B.cpp:35:7:35:22 | ... = ... | B.cpp:35:7:35:10 | this [post update] [elem1] | provenance | |
|
||||
| B.cpp:36:7:36:10 | this [post update] [elem2] | B.cpp:33:5:33:8 | this [Return] [elem2] | provenance | |
|
||||
| B.cpp:36:7:36:22 | ... = ... | B.cpp:36:7:36:10 | this [post update] [elem2] | provenance | |
|
||||
| B.cpp:44:16:44:17 | b1 [elem1] | B.cpp:46:7:46:21 | ... = ... [elem1] | provenance | |
|
||||
| B.cpp:44:16:44:17 | b1 [elem2] | B.cpp:46:7:46:21 | ... = ... [elem2] | provenance | |
|
||||
| B.cpp:46:7:46:10 | this [post update] [box1, elem1] | B.cpp:44:5:44:8 | this [Return] [box1, elem1] | provenance | |
|
||||
| B.cpp:46:7:46:10 | this [post update] [box1, elem2] | B.cpp:44:5:44:8 | this [Return] [box1, elem2] | provenance | |
|
||||
| B.cpp:46:7:46:21 | ... = ... [elem1] | B.cpp:46:7:46:10 | this [post update] [box1, elem1] | provenance | |
|
||||
| B.cpp:46:7:46:21 | ... = ... [elem2] | B.cpp:46:7:46:10 | this [post update] [box1, elem2] | provenance | |
|
||||
| C.cpp:18:12:18:18 | call to C [s1] | C.cpp:19:5:19:5 | c [s1] | provenance | |
|
||||
| C.cpp:18:12:18:18 | call to C [s3] | C.cpp:19:5:19:5 | c [s3] | provenance | |
|
||||
| C.cpp:19:5:19:5 | c [s1] | C.cpp:27:8:27:11 | this [s1] | provenance | |
|
||||
| C.cpp:19:5:19:5 | c [s3] | C.cpp:27:8:27:11 | this [s3] | provenance | |
|
||||
| C.cpp:22:9:22:22 | constructor init of field s1 [post-this] [s1] | C.cpp:18:12:18:18 | call to C [s1] | provenance | |
|
||||
| C.cpp:22:3:22:3 | this [Return] [s1] | C.cpp:18:12:18:18 | call to C [s1] | provenance | |
|
||||
| C.cpp:22:3:22:3 | this [Return] [s3] | C.cpp:18:12:18:18 | call to C [s3] | provenance | |
|
||||
| C.cpp:22:9:22:22 | constructor init of field s1 [post-this] [s1] | C.cpp:22:3:22:3 | this [Return] [s1] | provenance | |
|
||||
| C.cpp:22:12:22:21 | new | C.cpp:22:9:22:22 | constructor init of field s1 [post-this] [s1] | provenance | |
|
||||
| C.cpp:24:5:24:8 | this [post update] [s3] | C.cpp:18:12:18:18 | call to C [s3] | provenance | |
|
||||
| C.cpp:24:5:24:8 | this [post update] [s3] | C.cpp:22:3:22:3 | this [Return] [s3] | provenance | |
|
||||
| C.cpp:24:5:24:25 | ... = ... | C.cpp:24:5:24:8 | this [post update] [s3] | provenance | |
|
||||
| C.cpp:24:16:24:25 | new | C.cpp:24:5:24:25 | ... = ... | provenance | |
|
||||
| C.cpp:27:8:27:11 | this [s1] | C.cpp:29:10:29:11 | this [s1] | provenance | |
|
||||
@@ -163,6 +179,7 @@ edges
|
||||
| D.cpp:10:11:10:17 | this [elem] | D.cpp:10:30:10:33 | this [elem] | provenance | |
|
||||
| D.cpp:10:30:10:33 | this [elem] | D.cpp:10:30:10:33 | elem | provenance | |
|
||||
| D.cpp:11:24:11:24 | e | D.cpp:11:29:11:36 | ... = ... | provenance | |
|
||||
| D.cpp:11:29:11:32 | this [post update] [elem] | D.cpp:11:10:11:16 | this [Return] [elem] | provenance | |
|
||||
| D.cpp:11:29:11:36 | ... = ... | D.cpp:11:29:11:32 | this [post update] [elem] | provenance | |
|
||||
| D.cpp:17:11:17:17 | this [box, elem] | D.cpp:17:30:17:32 | this [box, elem] | provenance | |
|
||||
| D.cpp:17:30:17:32 | this [box, elem] | D.cpp:17:30:17:32 | box [elem] | provenance | |
|
||||
@@ -215,14 +232,16 @@ edges
|
||||
| E.cpp:32:10:32:10 | b [buffer] | E.cpp:32:13:32:18 | buffer | provenance | |
|
||||
| E.cpp:33:18:33:19 | & ... [data, buffer] | E.cpp:19:27:19:27 | p [data, buffer] | provenance | |
|
||||
| E.cpp:33:19:33:19 | p [data, buffer] | E.cpp:33:18:33:19 | & ... [data, buffer] | provenance | |
|
||||
| aliasing.cpp:8:23:8:23 | s [Return] [m1] | aliasing.cpp:25:17:25:19 | ref arg & ... [m1] | provenance | |
|
||||
| aliasing.cpp:8:23:8:23 | s [m1] | aliasing.cpp:25:17:25:19 | ref arg & ... [m1] | provenance | |
|
||||
| aliasing.cpp:9:3:9:3 | s [post update] [m1] | aliasing.cpp:8:23:8:23 | s [Return] [m1] | provenance | |
|
||||
| aliasing.cpp:9:3:9:3 | s [post update] [m1] | aliasing.cpp:8:23:8:23 | s [m1] | provenance | |
|
||||
| aliasing.cpp:9:3:9:3 | s [post update] [m1] | aliasing.cpp:25:17:25:19 | ref arg & ... [m1] | provenance | |
|
||||
| aliasing.cpp:9:3:9:22 | ... = ... | aliasing.cpp:9:3:9:3 | s [post update] [m1] | provenance | |
|
||||
| aliasing.cpp:9:11:9:20 | call to user_input | aliasing.cpp:9:3:9:22 | ... = ... | provenance | |
|
||||
| aliasing.cpp:12:25:12:25 | s [Return] [m1] | aliasing.cpp:26:19:26:20 | ref arg s2 [m1] | provenance | |
|
||||
| aliasing.cpp:12:25:12:25 | s [m1] | aliasing.cpp:26:19:26:20 | ref arg s2 [m1] | provenance | |
|
||||
| aliasing.cpp:13:3:13:3 | s [post update] [m1] | aliasing.cpp:12:25:12:25 | s [Return] [m1] | provenance | |
|
||||
| aliasing.cpp:13:3:13:3 | s [post update] [m1] | aliasing.cpp:12:25:12:25 | s [m1] | provenance | |
|
||||
| aliasing.cpp:13:3:13:3 | s [post update] [m1] | aliasing.cpp:26:19:26:20 | ref arg s2 [m1] | provenance | |
|
||||
| aliasing.cpp:13:3:13:21 | ... = ... | aliasing.cpp:13:3:13:3 | s [post update] [m1] | provenance | |
|
||||
| aliasing.cpp:13:10:13:19 | call to user_input | aliasing.cpp:13:3:13:21 | ... = ... | provenance | |
|
||||
| aliasing.cpp:25:17:25:19 | ref arg & ... [m1] | aliasing.cpp:29:8:29:9 | s1 [m1] | provenance | |
|
||||
@@ -244,13 +263,13 @@ edges
|
||||
| aliasing.cpp:105:23:105:24 | pa | aliasing.cpp:175:15:175:22 | ref arg & ... | provenance | |
|
||||
| aliasing.cpp:105:23:105:24 | pa | aliasing.cpp:187:15:187:22 | ref arg & ... | provenance | |
|
||||
| aliasing.cpp:105:23:105:24 | pa | aliasing.cpp:200:15:200:24 | ref arg & ... | provenance | |
|
||||
| aliasing.cpp:106:4:106:5 | pa [inner post update] | aliasing.cpp:158:17:158:20 | ref arg data | provenance | |
|
||||
| aliasing.cpp:106:4:106:5 | pa [inner post update] | aliasing.cpp:164:17:164:20 | ref arg data | provenance | |
|
||||
| aliasing.cpp:106:4:106:5 | pa [inner post update] | aliasing.cpp:175:15:175:22 | ref arg & ... | provenance | |
|
||||
| aliasing.cpp:106:4:106:5 | pa [inner post update] | aliasing.cpp:187:15:187:22 | ref arg & ... | provenance | |
|
||||
| aliasing.cpp:106:4:106:5 | pa [inner post update] | aliasing.cpp:200:15:200:24 | ref arg & ... | provenance | |
|
||||
| aliasing.cpp:105:23:105:24 | pa [Return] | aliasing.cpp:158:17:158:20 | ref arg data | provenance | |
|
||||
| aliasing.cpp:105:23:105:24 | pa [Return] | aliasing.cpp:164:17:164:20 | ref arg data | provenance | |
|
||||
| aliasing.cpp:105:23:105:24 | pa [Return] | aliasing.cpp:175:15:175:22 | ref arg & ... | provenance | |
|
||||
| aliasing.cpp:105:23:105:24 | pa [Return] | aliasing.cpp:187:15:187:22 | ref arg & ... | provenance | |
|
||||
| aliasing.cpp:105:23:105:24 | pa [Return] | aliasing.cpp:200:15:200:24 | ref arg & ... | provenance | |
|
||||
| aliasing.cpp:106:9:106:18 | call to user_input | aliasing.cpp:105:23:105:24 | pa | provenance | |
|
||||
| aliasing.cpp:106:9:106:18 | call to user_input | aliasing.cpp:106:4:106:5 | pa [inner post update] | provenance | |
|
||||
| aliasing.cpp:106:9:106:18 | call to user_input | aliasing.cpp:105:23:105:24 | pa [Return] | provenance | |
|
||||
| aliasing.cpp:158:15:158:15 | s [post update] [data] | aliasing.cpp:159:9:159:9 | s [data] | provenance | |
|
||||
| aliasing.cpp:158:17:158:20 | ref arg data | aliasing.cpp:158:15:158:15 | s [post update] [data] | provenance | |
|
||||
| aliasing.cpp:159:9:159:9 | s [data] | aliasing.cpp:159:11:159:14 | data | provenance | |
|
||||
@@ -330,14 +349,18 @@ edges
|
||||
| arrays.cpp:44:10:44:17 | indirect [arr, data] | arrays.cpp:44:20:44:22 | arr [data] | provenance | |
|
||||
| arrays.cpp:44:20:44:22 | arr [data] | arrays.cpp:44:8:44:25 | access to array [data] | provenance | |
|
||||
| by_reference.cpp:11:48:11:52 | value | by_reference.cpp:12:5:12:16 | ... = ... | provenance | |
|
||||
| by_reference.cpp:12:5:12:5 | s [post update] [a] | by_reference.cpp:11:39:11:39 | s [Return] [a] | provenance | |
|
||||
| by_reference.cpp:12:5:12:5 | s [post update] [a] | by_reference.cpp:11:39:11:39 | s [a] | provenance | |
|
||||
| by_reference.cpp:12:5:12:16 | ... = ... | by_reference.cpp:12:5:12:5 | s [post update] [a] | provenance | |
|
||||
| by_reference.cpp:15:26:15:30 | value | by_reference.cpp:16:5:16:19 | ... = ... | provenance | |
|
||||
| by_reference.cpp:16:5:16:8 | this [post update] [a] | by_reference.cpp:15:8:15:18 | this [Return] [a] | provenance | |
|
||||
| by_reference.cpp:16:5:16:19 | ... = ... | by_reference.cpp:16:5:16:8 | this [post update] [a] | provenance | |
|
||||
| by_reference.cpp:19:28:19:32 | value | by_reference.cpp:20:23:20:27 | value | provenance | |
|
||||
| by_reference.cpp:20:5:20:8 | ref arg this [a] | by_reference.cpp:19:8:19:20 | this [Return] [a] | provenance | |
|
||||
| by_reference.cpp:20:23:20:27 | value | by_reference.cpp:15:26:15:30 | value | provenance | |
|
||||
| by_reference.cpp:20:23:20:27 | value | by_reference.cpp:20:5:20:8 | ref arg this [a] | provenance | |
|
||||
| by_reference.cpp:23:34:23:38 | value | by_reference.cpp:24:25:24:29 | value | provenance | |
|
||||
| by_reference.cpp:24:19:24:22 | ref arg this [a] | by_reference.cpp:23:8:23:26 | this [Return] [a] | provenance | |
|
||||
| by_reference.cpp:24:25:24:29 | value | by_reference.cpp:11:48:11:52 | value | provenance | |
|
||||
| by_reference.cpp:24:25:24:29 | value | by_reference.cpp:24:19:24:22 | ref arg this [a] | provenance | |
|
||||
| by_reference.cpp:31:46:31:46 | s [a] | by_reference.cpp:32:12:32:12 | s [a] | provenance | |
|
||||
@@ -371,34 +394,36 @@ edges
|
||||
| by_reference.cpp:69:22:69:23 | & ... [a] | by_reference.cpp:31:46:31:46 | s [a] | provenance | |
|
||||
| by_reference.cpp:69:22:69:23 | & ... [a] | by_reference.cpp:69:8:69:20 | call to nonMemberGetA | provenance | |
|
||||
| by_reference.cpp:69:23:69:23 | s [a] | by_reference.cpp:69:22:69:23 | & ... [a] | provenance | |
|
||||
| by_reference.cpp:83:31:83:35 | inner [Return] [a] | by_reference.cpp:102:21:102:39 | ref arg & ... [a] | provenance | |
|
||||
| by_reference.cpp:83:31:83:35 | inner [Return] [a] | by_reference.cpp:103:27:103:35 | ref arg inner_ptr [a] | provenance | |
|
||||
| by_reference.cpp:83:31:83:35 | inner [Return] [a] | by_reference.cpp:106:21:106:41 | ref arg & ... [a] | provenance | |
|
||||
| by_reference.cpp:83:31:83:35 | inner [Return] [a] | by_reference.cpp:107:29:107:37 | ref arg inner_ptr [a] | provenance | |
|
||||
| by_reference.cpp:83:31:83:35 | inner [a] | by_reference.cpp:102:21:102:39 | ref arg & ... [a] | provenance | |
|
||||
| by_reference.cpp:83:31:83:35 | inner [a] | by_reference.cpp:103:27:103:35 | ref arg inner_ptr [a] | provenance | |
|
||||
| by_reference.cpp:83:31:83:35 | inner [a] | by_reference.cpp:106:21:106:41 | ref arg & ... [a] | provenance | |
|
||||
| by_reference.cpp:83:31:83:35 | inner [a] | by_reference.cpp:107:29:107:37 | ref arg inner_ptr [a] | provenance | |
|
||||
| by_reference.cpp:84:3:84:7 | inner [post update] [a] | by_reference.cpp:83:31:83:35 | inner [Return] [a] | provenance | |
|
||||
| by_reference.cpp:84:3:84:7 | inner [post update] [a] | by_reference.cpp:83:31:83:35 | inner [a] | provenance | |
|
||||
| by_reference.cpp:84:3:84:7 | inner [post update] [a] | by_reference.cpp:102:21:102:39 | ref arg & ... [a] | provenance | |
|
||||
| by_reference.cpp:84:3:84:7 | inner [post update] [a] | by_reference.cpp:103:27:103:35 | ref arg inner_ptr [a] | provenance | |
|
||||
| by_reference.cpp:84:3:84:7 | inner [post update] [a] | by_reference.cpp:106:21:106:41 | ref arg & ... [a] | provenance | |
|
||||
| by_reference.cpp:84:3:84:7 | inner [post update] [a] | by_reference.cpp:107:29:107:37 | ref arg inner_ptr [a] | provenance | |
|
||||
| by_reference.cpp:84:3:84:25 | ... = ... | by_reference.cpp:84:3:84:7 | inner [post update] [a] | provenance | |
|
||||
| by_reference.cpp:84:14:84:23 | call to user_input | by_reference.cpp:84:3:84:25 | ... = ... | provenance | |
|
||||
| by_reference.cpp:87:31:87:35 | inner [Return] [a] | by_reference.cpp:122:27:122:38 | ref arg inner_nested [a] | provenance | |
|
||||
| by_reference.cpp:87:31:87:35 | inner [Return] [a] | by_reference.cpp:123:21:123:36 | ref arg * ... [a] | provenance | |
|
||||
| by_reference.cpp:87:31:87:35 | inner [Return] [a] | by_reference.cpp:126:29:126:40 | ref arg inner_nested [a] | provenance | |
|
||||
| by_reference.cpp:87:31:87:35 | inner [Return] [a] | by_reference.cpp:127:21:127:38 | ref arg * ... [a] | provenance | |
|
||||
| by_reference.cpp:87:31:87:35 | inner [a] | by_reference.cpp:122:27:122:38 | ref arg inner_nested [a] | provenance | |
|
||||
| by_reference.cpp:87:31:87:35 | inner [a] | by_reference.cpp:123:21:123:36 | ref arg * ... [a] | provenance | |
|
||||
| by_reference.cpp:87:31:87:35 | inner [a] | by_reference.cpp:126:29:126:40 | ref arg inner_nested [a] | provenance | |
|
||||
| by_reference.cpp:87:31:87:35 | inner [a] | by_reference.cpp:127:21:127:38 | ref arg * ... [a] | provenance | |
|
||||
| by_reference.cpp:88:3:88:7 | inner [post update] [a] | by_reference.cpp:87:31:87:35 | inner [Return] [a] | provenance | |
|
||||
| by_reference.cpp:88:3:88:7 | inner [post update] [a] | by_reference.cpp:87:31:87:35 | inner [a] | provenance | |
|
||||
| by_reference.cpp:88:3:88:7 | inner [post update] [a] | by_reference.cpp:122:27:122:38 | ref arg inner_nested [a] | provenance | |
|
||||
| by_reference.cpp:88:3:88:7 | inner [post update] [a] | by_reference.cpp:123:21:123:36 | ref arg * ... [a] | provenance | |
|
||||
| by_reference.cpp:88:3:88:7 | inner [post update] [a] | by_reference.cpp:126:29:126:40 | ref arg inner_nested [a] | provenance | |
|
||||
| by_reference.cpp:88:3:88:7 | inner [post update] [a] | by_reference.cpp:127:21:127:38 | ref arg * ... [a] | provenance | |
|
||||
| by_reference.cpp:88:3:88:24 | ... = ... | by_reference.cpp:88:3:88:7 | inner [post update] [a] | provenance | |
|
||||
| by_reference.cpp:88:13:88:22 | call to user_input | by_reference.cpp:88:3:88:24 | ... = ... | provenance | |
|
||||
| by_reference.cpp:91:25:91:26 | pa | by_reference.cpp:104:15:104:22 | ref arg & ... | provenance | |
|
||||
| by_reference.cpp:91:25:91:26 | pa | by_reference.cpp:108:15:108:24 | ref arg & ... | provenance | |
|
||||
| by_reference.cpp:92:4:92:5 | pa [inner post update] | by_reference.cpp:104:15:104:22 | ref arg & ... | provenance | |
|
||||
| by_reference.cpp:92:4:92:5 | pa [inner post update] | by_reference.cpp:108:15:108:24 | ref arg & ... | provenance | |
|
||||
| by_reference.cpp:91:25:91:26 | pa [Return] | by_reference.cpp:104:15:104:22 | ref arg & ... | provenance | |
|
||||
| by_reference.cpp:91:25:91:26 | pa [Return] | by_reference.cpp:108:15:108:24 | ref arg & ... | provenance | |
|
||||
| by_reference.cpp:92:9:92:18 | call to user_input | by_reference.cpp:91:25:91:26 | pa | provenance | |
|
||||
| by_reference.cpp:92:9:92:18 | call to user_input | by_reference.cpp:92:4:92:5 | pa [inner post update] | provenance | |
|
||||
| by_reference.cpp:92:9:92:18 | call to user_input | by_reference.cpp:91:25:91:26 | pa [Return] | provenance | |
|
||||
| by_reference.cpp:95:25:95:26 | pa | by_reference.cpp:124:21:124:21 | ref arg a | provenance | |
|
||||
| by_reference.cpp:95:25:95:26 | pa | by_reference.cpp:128:23:128:23 | ref arg a | provenance | |
|
||||
| by_reference.cpp:96:8:96:17 | call to user_input | by_reference.cpp:95:25:95:26 | pa | provenance | |
|
||||
@@ -493,8 +518,10 @@ edges
|
||||
| complex.cpp:10:7:10:7 | this [b_] | complex.cpp:10:20:10:21 | this [b_] | provenance | |
|
||||
| complex.cpp:10:20:10:21 | this [b_] | complex.cpp:10:20:10:21 | b_ | provenance | |
|
||||
| complex.cpp:11:17:11:17 | a | complex.cpp:11:22:11:27 | ... = ... | provenance | |
|
||||
| complex.cpp:11:22:11:23 | this [post update] [a_] | complex.cpp:11:8:11:11 | this [Return] [a_] | provenance | |
|
||||
| complex.cpp:11:22:11:27 | ... = ... | complex.cpp:11:22:11:23 | this [post update] [a_] | provenance | |
|
||||
| complex.cpp:12:17:12:17 | b | complex.cpp:12:22:12:27 | ... = ... | provenance | |
|
||||
| complex.cpp:12:22:12:23 | this [post update] [b_] | complex.cpp:12:8:12:11 | this [Return] [b_] | provenance | |
|
||||
| complex.cpp:12:22:12:27 | ... = ... | complex.cpp:12:22:12:23 | this [post update] [b_] | provenance | |
|
||||
| complex.cpp:40:17:40:17 | b [inner, f, a_] | complex.cpp:42:8:42:8 | b [inner, f, a_] | provenance | |
|
||||
| complex.cpp:40:17:40:17 | b [inner, f, b_] | complex.cpp:43:8:43:8 | b [inner, f, b_] | provenance | |
|
||||
@@ -557,7 +584,9 @@ edges
|
||||
| constructors.cpp:19:22:19:23 | this [b_] | constructors.cpp:19:22:19:23 | b_ | provenance | |
|
||||
| constructors.cpp:23:13:23:13 | a | constructors.cpp:23:28:23:28 | a | provenance | |
|
||||
| constructors.cpp:23:20:23:20 | b | constructors.cpp:23:35:23:35 | b | provenance | |
|
||||
| constructors.cpp:23:25:23:29 | constructor init of field a_ [post-this] [a_] | constructors.cpp:23:5:23:7 | this [Return] [a_] | provenance | |
|
||||
| constructors.cpp:23:28:23:28 | a | constructors.cpp:23:25:23:29 | constructor init of field a_ [post-this] [a_] | provenance | |
|
||||
| constructors.cpp:23:32:23:36 | constructor init of field b_ [post-this] [b_] | constructors.cpp:23:5:23:7 | this [Return] [b_] | provenance | |
|
||||
| constructors.cpp:23:35:23:35 | b | constructors.cpp:23:32:23:36 | constructor init of field b_ [post-this] [b_] | provenance | |
|
||||
| constructors.cpp:26:15:26:15 | f [a_] | constructors.cpp:28:10:28:10 | f [a_] | provenance | |
|
||||
| constructors.cpp:26:15:26:15 | f [b_] | constructors.cpp:29:10:29:10 | f [b_] | provenance | |
|
||||
@@ -582,11 +611,14 @@ edges
|
||||
| constructors.cpp:46:9:46:9 | h [a_] | constructors.cpp:26:15:26:15 | f [a_] | provenance | |
|
||||
| constructors.cpp:46:9:46:9 | h [b_] | constructors.cpp:26:15:26:15 | f [b_] | provenance | |
|
||||
| qualifiers.cpp:9:21:9:25 | value | qualifiers.cpp:9:30:9:44 | ... = ... | provenance | |
|
||||
| qualifiers.cpp:9:30:9:33 | this [post update] [a] | qualifiers.cpp:9:10:9:13 | this [Return] [a] | provenance | |
|
||||
| qualifiers.cpp:9:30:9:44 | ... = ... | qualifiers.cpp:9:30:9:33 | this [post update] [a] | provenance | |
|
||||
| qualifiers.cpp:12:40:12:44 | value | qualifiers.cpp:12:49:12:64 | ... = ... | provenance | |
|
||||
| qualifiers.cpp:12:49:12:53 | inner [post update] [a] | qualifiers.cpp:12:27:12:31 | inner [Return] [a] | provenance | |
|
||||
| qualifiers.cpp:12:49:12:53 | inner [post update] [a] | qualifiers.cpp:12:27:12:31 | inner [a] | provenance | |
|
||||
| qualifiers.cpp:12:49:12:64 | ... = ... | qualifiers.cpp:12:49:12:53 | inner [post update] [a] | provenance | |
|
||||
| qualifiers.cpp:13:42:13:46 | value | qualifiers.cpp:13:51:13:65 | ... = ... | provenance | |
|
||||
| qualifiers.cpp:13:51:13:55 | inner [post update] [a] | qualifiers.cpp:13:29:13:33 | inner [Return] [a] | provenance | |
|
||||
| qualifiers.cpp:13:51:13:55 | inner [post update] [a] | qualifiers.cpp:13:29:13:33 | inner [a] | provenance | |
|
||||
| qualifiers.cpp:13:51:13:65 | ... = ... | qualifiers.cpp:13:51:13:55 | inner [post update] [a] | provenance | |
|
||||
| qualifiers.cpp:22:5:22:9 | ref arg outer [inner, a] | qualifiers.cpp:23:10:23:14 | outer [inner, a] | provenance | |
|
||||
@@ -654,8 +686,10 @@ edges
|
||||
| simple.cpp:19:9:19:9 | this [b_] | simple.cpp:19:22:19:23 | this [b_] | provenance | |
|
||||
| simple.cpp:19:22:19:23 | this [b_] | simple.cpp:19:22:19:23 | b_ | provenance | |
|
||||
| simple.cpp:20:19:20:19 | a | simple.cpp:20:24:20:29 | ... = ... | provenance | |
|
||||
| simple.cpp:20:24:20:25 | this [post update] [a_] | simple.cpp:20:10:20:13 | this [Return] [a_] | provenance | |
|
||||
| simple.cpp:20:24:20:29 | ... = ... | simple.cpp:20:24:20:25 | this [post update] [a_] | provenance | |
|
||||
| simple.cpp:21:19:21:19 | b | simple.cpp:21:24:21:29 | ... = ... | provenance | |
|
||||
| simple.cpp:21:24:21:25 | this [post update] [b_] | simple.cpp:21:10:21:13 | this [Return] [b_] | provenance | |
|
||||
| simple.cpp:21:24:21:29 | ... = ... | simple.cpp:21:24:21:25 | this [post update] [b_] | provenance | |
|
||||
| simple.cpp:26:15:26:15 | f [a_] | simple.cpp:28:10:28:10 | f [a_] | provenance | |
|
||||
| simple.cpp:26:15:26:15 | f [b_] | simple.cpp:29:10:29:10 | f [b_] | provenance | |
|
||||
@@ -747,9 +781,11 @@ edges
|
||||
| struct_init.c:46:10:46:14 | outer [pointerAB, a] | struct_init.c:46:16:46:24 | pointerAB [a] | provenance | |
|
||||
| struct_init.c:46:16:46:24 | pointerAB [a] | struct_init.c:14:24:14:25 | ab [a] | provenance | |
|
||||
nodes
|
||||
| A.cpp:23:5:23:5 | this [Return] [c] | semmle.label | this [Return] [c] |
|
||||
| A.cpp:23:10:23:10 | c | semmle.label | c |
|
||||
| A.cpp:25:7:25:10 | this [post update] [c] | semmle.label | this [post update] [c] |
|
||||
| A.cpp:25:7:25:17 | ... = ... | semmle.label | ... = ... |
|
||||
| A.cpp:27:10:27:12 | this [Return] [c] | semmle.label | this [Return] [c] |
|
||||
| A.cpp:27:17:27:17 | c | semmle.label | c |
|
||||
| A.cpp:27:22:27:25 | this [post update] [c] | semmle.label | this [post update] [c] |
|
||||
| A.cpp:27:22:27:32 | ... = ... | semmle.label | ... = ... |
|
||||
@@ -802,13 +838,18 @@ nodes
|
||||
| A.cpp:107:16:107:16 | a | semmle.label | a |
|
||||
| A.cpp:120:12:120:13 | c1 [a] | semmle.label | c1 [a] |
|
||||
| A.cpp:120:16:120:16 | a | semmle.label | a |
|
||||
| A.cpp:124:14:124:14 | b [Return] [c] | semmle.label | b [Return] [c] |
|
||||
| A.cpp:124:14:124:14 | b [c] | semmle.label | b [c] |
|
||||
| A.cpp:126:5:126:5 | ref arg b [c] | semmle.label | ref arg b [c] |
|
||||
| A.cpp:126:12:126:18 | new | semmle.label | new |
|
||||
| A.cpp:131:8:131:8 | ref arg b [c] | semmle.label | ref arg b [c] |
|
||||
| A.cpp:132:10:132:10 | b [c] | semmle.label | b [c] |
|
||||
| A.cpp:132:13:132:13 | c | semmle.label | c |
|
||||
| A.cpp:140:5:140:5 | this [Return] [b, c] | semmle.label | this [Return] [b, c] |
|
||||
| A.cpp:140:5:140:5 | this [Return] [b] | semmle.label | this [Return] [b] |
|
||||
| A.cpp:140:5:140:5 | this [Return] [b] | semmle.label | this [Return] [b] |
|
||||
| A.cpp:140:13:140:13 | b | semmle.label | b |
|
||||
| A.cpp:140:13:140:13 | b [Return] [c] | semmle.label | b [Return] [c] |
|
||||
| A.cpp:140:13:140:13 | b [c] | semmle.label | b [c] |
|
||||
| A.cpp:142:7:142:7 | b [post update] [c] | semmle.label | b [post update] [c] |
|
||||
| A.cpp:142:7:142:20 | ... = ... | semmle.label | ... = ... |
|
||||
@@ -862,6 +903,9 @@ nodes
|
||||
| A.cpp:173:26:173:26 | o | semmle.label | o |
|
||||
| A.cpp:173:26:173:26 | o [c] | semmle.label | o [c] |
|
||||
| A.cpp:173:26:173:26 | o [c] | semmle.label | o [c] |
|
||||
| A.cpp:181:5:181:10 | this [Return] [head] | semmle.label | this [Return] [head] |
|
||||
| A.cpp:181:5:181:10 | this [Return] [next, head] | semmle.label | this [Return] [next, head] |
|
||||
| A.cpp:181:5:181:10 | this [Return] [next, next, head] | semmle.label | this [Return] [next, next, head] |
|
||||
| A.cpp:181:15:181:21 | newHead | semmle.label | newHead |
|
||||
| A.cpp:181:32:181:35 | next [head] | semmle.label | next [head] |
|
||||
| A.cpp:181:32:181:35 | next [next, head] | semmle.label | next [next, head] |
|
||||
@@ -887,12 +931,16 @@ nodes
|
||||
| B.cpp:19:10:19:11 | b2 [box1, elem2] | semmle.label | b2 [box1, elem2] |
|
||||
| B.cpp:19:14:19:17 | box1 [elem2] | semmle.label | box1 [elem2] |
|
||||
| B.cpp:19:20:19:24 | elem2 | semmle.label | elem2 |
|
||||
| B.cpp:33:5:33:8 | this [Return] [elem1] | semmle.label | this [Return] [elem1] |
|
||||
| B.cpp:33:5:33:8 | this [Return] [elem2] | semmle.label | this [Return] [elem2] |
|
||||
| B.cpp:33:16:33:17 | e1 | semmle.label | e1 |
|
||||
| B.cpp:33:26:33:27 | e2 | semmle.label | e2 |
|
||||
| B.cpp:35:7:35:10 | this [post update] [elem1] | semmle.label | this [post update] [elem1] |
|
||||
| B.cpp:35:7:35:22 | ... = ... | semmle.label | ... = ... |
|
||||
| B.cpp:36:7:36:10 | this [post update] [elem2] | semmle.label | this [post update] [elem2] |
|
||||
| B.cpp:36:7:36:22 | ... = ... | semmle.label | ... = ... |
|
||||
| B.cpp:44:5:44:8 | this [Return] [box1, elem1] | semmle.label | this [Return] [box1, elem1] |
|
||||
| B.cpp:44:5:44:8 | this [Return] [box1, elem2] | semmle.label | this [Return] [box1, elem2] |
|
||||
| B.cpp:44:16:44:17 | b1 [elem1] | semmle.label | b1 [elem1] |
|
||||
| B.cpp:44:16:44:17 | b1 [elem2] | semmle.label | b1 [elem2] |
|
||||
| B.cpp:46:7:46:10 | this [post update] [box1, elem1] | semmle.label | this [post update] [box1, elem1] |
|
||||
@@ -903,6 +951,8 @@ nodes
|
||||
| C.cpp:18:12:18:18 | call to C [s3] | semmle.label | call to C [s3] |
|
||||
| C.cpp:19:5:19:5 | c [s1] | semmle.label | c [s1] |
|
||||
| C.cpp:19:5:19:5 | c [s3] | semmle.label | c [s3] |
|
||||
| C.cpp:22:3:22:3 | this [Return] [s1] | semmle.label | this [Return] [s1] |
|
||||
| C.cpp:22:3:22:3 | this [Return] [s3] | semmle.label | this [Return] [s3] |
|
||||
| C.cpp:22:9:22:22 | constructor init of field s1 [post-this] [s1] | semmle.label | constructor init of field s1 [post-this] [s1] |
|
||||
| C.cpp:22:12:22:21 | new | semmle.label | new |
|
||||
| C.cpp:24:5:24:8 | this [post update] [s3] | semmle.label | this [post update] [s3] |
|
||||
@@ -917,6 +967,7 @@ nodes
|
||||
| D.cpp:10:11:10:17 | this [elem] | semmle.label | this [elem] |
|
||||
| D.cpp:10:30:10:33 | elem | semmle.label | elem |
|
||||
| D.cpp:10:30:10:33 | this [elem] | semmle.label | this [elem] |
|
||||
| D.cpp:11:10:11:16 | this [Return] [elem] | semmle.label | this [Return] [elem] |
|
||||
| D.cpp:11:24:11:24 | e | semmle.label | e |
|
||||
| D.cpp:11:29:11:32 | this [post update] [elem] | semmle.label | this [post update] [elem] |
|
||||
| D.cpp:11:29:11:36 | ... = ... | semmle.label | ... = ... |
|
||||
@@ -973,10 +1024,12 @@ nodes
|
||||
| E.cpp:32:13:32:18 | buffer | semmle.label | buffer |
|
||||
| E.cpp:33:18:33:19 | & ... [data, buffer] | semmle.label | & ... [data, buffer] |
|
||||
| E.cpp:33:19:33:19 | p [data, buffer] | semmle.label | p [data, buffer] |
|
||||
| aliasing.cpp:8:23:8:23 | s [Return] [m1] | semmle.label | s [Return] [m1] |
|
||||
| aliasing.cpp:8:23:8:23 | s [m1] | semmle.label | s [m1] |
|
||||
| aliasing.cpp:9:3:9:3 | s [post update] [m1] | semmle.label | s [post update] [m1] |
|
||||
| aliasing.cpp:9:3:9:22 | ... = ... | semmle.label | ... = ... |
|
||||
| aliasing.cpp:9:11:9:20 | call to user_input | semmle.label | call to user_input |
|
||||
| aliasing.cpp:12:25:12:25 | s [Return] [m1] | semmle.label | s [Return] [m1] |
|
||||
| aliasing.cpp:12:25:12:25 | s [m1] | semmle.label | s [m1] |
|
||||
| aliasing.cpp:13:3:13:3 | s [post update] [m1] | semmle.label | s [post update] [m1] |
|
||||
| aliasing.cpp:13:3:13:21 | ... = ... | semmle.label | ... = ... |
|
||||
@@ -1000,7 +1053,7 @@ nodes
|
||||
| aliasing.cpp:93:10:93:10 | s [m1] | semmle.label | s [m1] |
|
||||
| aliasing.cpp:93:12:93:13 | m1 | semmle.label | m1 |
|
||||
| aliasing.cpp:105:23:105:24 | pa | semmle.label | pa |
|
||||
| aliasing.cpp:106:4:106:5 | pa [inner post update] | semmle.label | pa [inner post update] |
|
||||
| aliasing.cpp:105:23:105:24 | pa [Return] | semmle.label | pa [Return] |
|
||||
| aliasing.cpp:106:9:106:18 | call to user_input | semmle.label | call to user_input |
|
||||
| aliasing.cpp:158:15:158:15 | s [post update] [data] | semmle.label | s [post update] [data] |
|
||||
| aliasing.cpp:158:17:158:20 | ref arg data | semmle.label | ref arg data |
|
||||
@@ -1085,16 +1138,20 @@ nodes
|
||||
| arrays.cpp:44:10:44:17 | indirect [arr, data] | semmle.label | indirect [arr, data] |
|
||||
| arrays.cpp:44:20:44:22 | arr [data] | semmle.label | arr [data] |
|
||||
| arrays.cpp:44:27:44:30 | data | semmle.label | data |
|
||||
| by_reference.cpp:11:39:11:39 | s [Return] [a] | semmle.label | s [Return] [a] |
|
||||
| by_reference.cpp:11:39:11:39 | s [a] | semmle.label | s [a] |
|
||||
| by_reference.cpp:11:48:11:52 | value | semmle.label | value |
|
||||
| by_reference.cpp:12:5:12:5 | s [post update] [a] | semmle.label | s [post update] [a] |
|
||||
| by_reference.cpp:12:5:12:16 | ... = ... | semmle.label | ... = ... |
|
||||
| by_reference.cpp:15:8:15:18 | this [Return] [a] | semmle.label | this [Return] [a] |
|
||||
| by_reference.cpp:15:26:15:30 | value | semmle.label | value |
|
||||
| by_reference.cpp:16:5:16:8 | this [post update] [a] | semmle.label | this [post update] [a] |
|
||||
| by_reference.cpp:16:5:16:19 | ... = ... | semmle.label | ... = ... |
|
||||
| by_reference.cpp:19:8:19:20 | this [Return] [a] | semmle.label | this [Return] [a] |
|
||||
| by_reference.cpp:19:28:19:32 | value | semmle.label | value |
|
||||
| by_reference.cpp:20:5:20:8 | ref arg this [a] | semmle.label | ref arg this [a] |
|
||||
| by_reference.cpp:20:23:20:27 | value | semmle.label | value |
|
||||
| by_reference.cpp:23:8:23:26 | this [Return] [a] | semmle.label | this [Return] [a] |
|
||||
| by_reference.cpp:23:34:23:38 | value | semmle.label | value |
|
||||
| by_reference.cpp:24:19:24:22 | ref arg this [a] | semmle.label | ref arg this [a] |
|
||||
| by_reference.cpp:24:25:24:29 | value | semmle.label | value |
|
||||
@@ -1127,16 +1184,18 @@ nodes
|
||||
| by_reference.cpp:69:8:69:20 | call to nonMemberGetA | semmle.label | call to nonMemberGetA |
|
||||
| by_reference.cpp:69:22:69:23 | & ... [a] | semmle.label | & ... [a] |
|
||||
| by_reference.cpp:69:23:69:23 | s [a] | semmle.label | s [a] |
|
||||
| by_reference.cpp:83:31:83:35 | inner [Return] [a] | semmle.label | inner [Return] [a] |
|
||||
| by_reference.cpp:83:31:83:35 | inner [a] | semmle.label | inner [a] |
|
||||
| by_reference.cpp:84:3:84:7 | inner [post update] [a] | semmle.label | inner [post update] [a] |
|
||||
| by_reference.cpp:84:3:84:25 | ... = ... | semmle.label | ... = ... |
|
||||
| by_reference.cpp:84:14:84:23 | call to user_input | semmle.label | call to user_input |
|
||||
| by_reference.cpp:87:31:87:35 | inner [Return] [a] | semmle.label | inner [Return] [a] |
|
||||
| by_reference.cpp:87:31:87:35 | inner [a] | semmle.label | inner [a] |
|
||||
| by_reference.cpp:88:3:88:7 | inner [post update] [a] | semmle.label | inner [post update] [a] |
|
||||
| by_reference.cpp:88:3:88:24 | ... = ... | semmle.label | ... = ... |
|
||||
| by_reference.cpp:88:13:88:22 | call to user_input | semmle.label | call to user_input |
|
||||
| by_reference.cpp:91:25:91:26 | pa | semmle.label | pa |
|
||||
| by_reference.cpp:92:4:92:5 | pa [inner post update] | semmle.label | pa [inner post update] |
|
||||
| by_reference.cpp:91:25:91:26 | pa [Return] | semmle.label | pa [Return] |
|
||||
| by_reference.cpp:92:9:92:18 | call to user_input | semmle.label | call to user_input |
|
||||
| by_reference.cpp:95:25:95:26 | pa | semmle.label | pa |
|
||||
| by_reference.cpp:96:8:96:17 | call to user_input | semmle.label | call to user_input |
|
||||
@@ -1253,9 +1312,11 @@ nodes
|
||||
| complex.cpp:10:7:10:7 | this [b_] | semmle.label | this [b_] |
|
||||
| complex.cpp:10:20:10:21 | b_ | semmle.label | b_ |
|
||||
| complex.cpp:10:20:10:21 | this [b_] | semmle.label | this [b_] |
|
||||
| complex.cpp:11:8:11:11 | this [Return] [a_] | semmle.label | this [Return] [a_] |
|
||||
| complex.cpp:11:17:11:17 | a | semmle.label | a |
|
||||
| complex.cpp:11:22:11:23 | this [post update] [a_] | semmle.label | this [post update] [a_] |
|
||||
| complex.cpp:11:22:11:27 | ... = ... | semmle.label | ... = ... |
|
||||
| complex.cpp:12:8:12:11 | this [Return] [b_] | semmle.label | this [Return] [b_] |
|
||||
| complex.cpp:12:17:12:17 | b | semmle.label | b |
|
||||
| complex.cpp:12:22:12:23 | this [post update] [b_] | semmle.label | this [post update] [b_] |
|
||||
| complex.cpp:12:22:12:27 | ... = ... | semmle.label | ... = ... |
|
||||
@@ -1321,6 +1382,8 @@ nodes
|
||||
| constructors.cpp:19:9:19:9 | this [b_] | semmle.label | this [b_] |
|
||||
| constructors.cpp:19:22:19:23 | b_ | semmle.label | b_ |
|
||||
| constructors.cpp:19:22:19:23 | this [b_] | semmle.label | this [b_] |
|
||||
| constructors.cpp:23:5:23:7 | this [Return] [a_] | semmle.label | this [Return] [a_] |
|
||||
| constructors.cpp:23:5:23:7 | this [Return] [b_] | semmle.label | this [Return] [b_] |
|
||||
| constructors.cpp:23:13:23:13 | a | semmle.label | a |
|
||||
| constructors.cpp:23:20:23:20 | b | semmle.label | b |
|
||||
| constructors.cpp:23:25:23:29 | constructor init of field a_ [post-this] [a_] | semmle.label | constructor init of field a_ [post-this] [a_] |
|
||||
@@ -1345,13 +1408,16 @@ nodes
|
||||
| constructors.cpp:43:9:43:9 | g [b_] | semmle.label | g [b_] |
|
||||
| constructors.cpp:46:9:46:9 | h [a_] | semmle.label | h [a_] |
|
||||
| constructors.cpp:46:9:46:9 | h [b_] | semmle.label | h [b_] |
|
||||
| qualifiers.cpp:9:10:9:13 | this [Return] [a] | semmle.label | this [Return] [a] |
|
||||
| qualifiers.cpp:9:21:9:25 | value | semmle.label | value |
|
||||
| qualifiers.cpp:9:30:9:33 | this [post update] [a] | semmle.label | this [post update] [a] |
|
||||
| qualifiers.cpp:9:30:9:44 | ... = ... | semmle.label | ... = ... |
|
||||
| qualifiers.cpp:12:27:12:31 | inner [Return] [a] | semmle.label | inner [Return] [a] |
|
||||
| qualifiers.cpp:12:27:12:31 | inner [a] | semmle.label | inner [a] |
|
||||
| qualifiers.cpp:12:40:12:44 | value | semmle.label | value |
|
||||
| qualifiers.cpp:12:49:12:53 | inner [post update] [a] | semmle.label | inner [post update] [a] |
|
||||
| qualifiers.cpp:12:49:12:64 | ... = ... | semmle.label | ... = ... |
|
||||
| qualifiers.cpp:13:29:13:33 | inner [Return] [a] | semmle.label | inner [Return] [a] |
|
||||
| qualifiers.cpp:13:29:13:33 | inner [a] | semmle.label | inner [a] |
|
||||
| qualifiers.cpp:13:42:13:46 | value | semmle.label | value |
|
||||
| qualifiers.cpp:13:51:13:55 | inner [post update] [a] | semmle.label | inner [post update] [a] |
|
||||
@@ -1425,9 +1491,11 @@ nodes
|
||||
| simple.cpp:19:9:19:9 | this [b_] | semmle.label | this [b_] |
|
||||
| simple.cpp:19:22:19:23 | b_ | semmle.label | b_ |
|
||||
| simple.cpp:19:22:19:23 | this [b_] | semmle.label | this [b_] |
|
||||
| simple.cpp:20:10:20:13 | this [Return] [a_] | semmle.label | this [Return] [a_] |
|
||||
| simple.cpp:20:19:20:19 | a | semmle.label | a |
|
||||
| simple.cpp:20:24:20:25 | this [post update] [a_] | semmle.label | this [post update] [a_] |
|
||||
| simple.cpp:20:24:20:29 | ... = ... | semmle.label | ... = ... |
|
||||
| simple.cpp:21:10:21:13 | this [Return] [b_] | semmle.label | this [Return] [b_] |
|
||||
| simple.cpp:21:19:21:19 | b | semmle.label | b |
|
||||
| simple.cpp:21:24:21:25 | this [post update] [b_] | semmle.label | this [post update] [b_] |
|
||||
| simple.cpp:21:24:21:29 | ... = ... | semmle.label | ... = ... |
|
||||
@@ -1513,71 +1581,71 @@ nodes
|
||||
| struct_init.c:46:10:46:14 | outer [pointerAB, a] | semmle.label | outer [pointerAB, a] |
|
||||
| struct_init.c:46:16:46:24 | pointerAB [a] | semmle.label | pointerAB [a] |
|
||||
subpaths
|
||||
| A.cpp:31:20:31:20 | c | A.cpp:23:10:23:10 | c | A.cpp:25:7:25:10 | this [post update] [c] | A.cpp:31:14:31:21 | call to B [c] |
|
||||
| A.cpp:31:20:31:20 | c | A.cpp:23:10:23:10 | c | A.cpp:23:5:23:5 | this [Return] [c] | A.cpp:31:14:31:21 | call to B [c] |
|
||||
| A.cpp:48:20:48:20 | c | A.cpp:29:23:29:23 | c | A.cpp:31:14:31:21 | new [c] | A.cpp:48:12:48:18 | call to make [c] |
|
||||
| A.cpp:55:12:55:19 | new | A.cpp:27:17:27:17 | c | A.cpp:27:22:27:25 | this [post update] [c] | A.cpp:55:5:55:5 | ref arg b [c] |
|
||||
| A.cpp:55:12:55:19 | new | A.cpp:27:17:27:17 | c | A.cpp:27:10:27:12 | this [Return] [c] | A.cpp:55:5:55:5 | ref arg b [c] |
|
||||
| A.cpp:56:10:56:10 | b [c] | A.cpp:28:8:28:10 | this [c] | A.cpp:28:29:28:29 | c | A.cpp:56:13:56:15 | call to get |
|
||||
| A.cpp:57:11:57:24 | new [c] | A.cpp:28:8:28:10 | this [c] | A.cpp:28:29:28:29 | c | A.cpp:57:28:57:30 | call to get |
|
||||
| A.cpp:57:17:57:23 | new | A.cpp:23:10:23:10 | c | A.cpp:25:7:25:10 | this [post update] [c] | A.cpp:57:11:57:24 | call to B [c] |
|
||||
| A.cpp:57:17:57:23 | new | A.cpp:23:10:23:10 | c | A.cpp:23:5:23:5 | this [Return] [c] | A.cpp:57:11:57:24 | call to B [c] |
|
||||
| A.cpp:64:21:64:28 | new | A.cpp:85:26:85:26 | c | A.cpp:91:14:91:15 | b2 [c] | A.cpp:64:10:64:15 | call to setOnB [c] |
|
||||
| A.cpp:73:25:73:32 | new | A.cpp:78:27:78:27 | c | A.cpp:82:12:82:24 | ... ? ... : ... [c] | A.cpp:73:10:73:19 | call to setOnBWrap [c] |
|
||||
| A.cpp:81:21:81:21 | c | A.cpp:85:26:85:26 | c | A.cpp:91:14:91:15 | b2 [c] | A.cpp:81:10:81:15 | call to setOnB [c] |
|
||||
| A.cpp:90:15:90:15 | c | A.cpp:27:17:27:17 | c | A.cpp:27:22:27:25 | this [post update] [c] | A.cpp:90:7:90:8 | ref arg b2 [c] |
|
||||
| A.cpp:126:12:126:18 | new | A.cpp:27:17:27:17 | c | A.cpp:27:22:27:25 | this [post update] [c] | A.cpp:126:5:126:5 | ref arg b [c] |
|
||||
| A.cpp:151:18:151:18 | b | A.cpp:140:13:140:13 | b | A.cpp:143:7:143:10 | this [post update] [b] | A.cpp:151:12:151:24 | call to D [b] |
|
||||
| A.cpp:90:15:90:15 | c | A.cpp:27:17:27:17 | c | A.cpp:27:10:27:12 | this [Return] [c] | A.cpp:90:7:90:8 | ref arg b2 [c] |
|
||||
| A.cpp:126:12:126:18 | new | A.cpp:27:17:27:17 | c | A.cpp:27:10:27:12 | this [Return] [c] | A.cpp:126:5:126:5 | ref arg b [c] |
|
||||
| A.cpp:151:18:151:18 | b | A.cpp:140:13:140:13 | b | A.cpp:140:5:140:5 | this [Return] [b] | A.cpp:151:12:151:24 | call to D [b] |
|
||||
| A.cpp:152:13:152:13 | b [c] | A.cpp:173:26:173:26 | o [c] | A.cpp:173:26:173:26 | o [c] | A.cpp:152:13:152:13 | ref arg b [c] |
|
||||
| A.cpp:160:29:160:29 | b | A.cpp:181:15:181:21 | newHead | A.cpp:183:7:183:10 | this [post update] [head] | A.cpp:160:18:160:60 | call to MyList [head] |
|
||||
| A.cpp:161:38:161:39 | l1 [head] | A.cpp:181:32:181:35 | next [head] | A.cpp:184:7:184:10 | this [post update] [next, head] | A.cpp:161:18:161:40 | call to MyList [next, head] |
|
||||
| A.cpp:162:38:162:39 | l2 [next, head] | A.cpp:181:32:181:35 | next [next, head] | A.cpp:184:7:184:10 | this [post update] [next, next, head] | A.cpp:162:18:162:40 | call to MyList [next, next, head] |
|
||||
| A.cpp:160:29:160:29 | b | A.cpp:181:15:181:21 | newHead | A.cpp:181:5:181:10 | this [Return] [head] | A.cpp:160:18:160:60 | call to MyList [head] |
|
||||
| A.cpp:161:38:161:39 | l1 [head] | A.cpp:181:32:181:35 | next [head] | A.cpp:181:5:181:10 | this [Return] [next, head] | A.cpp:161:18:161:40 | call to MyList [next, head] |
|
||||
| A.cpp:162:38:162:39 | l2 [next, head] | A.cpp:181:32:181:35 | next [next, head] | A.cpp:181:5:181:10 | this [Return] [next, next, head] | A.cpp:162:18:162:40 | call to MyList [next, next, head] |
|
||||
| A.cpp:165:26:165:29 | head | A.cpp:173:26:173:26 | o | A.cpp:173:26:173:26 | o | A.cpp:165:26:165:29 | ref arg head |
|
||||
| B.cpp:7:25:7:25 | e | B.cpp:33:16:33:17 | e1 | B.cpp:35:7:35:10 | this [post update] [elem1] | B.cpp:7:16:7:35 | call to Box1 [elem1] |
|
||||
| B.cpp:8:25:8:26 | b1 [elem1] | B.cpp:44:16:44:17 | b1 [elem1] | B.cpp:46:7:46:10 | this [post update] [box1, elem1] | B.cpp:8:16:8:27 | call to Box2 [box1, elem1] |
|
||||
| B.cpp:16:37:16:37 | e | B.cpp:33:26:33:27 | e2 | B.cpp:36:7:36:10 | this [post update] [elem2] | B.cpp:16:16:16:38 | call to Box1 [elem2] |
|
||||
| B.cpp:17:25:17:26 | b1 [elem2] | B.cpp:44:16:44:17 | b1 [elem2] | B.cpp:46:7:46:10 | this [post update] [box1, elem2] | B.cpp:17:16:17:27 | call to Box2 [box1, elem2] |
|
||||
| B.cpp:7:25:7:25 | e | B.cpp:33:16:33:17 | e1 | B.cpp:33:5:33:8 | this [Return] [elem1] | B.cpp:7:16:7:35 | call to Box1 [elem1] |
|
||||
| B.cpp:8:25:8:26 | b1 [elem1] | B.cpp:44:16:44:17 | b1 [elem1] | B.cpp:44:5:44:8 | this [Return] [box1, elem1] | B.cpp:8:16:8:27 | call to Box2 [box1, elem1] |
|
||||
| B.cpp:16:37:16:37 | e | B.cpp:33:26:33:27 | e2 | B.cpp:33:5:33:8 | this [Return] [elem2] | B.cpp:16:16:16:38 | call to Box1 [elem2] |
|
||||
| B.cpp:17:25:17:26 | b1 [elem2] | B.cpp:44:16:44:17 | b1 [elem2] | B.cpp:44:5:44:8 | this [Return] [box1, elem2] | B.cpp:17:16:17:27 | call to Box2 [box1, elem2] |
|
||||
| D.cpp:22:10:22:11 | b2 [box, elem] | D.cpp:17:11:17:17 | this [box, elem] | D.cpp:17:30:17:32 | box [elem] | D.cpp:22:14:22:20 | call to getBox1 [elem] |
|
||||
| D.cpp:22:14:22:20 | call to getBox1 [elem] | D.cpp:10:11:10:17 | this [elem] | D.cpp:10:30:10:33 | elem | D.cpp:22:25:22:31 | call to getElem |
|
||||
| D.cpp:37:21:37:21 | e | D.cpp:11:24:11:24 | e | D.cpp:11:29:11:32 | this [post update] [elem] | D.cpp:37:8:37:10 | ref arg box [elem] |
|
||||
| D.cpp:51:27:51:27 | e | D.cpp:11:24:11:24 | e | D.cpp:11:29:11:32 | this [post update] [elem] | D.cpp:51:8:51:14 | ref arg call to getBox1 [elem] |
|
||||
| D.cpp:37:21:37:21 | e | D.cpp:11:24:11:24 | e | D.cpp:11:10:11:16 | this [Return] [elem] | D.cpp:37:8:37:10 | ref arg box [elem] |
|
||||
| D.cpp:51:27:51:27 | e | D.cpp:11:24:11:24 | e | D.cpp:11:10:11:16 | this [Return] [elem] | D.cpp:51:8:51:14 | ref arg call to getBox1 [elem] |
|
||||
| arrays.cpp:37:24:37:27 | data | realistic.cpp:41:17:41:17 | o | realistic.cpp:41:17:41:17 | o | arrays.cpp:37:24:37:27 | ref arg data |
|
||||
| arrays.cpp:43:27:43:30 | data | realistic.cpp:41:17:41:17 | o | realistic.cpp:41:17:41:17 | o | arrays.cpp:43:27:43:30 | ref arg data |
|
||||
| by_reference.cpp:20:23:20:27 | value | by_reference.cpp:15:26:15:30 | value | by_reference.cpp:16:5:16:8 | this [post update] [a] | by_reference.cpp:20:5:20:8 | ref arg this [a] |
|
||||
| by_reference.cpp:20:23:20:27 | value | by_reference.cpp:15:26:15:30 | value | by_reference.cpp:15:8:15:18 | this [Return] [a] | by_reference.cpp:20:5:20:8 | ref arg this [a] |
|
||||
| by_reference.cpp:24:25:24:29 | value | by_reference.cpp:11:48:11:52 | value | by_reference.cpp:11:39:11:39 | s [Return] [a] | by_reference.cpp:24:19:24:22 | ref arg this [a] |
|
||||
| by_reference.cpp:24:25:24:29 | value | by_reference.cpp:11:48:11:52 | value | by_reference.cpp:11:39:11:39 | s [a] | by_reference.cpp:24:19:24:22 | ref arg this [a] |
|
||||
| by_reference.cpp:24:25:24:29 | value | by_reference.cpp:11:48:11:52 | value | by_reference.cpp:12:5:12:5 | s [post update] [a] | by_reference.cpp:24:19:24:22 | ref arg this [a] |
|
||||
| by_reference.cpp:40:12:40:15 | this [a] | by_reference.cpp:35:9:35:19 | this [a] | by_reference.cpp:36:18:36:18 | a | by_reference.cpp:40:18:40:28 | call to getDirectly |
|
||||
| by_reference.cpp:44:26:44:29 | this [a] | by_reference.cpp:31:46:31:46 | s [a] | by_reference.cpp:32:15:32:15 | a | by_reference.cpp:44:12:44:24 | call to nonMemberGetA |
|
||||
| by_reference.cpp:50:17:50:26 | call to user_input | by_reference.cpp:15:26:15:30 | value | by_reference.cpp:16:5:16:8 | this [post update] [a] | by_reference.cpp:50:3:50:3 | ref arg s [a] |
|
||||
| by_reference.cpp:50:17:50:26 | call to user_input | by_reference.cpp:15:26:15:30 | value | by_reference.cpp:15:8:15:18 | this [Return] [a] | by_reference.cpp:50:3:50:3 | ref arg s [a] |
|
||||
| by_reference.cpp:51:8:51:8 | s [a] | by_reference.cpp:35:9:35:19 | this [a] | by_reference.cpp:36:18:36:18 | a | by_reference.cpp:51:10:51:20 | call to getDirectly |
|
||||
| by_reference.cpp:56:19:56:28 | call to user_input | by_reference.cpp:19:28:19:32 | value | by_reference.cpp:20:5:20:8 | ref arg this [a] | by_reference.cpp:56:3:56:3 | ref arg s [a] |
|
||||
| by_reference.cpp:56:19:56:28 | call to user_input | by_reference.cpp:19:28:19:32 | value | by_reference.cpp:19:8:19:20 | this [Return] [a] | by_reference.cpp:56:3:56:3 | ref arg s [a] |
|
||||
| by_reference.cpp:57:8:57:8 | s [a] | by_reference.cpp:39:9:39:21 | this [a] | by_reference.cpp:40:18:40:28 | call to getDirectly | by_reference.cpp:57:10:57:22 | call to getIndirectly |
|
||||
| by_reference.cpp:62:25:62:34 | call to user_input | by_reference.cpp:23:34:23:38 | value | by_reference.cpp:24:19:24:22 | ref arg this [a] | by_reference.cpp:62:3:62:3 | ref arg s [a] |
|
||||
| by_reference.cpp:62:25:62:34 | call to user_input | by_reference.cpp:23:34:23:38 | value | by_reference.cpp:23:8:23:26 | this [Return] [a] | by_reference.cpp:62:3:62:3 | ref arg s [a] |
|
||||
| by_reference.cpp:63:8:63:8 | s [a] | by_reference.cpp:43:9:43:27 | this [a] | by_reference.cpp:44:12:44:24 | call to nonMemberGetA | by_reference.cpp:63:10:63:28 | call to getThroughNonMember |
|
||||
| by_reference.cpp:68:21:68:30 | call to user_input | by_reference.cpp:11:48:11:52 | value | by_reference.cpp:11:39:11:39 | s [Return] [a] | by_reference.cpp:68:17:68:18 | ref arg & ... [a] |
|
||||
| by_reference.cpp:68:21:68:30 | call to user_input | by_reference.cpp:11:48:11:52 | value | by_reference.cpp:11:39:11:39 | s [a] | by_reference.cpp:68:17:68:18 | ref arg & ... [a] |
|
||||
| by_reference.cpp:68:21:68:30 | call to user_input | by_reference.cpp:11:48:11:52 | value | by_reference.cpp:12:5:12:5 | s [post update] [a] | by_reference.cpp:68:17:68:18 | ref arg & ... [a] |
|
||||
| by_reference.cpp:69:22:69:23 | & ... [a] | by_reference.cpp:31:46:31:46 | s [a] | by_reference.cpp:32:15:32:15 | a | by_reference.cpp:69:8:69:20 | call to nonMemberGetA |
|
||||
| complex.cpp:42:16:42:16 | f [a_] | complex.cpp:9:7:9:7 | this [a_] | complex.cpp:9:20:9:21 | a_ | complex.cpp:42:18:42:18 | call to a |
|
||||
| complex.cpp:43:16:43:16 | f [b_] | complex.cpp:10:7:10:7 | this [b_] | complex.cpp:10:20:10:21 | b_ | complex.cpp:43:18:43:18 | call to b |
|
||||
| complex.cpp:53:19:53:28 | call to user_input | complex.cpp:11:17:11:17 | a | complex.cpp:11:22:11:23 | this [post update] [a_] | complex.cpp:53:12:53:12 | ref arg f [a_] |
|
||||
| complex.cpp:54:19:54:28 | call to user_input | complex.cpp:12:17:12:17 | b | complex.cpp:12:22:12:23 | this [post update] [b_] | complex.cpp:54:12:54:12 | ref arg f [b_] |
|
||||
| complex.cpp:55:19:55:28 | call to user_input | complex.cpp:11:17:11:17 | a | complex.cpp:11:22:11:23 | this [post update] [a_] | complex.cpp:55:12:55:12 | ref arg f [a_] |
|
||||
| complex.cpp:56:19:56:28 | call to user_input | complex.cpp:12:17:12:17 | b | complex.cpp:12:22:12:23 | this [post update] [b_] | complex.cpp:56:12:56:12 | ref arg f [b_] |
|
||||
| complex.cpp:53:19:53:28 | call to user_input | complex.cpp:11:17:11:17 | a | complex.cpp:11:8:11:11 | this [Return] [a_] | complex.cpp:53:12:53:12 | ref arg f [a_] |
|
||||
| complex.cpp:54:19:54:28 | call to user_input | complex.cpp:12:17:12:17 | b | complex.cpp:12:8:12:11 | this [Return] [b_] | complex.cpp:54:12:54:12 | ref arg f [b_] |
|
||||
| complex.cpp:55:19:55:28 | call to user_input | complex.cpp:11:17:11:17 | a | complex.cpp:11:8:11:11 | this [Return] [a_] | complex.cpp:55:12:55:12 | ref arg f [a_] |
|
||||
| complex.cpp:56:19:56:28 | call to user_input | complex.cpp:12:17:12:17 | b | complex.cpp:12:8:12:11 | this [Return] [b_] | complex.cpp:56:12:56:12 | ref arg f [b_] |
|
||||
| constructors.cpp:28:10:28:10 | f [a_] | constructors.cpp:18:9:18:9 | this [a_] | constructors.cpp:18:22:18:23 | a_ | constructors.cpp:28:12:28:12 | call to a |
|
||||
| constructors.cpp:29:10:29:10 | f [b_] | constructors.cpp:19:9:19:9 | this [b_] | constructors.cpp:19:22:19:23 | b_ | constructors.cpp:29:12:29:12 | call to b |
|
||||
| constructors.cpp:34:11:34:20 | call to user_input | constructors.cpp:23:13:23:13 | a | constructors.cpp:23:25:23:29 | constructor init of field a_ [post-this] [a_] | constructors.cpp:34:11:34:26 | call to Foo [a_] |
|
||||
| constructors.cpp:35:14:35:23 | call to user_input | constructors.cpp:23:20:23:20 | b | constructors.cpp:23:32:23:36 | constructor init of field b_ [post-this] [b_] | constructors.cpp:35:11:35:26 | call to Foo [b_] |
|
||||
| constructors.cpp:36:11:36:20 | call to user_input | constructors.cpp:23:13:23:13 | a | constructors.cpp:23:25:23:29 | constructor init of field a_ [post-this] [a_] | constructors.cpp:36:11:36:37 | call to Foo [a_] |
|
||||
| constructors.cpp:36:25:36:34 | call to user_input | constructors.cpp:23:20:23:20 | b | constructors.cpp:23:32:23:36 | constructor init of field b_ [post-this] [b_] | constructors.cpp:36:11:36:37 | call to Foo [b_] |
|
||||
| qualifiers.cpp:27:28:27:37 | call to user_input | qualifiers.cpp:9:21:9:25 | value | qualifiers.cpp:9:30:9:33 | this [post update] [a] | qualifiers.cpp:27:11:27:18 | ref arg call to getInner [a] |
|
||||
| constructors.cpp:34:11:34:20 | call to user_input | constructors.cpp:23:13:23:13 | a | constructors.cpp:23:5:23:7 | this [Return] [a_] | constructors.cpp:34:11:34:26 | call to Foo [a_] |
|
||||
| constructors.cpp:35:14:35:23 | call to user_input | constructors.cpp:23:20:23:20 | b | constructors.cpp:23:5:23:7 | this [Return] [b_] | constructors.cpp:35:11:35:26 | call to Foo [b_] |
|
||||
| constructors.cpp:36:11:36:20 | call to user_input | constructors.cpp:23:13:23:13 | a | constructors.cpp:23:5:23:7 | this [Return] [a_] | constructors.cpp:36:11:36:37 | call to Foo [a_] |
|
||||
| constructors.cpp:36:25:36:34 | call to user_input | constructors.cpp:23:20:23:20 | b | constructors.cpp:23:5:23:7 | this [Return] [b_] | constructors.cpp:36:11:36:37 | call to Foo [b_] |
|
||||
| qualifiers.cpp:27:28:27:37 | call to user_input | qualifiers.cpp:9:21:9:25 | value | qualifiers.cpp:9:10:9:13 | this [Return] [a] | qualifiers.cpp:27:11:27:18 | ref arg call to getInner [a] |
|
||||
| qualifiers.cpp:32:35:32:44 | call to user_input | qualifiers.cpp:12:40:12:44 | value | qualifiers.cpp:12:27:12:31 | inner [Return] [a] | qualifiers.cpp:32:23:32:30 | ref arg call to getInner [a] |
|
||||
| qualifiers.cpp:32:35:32:44 | call to user_input | qualifiers.cpp:12:40:12:44 | value | qualifiers.cpp:12:27:12:31 | inner [a] | qualifiers.cpp:32:23:32:30 | ref arg call to getInner [a] |
|
||||
| qualifiers.cpp:32:35:32:44 | call to user_input | qualifiers.cpp:12:40:12:44 | value | qualifiers.cpp:12:49:12:53 | inner [post update] [a] | qualifiers.cpp:32:23:32:30 | ref arg call to getInner [a] |
|
||||
| qualifiers.cpp:37:38:37:47 | call to user_input | qualifiers.cpp:13:42:13:46 | value | qualifiers.cpp:13:29:13:33 | inner [Return] [a] | qualifiers.cpp:37:19:37:35 | ref arg * ... [a] |
|
||||
| qualifiers.cpp:37:38:37:47 | call to user_input | qualifiers.cpp:13:42:13:46 | value | qualifiers.cpp:13:29:13:33 | inner [a] | qualifiers.cpp:37:19:37:35 | ref arg * ... [a] |
|
||||
| qualifiers.cpp:37:38:37:47 | call to user_input | qualifiers.cpp:13:42:13:46 | value | qualifiers.cpp:13:51:13:55 | inner [post update] [a] | qualifiers.cpp:37:19:37:35 | ref arg * ... [a] |
|
||||
| realistic.cpp:61:47:61:55 | bufferLen | realistic.cpp:41:17:41:17 | o | realistic.cpp:41:17:41:17 | o | realistic.cpp:61:47:61:55 | ref arg bufferLen |
|
||||
| simple.cpp:28:10:28:10 | f [a_] | simple.cpp:18:9:18:9 | this [a_] | simple.cpp:18:22:18:23 | a_ | simple.cpp:28:12:28:12 | call to a |
|
||||
| simple.cpp:29:10:29:10 | f [b_] | simple.cpp:19:9:19:9 | this [b_] | simple.cpp:19:22:19:23 | b_ | simple.cpp:29:12:29:12 | call to b |
|
||||
| simple.cpp:39:12:39:21 | call to user_input | simple.cpp:20:19:20:19 | a | simple.cpp:20:24:20:25 | this [post update] [a_] | simple.cpp:39:5:39:5 | ref arg f [a_] |
|
||||
| simple.cpp:40:12:40:21 | call to user_input | simple.cpp:21:19:21:19 | b | simple.cpp:21:24:21:25 | this [post update] [b_] | simple.cpp:40:5:40:5 | ref arg g [b_] |
|
||||
| simple.cpp:41:12:41:21 | call to user_input | simple.cpp:20:19:20:19 | a | simple.cpp:20:24:20:25 | this [post update] [a_] | simple.cpp:41:5:41:5 | ref arg h [a_] |
|
||||
| simple.cpp:42:12:42:21 | call to user_input | simple.cpp:21:19:21:19 | b | simple.cpp:21:24:21:25 | this [post update] [b_] | simple.cpp:42:5:42:5 | ref arg h [b_] |
|
||||
| simple.cpp:39:12:39:21 | call to user_input | simple.cpp:20:19:20:19 | a | simple.cpp:20:10:20:13 | this [Return] [a_] | simple.cpp:39:5:39:5 | ref arg f [a_] |
|
||||
| simple.cpp:40:12:40:21 | call to user_input | simple.cpp:21:19:21:19 | b | simple.cpp:21:10:21:13 | this [Return] [b_] | simple.cpp:40:5:40:5 | ref arg g [b_] |
|
||||
| simple.cpp:41:12:41:21 | call to user_input | simple.cpp:20:19:20:19 | a | simple.cpp:20:10:20:13 | this [Return] [a_] | simple.cpp:41:5:41:5 | ref arg h [a_] |
|
||||
| simple.cpp:42:12:42:21 | call to user_input | simple.cpp:21:19:21:19 | b | simple.cpp:21:10:21:13 | this [Return] [b_] | simple.cpp:42:5:42:5 | ref arg h [b_] |
|
||||
| simple.cpp:84:14:84:20 | this [f2, f1] | simple.cpp:78:9:78:15 | this [f2, f1] | simple.cpp:79:19:79:20 | f1 | simple.cpp:84:14:84:20 | call to getf2f1 |
|
||||
| struct_init.c:15:12:15:12 | a | realistic.cpp:41:17:41:17 | o | realistic.cpp:41:17:41:17 | o | struct_init.c:15:12:15:12 | ref arg a |
|
||||
| struct_init.c:22:11:22:11 | a | realistic.cpp:41:17:41:17 | o | realistic.cpp:41:17:41:17 | o | struct_init.c:22:11:22:11 | ref arg a |
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
| test.cpp:3:11:3:15 | local | Variable 'local' is not initialized. |
|
||||
| test.cpp:12:5:12:24 | uninitialised_global | Variable 'uninitialised_global' is not initialized. |
|
||||
@@ -0,0 +1 @@
|
||||
Critical/NotInitialised.ql
|
||||
20
cpp/ql/test/query-tests/Critical/NotInitialised/test.cpp
Normal file
20
cpp/ql/test/query-tests/Critical/NotInitialised/test.cpp
Normal file
@@ -0,0 +1,20 @@
|
||||
void test1() {
|
||||
int local;
|
||||
int x = local; // BAD
|
||||
|
||||
static int static_local;
|
||||
int y = static_local; // GOOD
|
||||
|
||||
int initialised = 42;
|
||||
int z = initialised; // GOOD
|
||||
}
|
||||
|
||||
int uninitialised_global; // BAD
|
||||
static int uninitialised_static_global; // GOOD
|
||||
int initialized_global = 0; // GOOD
|
||||
|
||||
void test2() {
|
||||
int a = uninitialised_global;
|
||||
int b = uninitialised_static_global;
|
||||
int c = initialized_global;
|
||||
}
|
||||
@@ -1,8 +1,9 @@
|
||||
| test.cpp:12:25:12:34 | call to ntohl | Unchecked use of data from network function $@. | test.cpp:12:25:12:34 | call to ntohl | call to ntohl |
|
||||
| test.cpp:21:26:21:29 | len2 | Unchecked use of data from network function $@. | test.cpp:10:16:10:25 | call to ntohl | call to ntohl |
|
||||
| test.cpp:31:26:31:29 | len2 | Unchecked use of data from network function $@. | test.cpp:10:16:10:25 | call to ntohl | call to ntohl |
|
||||
| test.cpp:61:26:61:29 | len2 | Unchecked use of data from network function $@. | test.cpp:10:16:10:25 | call to ntohl | call to ntohl |
|
||||
| test.cpp:64:9:64:12 | len2 | Unchecked use of data from network function $@. | test.cpp:10:16:10:25 | call to ntohl | call to ntohl |
|
||||
| test.cpp:73:10:73:13 | lens | Unchecked use of data from network function $@. | test.cpp:10:16:10:25 | call to ntohl | call to ntohl |
|
||||
| test.cpp:86:10:86:13 | len3 | Unchecked use of data from network function $@. | test.cpp:85:10:85:19 | call to ntohl | call to ntohl |
|
||||
| test.cpp:94:9:94:11 | len | Unchecked use of data from network function $@. | test.cpp:99:8:99:17 | call to ntohl | call to ntohl |
|
||||
| test.cpp:13:25:13:34 | call to ntohl | Unchecked use of data from network function $@. | test.cpp:13:25:13:34 | call to ntohl | call to ntohl |
|
||||
| test.cpp:22:26:22:29 | len2 | Unchecked use of data from network function $@. | test.cpp:11:16:11:25 | call to ntohl | call to ntohl |
|
||||
| test.cpp:32:26:32:29 | len2 | Unchecked use of data from network function $@. | test.cpp:11:16:11:25 | call to ntohl | call to ntohl |
|
||||
| test.cpp:62:26:62:29 | len2 | Unchecked use of data from network function $@. | test.cpp:11:16:11:25 | call to ntohl | call to ntohl |
|
||||
| test.cpp:65:9:65:12 | len2 | Unchecked use of data from network function $@. | test.cpp:11:16:11:25 | call to ntohl | call to ntohl |
|
||||
| test.cpp:74:10:74:13 | lens | Unchecked use of data from network function $@. | test.cpp:11:16:11:25 | call to ntohl | call to ntohl |
|
||||
| test.cpp:87:10:87:13 | len3 | Unchecked use of data from network function $@. | test.cpp:86:10:86:19 | call to ntohl | call to ntohl |
|
||||
| test.cpp:95:9:95:11 | len | Unchecked use of data from network function $@. | test.cpp:100:8:100:17 | call to ntohl | call to ntohl |
|
||||
| test.cpp:107:32:107:41 | call to ntohl | Unchecked use of data from network function $@. | test.cpp:107:32:107:41 | call to ntohl | call to ntohl |
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
|
||||
typedef unsigned int size_t;
|
||||
void *memcpy(void *s1, const void *s2, size_t n);
|
||||
int memcmp(void *s1, const void *s2, size_t n);
|
||||
size_t strlen(const char *s);
|
||||
int ntohl(int x);
|
||||
|
||||
@@ -98,3 +99,10 @@ void test3(size_t len)
|
||||
{
|
||||
test2(ntohl(len));
|
||||
}
|
||||
|
||||
int test4(const char *source, size_t len)
|
||||
{
|
||||
char buffer[256];
|
||||
|
||||
return memcmp(buffer, source, ntohl(len)); // BAD
|
||||
}
|
||||
|
||||
@@ -51,6 +51,8 @@ edges
|
||||
| test.cpp:187:18:187:25 | *filename | test.cpp:187:11:187:15 | strncat output argument | provenance | TaintFunction |
|
||||
| test.cpp:188:11:188:17 | strncat output argument | test.cpp:186:19:186:25 | *command | provenance | |
|
||||
| test.cpp:188:11:188:17 | strncat output argument | test.cpp:186:19:186:25 | *command | provenance | |
|
||||
| test.cpp:188:11:188:17 | strncat output argument | test.cpp:186:19:186:25 | *command [Return] | provenance | |
|
||||
| test.cpp:188:11:188:17 | strncat output argument | test.cpp:186:19:186:25 | *command [Return] | provenance | |
|
||||
| test.cpp:188:20:188:24 | *flags | test.cpp:188:11:188:17 | strncat output argument | provenance | |
|
||||
| test.cpp:188:20:188:24 | *flags | test.cpp:188:11:188:17 | strncat output argument | provenance | TaintFunction |
|
||||
| test.cpp:194:9:194:16 | fread output argument | test.cpp:196:26:196:33 | *filename | provenance | |
|
||||
@@ -125,6 +127,8 @@ nodes
|
||||
| test.cpp:183:32:183:38 | *command | semmle.label | *command |
|
||||
| test.cpp:186:19:186:25 | *command | semmle.label | *command |
|
||||
| test.cpp:186:19:186:25 | *command | semmle.label | *command |
|
||||
| test.cpp:186:19:186:25 | *command [Return] | semmle.label | *command [Return] |
|
||||
| test.cpp:186:19:186:25 | *command [Return] | semmle.label | *command [Return] |
|
||||
| test.cpp:186:47:186:54 | *filename | semmle.label | *filename |
|
||||
| test.cpp:187:11:187:15 | strncat output argument | semmle.label | strncat output argument |
|
||||
| test.cpp:187:11:187:15 | strncat output argument | semmle.label | strncat output argument |
|
||||
@@ -151,8 +155,8 @@ nodes
|
||||
subpaths
|
||||
| test.cpp:196:26:196:33 | *filename | test.cpp:186:47:186:54 | *filename | test.cpp:186:19:186:25 | *command | test.cpp:196:10:196:16 | concat output argument |
|
||||
| test.cpp:196:26:196:33 | *filename | test.cpp:186:47:186:54 | *filename | test.cpp:186:19:186:25 | *command | test.cpp:196:10:196:16 | concat output argument |
|
||||
| test.cpp:196:26:196:33 | *filename | test.cpp:186:47:186:54 | *filename | test.cpp:188:11:188:17 | strncat output argument | test.cpp:196:10:196:16 | concat output argument |
|
||||
| test.cpp:196:26:196:33 | *filename | test.cpp:186:47:186:54 | *filename | test.cpp:188:11:188:17 | strncat output argument | test.cpp:196:10:196:16 | concat output argument |
|
||||
| test.cpp:196:26:196:33 | *filename | test.cpp:186:47:186:54 | *filename | test.cpp:186:19:186:25 | *command [Return] | test.cpp:196:10:196:16 | concat output argument |
|
||||
| test.cpp:196:26:196:33 | *filename | test.cpp:186:47:186:54 | *filename | test.cpp:186:19:186:25 | *command [Return] | test.cpp:196:10:196:16 | concat output argument |
|
||||
#select
|
||||
| test.cpp:23:12:23:19 | command1 | test.cpp:15:27:15:30 | **argv | test.cpp:23:12:23:19 | *command1 | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to system(string). | test.cpp:15:27:15:30 | **argv | user input (a command-line argument) | test.cpp:22:13:22:20 | sprintf output argument | sprintf output argument |
|
||||
| test.cpp:51:10:51:16 | command | test.cpp:47:21:47:26 | *call to getenv | test.cpp:51:10:51:16 | *command | This argument to an OS command is derived from $@, dangerously concatenated into $@, and then passed to system(string). | test.cpp:47:21:47:26 | *call to getenv | user input (an environment variable) | test.cpp:50:11:50:17 | sprintf output argument | sprintf output argument |
|
||||
|
||||
@@ -53,6 +53,7 @@ edges
|
||||
| test.cpp:228:27:228:54 | call to malloc | test.cpp:228:27:228:54 | call to malloc | provenance | |
|
||||
| test.cpp:228:27:228:54 | call to malloc | test.cpp:232:10:232:15 | buffer | provenance | |
|
||||
| test.cpp:235:40:235:45 | buffer | test.cpp:236:5:236:26 | ... = ... | provenance | |
|
||||
| test.cpp:236:5:236:9 | *p_str [post update] [string] | test.cpp:235:27:235:31 | *p_str [Return] [string] | provenance | |
|
||||
| test.cpp:236:5:236:9 | *p_str [post update] [string] | test.cpp:235:27:235:31 | *p_str [string] | provenance | |
|
||||
| test.cpp:236:5:236:26 | ... = ... | test.cpp:236:5:236:9 | *p_str [post update] [string] | provenance | |
|
||||
| test.cpp:241:20:241:38 | call to malloc | test.cpp:241:20:241:38 | call to malloc | provenance | |
|
||||
@@ -128,6 +129,7 @@ nodes
|
||||
| test.cpp:228:27:228:54 | call to malloc | semmle.label | call to malloc |
|
||||
| test.cpp:228:27:228:54 | call to malloc | semmle.label | call to malloc |
|
||||
| test.cpp:232:10:232:15 | buffer | semmle.label | buffer |
|
||||
| test.cpp:235:27:235:31 | *p_str [Return] [string] | semmle.label | *p_str [Return] [string] |
|
||||
| test.cpp:235:27:235:31 | *p_str [string] | semmle.label | *p_str [string] |
|
||||
| test.cpp:235:40:235:45 | buffer | semmle.label | buffer |
|
||||
| test.cpp:236:5:236:9 | *p_str [post update] [string] | semmle.label | *p_str [post update] [string] |
|
||||
@@ -150,8 +152,8 @@ nodes
|
||||
| test.cpp:264:13:264:30 | call to malloc | semmle.label | call to malloc |
|
||||
| test.cpp:266:12:266:12 | p | semmle.label | p |
|
||||
subpaths
|
||||
| test.cpp:242:22:242:27 | buffer | test.cpp:235:40:235:45 | buffer | test.cpp:235:27:235:31 | *p_str [Return] [string] | test.cpp:242:16:242:19 | set_string output argument [string] |
|
||||
| test.cpp:242:22:242:27 | buffer | test.cpp:235:40:235:45 | buffer | test.cpp:235:27:235:31 | *p_str [string] | test.cpp:242:16:242:19 | set_string output argument [string] |
|
||||
| test.cpp:242:22:242:27 | buffer | test.cpp:235:40:235:45 | buffer | test.cpp:236:5:236:9 | *p_str [post update] [string] | test.cpp:242:16:242:19 | set_string output argument [string] |
|
||||
#select
|
||||
| test.cpp:42:5:42:11 | call to strncpy | test.cpp:18:19:18:24 | call to malloc | test.cpp:42:18:42:23 | string | This write may overflow $@ by 1 element. | test.cpp:42:18:42:23 | string | string |
|
||||
| test.cpp:72:9:72:15 | call to strncpy | test.cpp:18:19:18:24 | call to malloc | test.cpp:72:22:72:27 | string | This write may overflow $@ by 1 element. | test.cpp:72:22:72:27 | string | string |
|
||||
|
||||
@@ -12,7 +12,7 @@ edges
|
||||
| tests2.cpp:111:14:111:15 | *c1 [*ptr] | tests2.cpp:111:14:111:19 | *ptr | provenance | |
|
||||
| tests2.cpp:111:14:111:15 | *c1 [*ptr] | tests2.cpp:111:17:111:19 | *ptr | provenance | |
|
||||
| tests2.cpp:111:17:111:19 | *ptr | tests2.cpp:111:14:111:19 | *ptr | provenance | |
|
||||
| tests2.cpp:120:5:120:21 | [summary param] 1 indirection in zmq_msg_init_data | tests2.cpp:120:5:120:21 | [summary] to write: Argument[0 indirection] in zmq_msg_init_data | provenance | |
|
||||
| tests2.cpp:120:5:120:21 | [summary param] 1 indirection in zmq_msg_init_data | tests2.cpp:120:5:120:21 | [summary param] 0 indirection in zmq_msg_init_data [Return] | provenance | |
|
||||
| tests2.cpp:134:2:134:30 | *... = ... | tests2.cpp:138:23:138:34 | *message_data | provenance | |
|
||||
| tests2.cpp:134:2:134:30 | *... = ... | tests2.cpp:143:34:143:45 | *message_data | provenance | |
|
||||
| tests2.cpp:134:17:134:22 | *call to getenv | tests2.cpp:134:2:134:30 | *... = ... | provenance | |
|
||||
@@ -52,8 +52,8 @@ nodes
|
||||
| tests2.cpp:111:14:111:15 | *c1 [*ptr] | semmle.label | *c1 [*ptr] |
|
||||
| tests2.cpp:111:14:111:19 | *ptr | semmle.label | *ptr |
|
||||
| tests2.cpp:111:17:111:19 | *ptr | semmle.label | *ptr |
|
||||
| tests2.cpp:120:5:120:21 | [summary param] 0 indirection in zmq_msg_init_data [Return] | semmle.label | [summary param] 0 indirection in zmq_msg_init_data [Return] |
|
||||
| tests2.cpp:120:5:120:21 | [summary param] 1 indirection in zmq_msg_init_data | semmle.label | [summary param] 1 indirection in zmq_msg_init_data |
|
||||
| tests2.cpp:120:5:120:21 | [summary] to write: Argument[0 indirection] in zmq_msg_init_data | semmle.label | [summary] to write: Argument[0 indirection] in zmq_msg_init_data |
|
||||
| tests2.cpp:134:2:134:30 | *... = ... | semmle.label | *... = ... |
|
||||
| tests2.cpp:134:17:134:22 | *call to getenv | semmle.label | *call to getenv |
|
||||
| tests2.cpp:138:23:138:34 | *message_data | semmle.label | *message_data |
|
||||
@@ -74,7 +74,7 @@ nodes
|
||||
| tests_sysconf.cpp:36:21:36:27 | confstr output argument | semmle.label | confstr output argument |
|
||||
| tests_sysconf.cpp:39:19:39:25 | *pathbuf | semmle.label | *pathbuf |
|
||||
subpaths
|
||||
| tests2.cpp:143:34:143:45 | *message_data | tests2.cpp:120:5:120:21 | [summary param] 1 indirection in zmq_msg_init_data | tests2.cpp:120:5:120:21 | [summary] to write: Argument[0 indirection] in zmq_msg_init_data | tests2.cpp:143:24:143:31 | zmq_msg_init_data output argument |
|
||||
| tests2.cpp:143:34:143:45 | *message_data | tests2.cpp:120:5:120:21 | [summary param] 1 indirection in zmq_msg_init_data | tests2.cpp:120:5:120:21 | [summary param] 0 indirection in zmq_msg_init_data [Return] | tests2.cpp:143:24:143:31 | zmq_msg_init_data output argument |
|
||||
#select
|
||||
| tests2.cpp:63:13:63:26 | *call to getenv | tests2.cpp:63:13:63:26 | *call to getenv | tests2.cpp:63:13:63:26 | *call to getenv | This operation exposes system data from $@. | tests2.cpp:63:13:63:26 | *call to getenv | *call to getenv |
|
||||
| tests2.cpp:64:13:64:26 | *call to getenv | tests2.cpp:64:13:64:26 | *call to getenv | tests2.cpp:64:13:64:26 | *call to getenv | This operation exposes system data from $@. | tests2.cpp:64:13:64:26 | *call to getenv | *call to getenv |
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
<Project>
|
||||
<Import Project=".paket\Paket.Restore.targets" />
|
||||
</Project>
|
||||
@@ -1,12 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Autobuild.CSharp\Semmle.Autobuild.CSharp.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Autobuild.Shared\Semmle.Autobuild.Shared.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Autobuild.CSharp\Semmle.Autobuild.CSharp.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Autobuild.Shared\Semmle.Autobuild.Shared.csproj" />
|
||||
</ItemGroup>
|
||||
<Import Project="..\..\.paket\Paket.Restore.targets" />
|
||||
</Project>
|
||||
@@ -88,9 +88,9 @@ namespace Semmle.Autobuild.CSharp
|
||||
AddDiagnostic(new DiagnosticMessage(
|
||||
Options.Language,
|
||||
"buildless/mode-active",
|
||||
"C# with build-mode set to 'none'",
|
||||
"C# was extracted with build-mode set to 'none'",
|
||||
visibility: new DiagnosticMessage.TspVisibility(statusPage: true, cliSummaryTable: true, telemetry: true),
|
||||
markdownMessage: "C# with build-mode set to 'none'. This means that all C# source in the working directory will be scanned, with build tools, such as Nuget and Dotnet CLIs, only contributing information about external dependencies.",
|
||||
markdownMessage: "C# was extracted with build-mode set to 'none'. This means that all C# source in the working directory will be scanned, with build tools, such as Nuget and Dotnet CLIs, only contributing information about external dependencies.",
|
||||
severity: DiagnosticMessage.TspSeverity.Note
|
||||
));
|
||||
return 0;
|
||||
|
||||
@@ -20,4 +20,5 @@
|
||||
<ProjectReference Include="..\..\extractor\Semmle.Extraction.CSharp.DependencyFetching\Semmle.Extraction.CSharp.DependencyFetching.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Autobuild.Shared\Semmle.Autobuild.Shared.csproj" />
|
||||
</ItemGroup>
|
||||
<Import Project="..\..\.paket\Paket.Restore.targets" />
|
||||
</Project>
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
@@ -7,9 +7,9 @@
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Autobuild.Cpp\Semmle.Autobuild.Cpp.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Autobuild.Shared\Semmle.Autobuild.Shared.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
<Import Project="..\..\.paket\Paket.Restore.targets" />
|
||||
</Project>
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<AssemblyName>Semmle.Autobuild.Cpp</AssemblyName>
|
||||
@@ -11,13 +11,12 @@
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\extractor\Semmle.Util\Semmle.Util.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Autobuild.Shared\Semmle.Autobuild.Shared.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
<Import Project="..\..\.paket\Paket.Restore.targets" />
|
||||
</Project>
|
||||
@@ -1,16 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<AssemblyName>Semmle.Autobuild.Shared</AssemblyName>
|
||||
<RootNamespace>Semmle.Autobuild.Shared</RootNamespace>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\extractor\Semmle.Util\Semmle.Util.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<AssemblyName>Semmle.Autobuild.Shared</AssemblyName>
|
||||
<RootNamespace>Semmle.Autobuild.Shared</RootNamespace>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\extractor\Semmle.Util\Semmle.Util.csproj" />
|
||||
</ItemGroup>
|
||||
<Import Project="..\..\.paket\Paket.Restore.targets" />
|
||||
</Project>
|
||||
@@ -60,6 +60,11 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
|
||||
/// </summary>
|
||||
public const string FallbackNugetFeeds = "CODEQL_EXTRACTOR_CSHARP_BUILDLESS_NUGET_FEEDS_FALLBACK";
|
||||
|
||||
/// <summary>
|
||||
/// Specifies the path to the nuget executable to be used for package restoration.
|
||||
/// </summary>
|
||||
public const string NugetExePath = "CODEQL_EXTRACTOR_CSHARP_BUILDLESS_NUGET_PATH";
|
||||
|
||||
/// <summary>
|
||||
/// Specifies the location of the diagnostic directory.
|
||||
/// </summary>
|
||||
|
||||
@@ -20,6 +20,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
|
||||
private readonly Lazy<string[]> solutions;
|
||||
private readonly Lazy<string[]> dlls;
|
||||
private readonly Lazy<string[]> nugetConfigs;
|
||||
private readonly Lazy<string[]> nugetExes;
|
||||
private readonly Lazy<string[]> globalJsons;
|
||||
private readonly Lazy<string[]> packagesConfigs;
|
||||
private readonly Lazy<string[]> razorViews;
|
||||
@@ -45,6 +46,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
|
||||
resources = new Lazy<string[]>(() => SelectTextFileNamesByExtension("resource", ".resx"));
|
||||
|
||||
rootNugetConfig = new Lazy<string?>(() => all.SelectRootFiles(SourceDir).SelectFileNamesByName("nuget.config").FirstOrDefault());
|
||||
nugetExes = new Lazy<string[]>(() => all.SelectFileNamesByName("nuget.exe").ToArray());
|
||||
}
|
||||
|
||||
private string[] ReturnAndLogFiles(string filetype, IEnumerable<string> files)
|
||||
@@ -123,6 +125,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
|
||||
public ICollection<string> Solutions => solutions.Value;
|
||||
public IEnumerable<string> Dlls => dlls.Value;
|
||||
public ICollection<string> NugetConfigs => nugetConfigs.Value;
|
||||
public ICollection<string> NugetExes => nugetExes.Value;
|
||||
public string? RootNugetConfig => rootNugetConfig.Value;
|
||||
public IEnumerable<string> GlobalJsons => globalJsons.Value;
|
||||
public ICollection<string> PackagesConfigs => packagesConfigs.Value;
|
||||
|
||||
@@ -17,15 +17,11 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
|
||||
private readonly string? nugetExe;
|
||||
private readonly Util.Logging.ILogger logger;
|
||||
|
||||
/// <summary>
|
||||
/// The list of package files.
|
||||
/// </summary>
|
||||
private readonly ICollection<string> packageFiles;
|
||||
|
||||
public int PackageCount => packageFiles.Count;
|
||||
public int PackageCount => fileProvider.PackagesConfigs.Count;
|
||||
|
||||
private readonly string? backupNugetConfig;
|
||||
private readonly string? nugetConfigPath;
|
||||
private readonly FileProvider fileProvider;
|
||||
|
||||
/// <summary>
|
||||
/// The computed packages directory.
|
||||
@@ -39,15 +35,14 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
|
||||
/// </summary>
|
||||
public NugetExeWrapper(FileProvider fileProvider, TemporaryDirectory packageDirectory, Util.Logging.ILogger logger)
|
||||
{
|
||||
this.fileProvider = fileProvider;
|
||||
this.packageDirectory = packageDirectory;
|
||||
this.logger = logger;
|
||||
|
||||
packageFiles = fileProvider.PackagesConfigs;
|
||||
|
||||
if (packageFiles.Count > 0)
|
||||
if (fileProvider.PackagesConfigs.Count > 0)
|
||||
{
|
||||
logger.LogInfo($"Found packages.config files, trying to use nuget.exe for package restore");
|
||||
nugetExe = ResolveNugetExe(fileProvider.SourceDir.FullName);
|
||||
nugetExe = ResolveNugetExe();
|
||||
if (HasNoPackageSource())
|
||||
{
|
||||
// We only modify or add a top level nuget.config file
|
||||
@@ -87,25 +82,44 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tries to find the location of `nuget.exe` in the nuget directory under the directory
|
||||
/// containing the executing assembly. If it can't be found, it is downloaded to the
|
||||
/// `.nuget` directory under the source directory.
|
||||
/// Tries to find the location of `nuget.exe`. It looks for
|
||||
/// - the environment variable specifying a location,
|
||||
/// - files in the repository,
|
||||
/// - tries to resolve nuget from the PATH, or
|
||||
/// - downloads it if it is not found.
|
||||
/// </summary>
|
||||
/// <param name="sourceDir">The source directory.</param>
|
||||
private string ResolveNugetExe(string sourceDir)
|
||||
private string ResolveNugetExe()
|
||||
{
|
||||
var currentAssembly = System.Reflection.Assembly.GetExecutingAssembly().Location;
|
||||
var directory = Path.GetDirectoryName(currentAssembly)
|
||||
?? throw new FileNotFoundException($"Directory path '{currentAssembly}' of current assembly is null");
|
||||
|
||||
var nuget = Path.Combine(directory, "nuget", "nuget.exe");
|
||||
if (File.Exists(nuget))
|
||||
var envVarPath = Environment.GetEnvironmentVariable(EnvironmentVariableNames.NugetExePath);
|
||||
if (!string.IsNullOrEmpty(envVarPath))
|
||||
{
|
||||
logger.LogInfo($"Found nuget.exe at {nuget}");
|
||||
return nuget;
|
||||
logger.LogInfo($"Using nuget.exe from environment variable: '{envVarPath}'");
|
||||
return envVarPath;
|
||||
}
|
||||
|
||||
return DownloadNugetExe(sourceDir);
|
||||
var nugetExesInRepo = fileProvider.NugetExes;
|
||||
if (nugetExesInRepo.Count > 1)
|
||||
{
|
||||
logger.LogInfo($"Found multiple nuget.exe files in the repository: {string.Join(", ", nugetExesInRepo.OrderBy(s => s))}");
|
||||
}
|
||||
|
||||
if (nugetExesInRepo.Count > 0)
|
||||
{
|
||||
var path = nugetExesInRepo.First();
|
||||
logger.LogInfo($"Using nuget.exe from path '{path}'");
|
||||
return path;
|
||||
}
|
||||
|
||||
var executableName = Win32.IsWindows() ? "nuget.exe" : "nuget";
|
||||
var nugetPath = FileUtils.FindProgramOnPath(executableName);
|
||||
if (nugetPath is not null)
|
||||
{
|
||||
nugetPath = Path.Combine(nugetPath, executableName);
|
||||
logger.LogInfo($"Using nuget.exe from PATH: {nugetPath}");
|
||||
return nugetPath;
|
||||
}
|
||||
|
||||
return DownloadNugetExe(fileProvider.SourceDir.FullName);
|
||||
}
|
||||
|
||||
private string DownloadNugetExe(string sourceDir)
|
||||
@@ -135,6 +149,8 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
|
||||
}
|
||||
}
|
||||
|
||||
private bool RunWithMono => !Win32.IsWindows() && !string.IsNullOrEmpty(Path.GetExtension(nugetExe));
|
||||
|
||||
/// <summary>
|
||||
/// Restore all files in a specified package.
|
||||
/// </summary>
|
||||
@@ -150,16 +166,16 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
|
||||
*/
|
||||
|
||||
string exe, args;
|
||||
if (Win32.IsWindows())
|
||||
{
|
||||
exe = nugetExe!;
|
||||
args = $"install -OutputDirectory {packageDirectory} {package}";
|
||||
}
|
||||
else
|
||||
if (RunWithMono)
|
||||
{
|
||||
exe = "mono";
|
||||
args = $"{nugetExe} install -OutputDirectory {packageDirectory} {package}";
|
||||
}
|
||||
else
|
||||
{
|
||||
exe = nugetExe!;
|
||||
args = $"install -OutputDirectory {packageDirectory} {package}";
|
||||
}
|
||||
|
||||
var pi = new ProcessStartInfo(exe, args)
|
||||
{
|
||||
@@ -189,7 +205,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
|
||||
/// </summary>
|
||||
public int InstallPackages()
|
||||
{
|
||||
return packageFiles.Count(package => TryRestoreNugetPackage(package));
|
||||
return fileProvider.PackagesConfigs.Count(package => TryRestoreNugetPackage(package));
|
||||
}
|
||||
|
||||
private bool HasNoPackageSource()
|
||||
@@ -219,8 +235,18 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
|
||||
|
||||
private void RunMonoNugetCommand(string command, out IList<string> stdout)
|
||||
{
|
||||
var exe = "mono";
|
||||
var args = $"{nugetExe} {command}";
|
||||
string exe, args;
|
||||
if (RunWithMono)
|
||||
{
|
||||
exe = "mono";
|
||||
args = $"{nugetExe} {command}";
|
||||
}
|
||||
else
|
||||
{
|
||||
exe = nugetExe!;
|
||||
args = command;
|
||||
}
|
||||
|
||||
var pi = new ProcessStartInfo(exe, args)
|
||||
{
|
||||
RedirectStandardOutput = true,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<AssemblyName>Semmle.Extraction.CSharp.DependencyFetching</AssemblyName>
|
||||
@@ -10,13 +10,12 @@
|
||||
<Nullable>enable</Nullable>
|
||||
<NoWarn>$(NoWarn);CA1822</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Extraction\Semmle.Extraction.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
<Import Project="..\..\.paket\Paket.Restore.targets" />
|
||||
</Project>
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
@@ -8,10 +8,10 @@
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Extraction.CSharp.DependencyFetching\Semmle.Extraction.CSharp.DependencyFetching.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Extraction.CSharp.StubGenerator\Semmle.Extraction.CSharp.StubGenerator.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Extraction.CSharp.DependencyFetching\Semmle.Extraction.CSharp.DependencyFetching.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Extraction.CSharp.StubGenerator\Semmle.Extraction.CSharp.StubGenerator.csproj" />
|
||||
</ItemGroup>
|
||||
<Import Project="..\..\.paket\Paket.Restore.targets" />
|
||||
</Project>
|
||||
@@ -1,5 +1,5 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
@@ -8,8 +8,8 @@
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Extraction.CSharp\Semmle.Extraction.CSharp.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
<Import Project="..\..\.paket\Paket.Restore.targets" />
|
||||
</Project>
|
||||
@@ -1,21 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<AssemblyName>Semmle.Extraction.CSharp.Standalone</AssemblyName>
|
||||
<RootNamespace>Semmle.Extraction.CSharp.Standalone</RootNamespace>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
||||
<WarningsAsErrors />
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Extraction.CSharp\Semmle.Extraction.CSharp.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Extraction.CSharp.DependencyFetching\Semmle.Extraction.CSharp.DependencyFetching.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<AssemblyName>Semmle.Extraction.CSharp.Standalone</AssemblyName>
|
||||
<RootNamespace>Semmle.Extraction.CSharp.Standalone</RootNamespace>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
||||
<WarningsAsErrors />
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Extraction.CSharp\Semmle.Extraction.CSharp.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Extraction.CSharp.DependencyFetching\Semmle.Extraction.CSharp.DependencyFetching.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
<Import Project="..\..\.paket\Paket.Restore.targets" />
|
||||
</Project>
|
||||
@@ -1,15 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<AssemblyName>Semmle.Extraction.CSharp.StubGenerator</AssemblyName>
|
||||
<RootNamespace>Semmle.Extraction.CSharp.StubGenerator</RootNamespace>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Extraction.CSharp.DependencyFetching\Semmle.Extraction.CSharp.DependencyFetching.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Extraction.CSharp.Util\Semmle.Extraction.CSharp.Util.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<AssemblyName>Semmle.Extraction.CSharp.StubGenerator</AssemblyName>
|
||||
<RootNamespace>Semmle.Extraction.CSharp.StubGenerator</RootNamespace>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Extraction.CSharp.DependencyFetching\Semmle.Extraction.CSharp.DependencyFetching.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Extraction.CSharp.Util\Semmle.Extraction.CSharp.Util.csproj" />
|
||||
</ItemGroup>
|
||||
<Import Project="..\..\.paket\Paket.Restore.targets" />
|
||||
</Project>
|
||||
@@ -1,14 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<AssemblyName>Semmle.Extraction.CSharp.Util</AssemblyName>
|
||||
<RootNamespace>Semmle.Extraction.CSharp.Util</RootNamespace>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<AssemblyName>Semmle.Extraction.CSharp.Util</AssemblyName>
|
||||
<RootNamespace>Semmle.Extraction.CSharp.Util</RootNamespace>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj" />
|
||||
</ItemGroup>
|
||||
<Import Project="..\..\.paket\Paket.Restore.targets" />
|
||||
</Project>
|
||||
@@ -1,19 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<AssemblyName>Semmle.Extraction.CSharp</AssemblyName>
|
||||
<RootNamespace>Semmle.Extraction.CSharp</RootNamespace>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Extraction\Semmle.Extraction.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Extraction.CSharp.Util\Semmle.Extraction.CSharp.Util.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<AssemblyName>Semmle.Extraction.CSharp</AssemblyName>
|
||||
<RootNamespace>Semmle.Extraction.CSharp</RootNamespace>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Extraction\Semmle.Extraction.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Extraction.CSharp.Util\Semmle.Extraction.CSharp.Util.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
<Import Project="..\..\.paket\Paket.Restore.targets" />
|
||||
</Project>
|
||||
@@ -1,15 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Extraction.CSharp.StubGenerator\Semmle.Extraction.CSharp.StubGenerator.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Extraction.CSharp.Standalone\Semmle.Extraction.CSharp.Standalone.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Extraction.CSharp\Semmle.Extraction.CSharp.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Extraction\Semmle.Extraction.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Extraction.CSharp.StubGenerator\Semmle.Extraction.CSharp.StubGenerator.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Extraction.CSharp.Standalone\Semmle.Extraction.CSharp.Standalone.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Extraction.CSharp\Semmle.Extraction.CSharp.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Extraction\Semmle.Extraction.csproj" />
|
||||
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj" />
|
||||
</ItemGroup>
|
||||
<Import Project="..\..\.paket\Paket.Restore.targets" />
|
||||
</Project>
|
||||
@@ -1,17 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<AssemblyName>Semmle.Extraction</AssemblyName>
|
||||
<RootNamespace>Semmle.Extraction</RootNamespace>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<CodeAnalysisRuleSet>Semmle.Extraction.ruleset</CodeAnalysisRuleSet>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<DefineConstants>TRACE;DEBUG;DEBUG_LABELS</DefineConstants>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<AssemblyName>Semmle.Extraction</AssemblyName>
|
||||
<RootNamespace>Semmle.Extraction</RootNamespace>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<CodeAnalysisRuleSet>Semmle.Extraction.ruleset</CodeAnalysisRuleSet>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<DefineConstants>TRACE;DEBUG;DEBUG_LABELS</DefineConstants>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj" />
|
||||
</ItemGroup>
|
||||
<Import Project="..\..\.paket\Paket.Restore.targets" />
|
||||
</Project>
|
||||
@@ -1,11 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Semmle.Util\Semmle.Util.csproj" />
|
||||
</ItemGroup>
|
||||
<Import Project="..\..\.paket\Paket.Restore.targets" />
|
||||
</Project>
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<AssemblyName>Semmle.Util</AssemblyName>
|
||||
@@ -8,8 +8,8 @@
|
||||
<RuntimeIdentifiers>win-x64;linux-x64;osx-x64</RuntimeIdentifiers>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
<Import Project="..\..\.paket\Paket.Restore.targets" />
|
||||
</Project>
|
||||
@@ -4,17 +4,17 @@ source https://api.nuget.org/v3/index.json
|
||||
# behave like nuget in choosing transitive dependency versions
|
||||
strategy: min
|
||||
|
||||
nuget Mono.Posix.NETStandard 1.0.0
|
||||
nuget Newtonsoft.Json 13.0.3
|
||||
nuget xunit 2.6.2
|
||||
nuget xunit.runner.visualstudio 2.5.4
|
||||
nuget Microsoft.NET.Test.Sdk 17.8.0
|
||||
nuget Mono.Posix.NETStandard
|
||||
nuget Newtonsoft.Json
|
||||
nuget xunit
|
||||
nuget xunit.runner.visualstudio
|
||||
nuget Microsoft.NET.Test.Sdk
|
||||
nuget Microsoft.CodeAnalysis.CSharp 4.8.0
|
||||
nuget Microsoft.CodeAnalysis 4.8.0
|
||||
nuget Microsoft.Build 17.8.3
|
||||
nuget Microsoft.Win32.Primitives 4.3.0
|
||||
nuget System.Net.Primitives 4.3.1
|
||||
nuget System.Security.Principal 4.3.0
|
||||
nuget System.Threading.ThreadPool 4.3.0
|
||||
nuget System.IO.FileSystem 4.3.0
|
||||
nuget Microsoft.Win32.Primitives
|
||||
nuget System.Net.Primitives
|
||||
nuget System.Security.Principal
|
||||
nuget System.Threading.ThreadPool
|
||||
nuget System.IO.FileSystem
|
||||
nuget GitInfo 3.3.3
|
||||
|
||||
483
csharp/paket.lock
generated
483
csharp/paket.lock
generated
@@ -46,19 +46,18 @@ NUGET
|
||||
System.Composition (>= 7.0)
|
||||
System.IO.Pipelines (>= 7.0)
|
||||
System.Threading.Channels (>= 7.0)
|
||||
Microsoft.CodeCoverage (17.8)
|
||||
Microsoft.CodeCoverage (17.9)
|
||||
Microsoft.CSharp (4.7)
|
||||
Microsoft.NET.StringTools (17.8.3)
|
||||
Microsoft.NET.Test.Sdk (17.8)
|
||||
Microsoft.CodeCoverage (>= 17.8)
|
||||
Microsoft.TestPlatform.TestHost (>= 17.8)
|
||||
Microsoft.NET.Test.Sdk (17.9)
|
||||
Microsoft.CodeCoverage (>= 17.9)
|
||||
Microsoft.TestPlatform.TestHost (>= 17.9)
|
||||
Microsoft.NETCore.Platforms (1.1.1)
|
||||
Microsoft.NETCore.Targets (1.1.3)
|
||||
Microsoft.TestPlatform.ObjectModel (17.8)
|
||||
NuGet.Frameworks (>= 6.5)
|
||||
Microsoft.TestPlatform.ObjectModel (17.9)
|
||||
System.Reflection.Metadata (>= 1.6)
|
||||
Microsoft.TestPlatform.TestHost (17.8)
|
||||
Microsoft.TestPlatform.ObjectModel (>= 17.8)
|
||||
Microsoft.TestPlatform.TestHost (17.9)
|
||||
Microsoft.TestPlatform.ObjectModel (>= 17.9)
|
||||
Newtonsoft.Json (>= 13.0.1)
|
||||
Microsoft.Win32.Primitives (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
@@ -66,109 +65,7 @@ NUGET
|
||||
System.Runtime (>= 4.3)
|
||||
Microsoft.Win32.SystemEvents (7.0)
|
||||
Mono.Posix.NETStandard (1.0)
|
||||
NETStandard.Library (1.6.1)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
Microsoft.Win32.Primitives (>= 4.3)
|
||||
System.AppContext (>= 4.3)
|
||||
System.Collections (>= 4.3)
|
||||
System.Collections.Concurrent (>= 4.3)
|
||||
System.Console (>= 4.3)
|
||||
System.Diagnostics.Debug (>= 4.3)
|
||||
System.Diagnostics.Tools (>= 4.3)
|
||||
System.Diagnostics.Tracing (>= 4.3)
|
||||
System.Globalization (>= 4.3)
|
||||
System.Globalization.Calendars (>= 4.3)
|
||||
System.IO (>= 4.3)
|
||||
System.IO.Compression (>= 4.3)
|
||||
System.IO.Compression.ZipFile (>= 4.3)
|
||||
System.IO.FileSystem (>= 4.3)
|
||||
System.IO.FileSystem.Primitives (>= 4.3)
|
||||
System.Linq (>= 4.3)
|
||||
System.Linq.Expressions (>= 4.3)
|
||||
System.Net.Http (>= 4.3)
|
||||
System.Net.Primitives (>= 4.3)
|
||||
System.Net.Sockets (>= 4.3)
|
||||
System.ObjectModel (>= 4.3)
|
||||
System.Reflection (>= 4.3)
|
||||
System.Reflection.Extensions (>= 4.3)
|
||||
System.Reflection.Primitives (>= 4.3)
|
||||
System.Resources.ResourceManager (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Runtime.Extensions (>= 4.3)
|
||||
System.Runtime.Handles (>= 4.3)
|
||||
System.Runtime.InteropServices (>= 4.3)
|
||||
System.Runtime.InteropServices.RuntimeInformation (>= 4.3)
|
||||
System.Runtime.Numerics (>= 4.3)
|
||||
System.Security.Cryptography.Algorithms (>= 4.3)
|
||||
System.Security.Cryptography.Encoding (>= 4.3)
|
||||
System.Security.Cryptography.Primitives (>= 4.3)
|
||||
System.Security.Cryptography.X509Certificates (>= 4.3)
|
||||
System.Text.Encoding (>= 4.3)
|
||||
System.Text.Encoding.Extensions (>= 4.3)
|
||||
System.Text.RegularExpressions (>= 4.3)
|
||||
System.Threading (>= 4.3)
|
||||
System.Threading.Tasks (>= 4.3)
|
||||
System.Threading.Timer (>= 4.3)
|
||||
System.Xml.ReaderWriter (>= 4.3)
|
||||
System.Xml.XDocument (>= 4.3)
|
||||
Newtonsoft.Json (13.0.3)
|
||||
NuGet.Frameworks (6.5)
|
||||
runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3)
|
||||
runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3)
|
||||
runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3)
|
||||
runtime.native.System (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
Microsoft.NETCore.Targets (>= 1.1)
|
||||
runtime.native.System.IO.Compression (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
Microsoft.NETCore.Targets (>= 1.1)
|
||||
runtime.native.System.Net.Http (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
Microsoft.NETCore.Targets (>= 1.1)
|
||||
runtime.native.System.Security.Cryptography.Apple (4.3)
|
||||
runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (>= 4.3)
|
||||
runtime.native.System.Security.Cryptography.OpenSsl (4.3)
|
||||
runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||
runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||
runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||
runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||
runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||
runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||
runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||
runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||
runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||
runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||
runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3)
|
||||
runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3)
|
||||
runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (4.3)
|
||||
runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3)
|
||||
runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3)
|
||||
runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3)
|
||||
runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3)
|
||||
runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3)
|
||||
System.AppContext (4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Buffers (4.3)
|
||||
System.Diagnostics.Debug (>= 4.3)
|
||||
System.Diagnostics.Tracing (>= 4.3)
|
||||
System.Resources.ResourceManager (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Threading (>= 4.3)
|
||||
System.Collections (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
Microsoft.NETCore.Targets (>= 1.1)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Collections.Concurrent (4.3)
|
||||
System.Collections (>= 4.3)
|
||||
System.Diagnostics.Debug (>= 4.3)
|
||||
System.Diagnostics.Tracing (>= 4.3)
|
||||
System.Globalization (>= 4.3)
|
||||
System.Reflection (>= 4.3)
|
||||
System.Resources.ResourceManager (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Runtime.Extensions (>= 4.3)
|
||||
System.Threading (>= 4.3)
|
||||
System.Threading.Tasks (>= 4.3)
|
||||
System.Collections.Immutable (7.0)
|
||||
System.Composition (7.0)
|
||||
System.Composition.AttributedModel (>= 7.0)
|
||||
@@ -190,81 +87,15 @@ NUGET
|
||||
System.Diagnostics.EventLog (>= 7.0)
|
||||
System.Security.Cryptography.ProtectedData (>= 7.0)
|
||||
System.Security.Permissions (>= 7.0)
|
||||
System.Console (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
Microsoft.NETCore.Targets (>= 1.1)
|
||||
System.IO (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Text.Encoding (>= 4.3)
|
||||
System.Diagnostics.Debug (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
Microsoft.NETCore.Targets (>= 1.1)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Diagnostics.DiagnosticSource (4.3)
|
||||
System.Collections (>= 4.3)
|
||||
System.Diagnostics.Tracing (>= 4.3)
|
||||
System.Reflection (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Threading (>= 4.3)
|
||||
System.Diagnostics.EventLog (7.0)
|
||||
System.Diagnostics.Tools (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
Microsoft.NETCore.Targets (>= 1.1)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Diagnostics.Tracing (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
Microsoft.NETCore.Targets (>= 1.1)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Drawing.Common (7.0)
|
||||
Microsoft.Win32.SystemEvents (>= 7.0)
|
||||
System.Globalization (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
Microsoft.NETCore.Targets (>= 1.1)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Globalization.Calendars (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
Microsoft.NETCore.Targets (>= 1.1)
|
||||
System.Globalization (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Globalization.Extensions (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
System.Globalization (>= 4.3)
|
||||
System.Resources.ResourceManager (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Runtime.Extensions (>= 4.3)
|
||||
System.Runtime.InteropServices (>= 4.3)
|
||||
System.IO (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
Microsoft.NETCore.Targets (>= 1.1)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Text.Encoding (>= 4.3)
|
||||
System.Threading.Tasks (>= 4.3)
|
||||
System.IO.Compression (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
runtime.native.System (>= 4.3)
|
||||
runtime.native.System.IO.Compression (>= 4.3)
|
||||
System.Buffers (>= 4.3)
|
||||
System.Collections (>= 4.3)
|
||||
System.Diagnostics.Debug (>= 4.3)
|
||||
System.IO (>= 4.3)
|
||||
System.Resources.ResourceManager (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Runtime.Extensions (>= 4.3)
|
||||
System.Runtime.Handles (>= 4.3)
|
||||
System.Runtime.InteropServices (>= 4.3)
|
||||
System.Text.Encoding (>= 4.3)
|
||||
System.Threading (>= 4.3)
|
||||
System.Threading.Tasks (>= 4.3)
|
||||
System.IO.Compression.ZipFile (4.3)
|
||||
System.Buffers (>= 4.3)
|
||||
System.IO (>= 4.3)
|
||||
System.IO.Compression (>= 4.3)
|
||||
System.IO.FileSystem (>= 4.3)
|
||||
System.IO.FileSystem.Primitives (>= 4.3)
|
||||
System.Resources.ResourceManager (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Runtime.Extensions (>= 4.3)
|
||||
System.Text.Encoding (>= 4.3)
|
||||
System.IO.FileSystem (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
Microsoft.NETCore.Targets (>= 1.1)
|
||||
@@ -277,254 +108,25 @@ NUGET
|
||||
System.IO.FileSystem.Primitives (4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.IO.Pipelines (7.0)
|
||||
System.Linq (4.3)
|
||||
System.Collections (>= 4.3)
|
||||
System.Diagnostics.Debug (>= 4.3)
|
||||
System.Resources.ResourceManager (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Runtime.Extensions (>= 4.3)
|
||||
System.Linq.Expressions (4.3)
|
||||
System.Collections (>= 4.3)
|
||||
System.Diagnostics.Debug (>= 4.3)
|
||||
System.Globalization (>= 4.3)
|
||||
System.IO (>= 4.3)
|
||||
System.Linq (>= 4.3)
|
||||
System.ObjectModel (>= 4.3)
|
||||
System.Reflection (>= 4.3)
|
||||
System.Reflection.Emit (>= 4.3)
|
||||
System.Reflection.Emit.ILGeneration (>= 4.3)
|
||||
System.Reflection.Emit.Lightweight (>= 4.3)
|
||||
System.Reflection.Extensions (>= 4.3)
|
||||
System.Reflection.Primitives (>= 4.3)
|
||||
System.Reflection.TypeExtensions (>= 4.3)
|
||||
System.Resources.ResourceManager (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Runtime.Extensions (>= 4.3)
|
||||
System.Threading (>= 4.3)
|
||||
System.Net.Http (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
runtime.native.System (>= 4.3)
|
||||
runtime.native.System.Net.Http (>= 4.3)
|
||||
runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||
System.Collections (>= 4.3)
|
||||
System.Diagnostics.Debug (>= 4.3)
|
||||
System.Diagnostics.DiagnosticSource (>= 4.3)
|
||||
System.Diagnostics.Tracing (>= 4.3)
|
||||
System.Globalization (>= 4.3)
|
||||
System.Globalization.Extensions (>= 4.3)
|
||||
System.IO (>= 4.3)
|
||||
System.IO.FileSystem (>= 4.3)
|
||||
System.Net.Primitives (>= 4.3)
|
||||
System.Resources.ResourceManager (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Runtime.Extensions (>= 4.3)
|
||||
System.Runtime.Handles (>= 4.3)
|
||||
System.Runtime.InteropServices (>= 4.3)
|
||||
System.Security.Cryptography.Algorithms (>= 4.3)
|
||||
System.Security.Cryptography.Encoding (>= 4.3)
|
||||
System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||
System.Security.Cryptography.Primitives (>= 4.3)
|
||||
System.Security.Cryptography.X509Certificates (>= 4.3)
|
||||
System.Text.Encoding (>= 4.3)
|
||||
System.Threading (>= 4.3)
|
||||
System.Threading.Tasks (>= 4.3)
|
||||
System.Net.Primitives (4.3.1)
|
||||
Microsoft.NETCore.Platforms (>= 1.1.1)
|
||||
Microsoft.NETCore.Targets (>= 1.1.3)
|
||||
System.Runtime (>= 4.3.1)
|
||||
System.Runtime.Handles (>= 4.3)
|
||||
System.Net.Sockets (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
Microsoft.NETCore.Targets (>= 1.1)
|
||||
System.IO (>= 4.3)
|
||||
System.Net.Primitives (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Threading.Tasks (>= 4.3)
|
||||
System.ObjectModel (4.3)
|
||||
System.Collections (>= 4.3)
|
||||
System.Diagnostics.Debug (>= 4.3)
|
||||
System.Resources.ResourceManager (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Threading (>= 4.3)
|
||||
System.Reflection (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
Microsoft.NETCore.Targets (>= 1.1)
|
||||
System.IO (>= 4.3)
|
||||
System.Reflection.Primitives (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Reflection.Emit (4.3)
|
||||
System.IO (>= 4.3)
|
||||
System.Reflection (>= 4.3)
|
||||
System.Reflection.Emit.ILGeneration (>= 4.3)
|
||||
System.Reflection.Primitives (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Reflection.Emit.ILGeneration (4.3)
|
||||
System.Reflection (>= 4.3)
|
||||
System.Reflection.Primitives (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Reflection.Emit.Lightweight (4.3)
|
||||
System.Reflection (>= 4.3)
|
||||
System.Reflection.Emit.ILGeneration (>= 4.3)
|
||||
System.Reflection.Primitives (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Reflection.Extensions (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
Microsoft.NETCore.Targets (>= 1.1)
|
||||
System.Reflection (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Reflection.Metadata (7.0)
|
||||
System.Collections.Immutable (>= 7.0)
|
||||
System.Reflection.MetadataLoadContext (7.0)
|
||||
System.Collections.Immutable (>= 7.0)
|
||||
System.Reflection.Metadata (>= 7.0)
|
||||
System.Reflection.Primitives (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
Microsoft.NETCore.Targets (>= 1.1)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Reflection.TypeExtensions (4.3)
|
||||
System.Reflection (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Resources.ResourceManager (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
Microsoft.NETCore.Targets (>= 1.1)
|
||||
System.Globalization (>= 4.3)
|
||||
System.Reflection (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Runtime (4.3.1)
|
||||
Microsoft.NETCore.Platforms (>= 1.1.1)
|
||||
Microsoft.NETCore.Targets (>= 1.1.3)
|
||||
System.Runtime.CompilerServices.Unsafe (6.0)
|
||||
System.Runtime.Extensions (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
Microsoft.NETCore.Targets (>= 1.1)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Runtime.Handles (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
Microsoft.NETCore.Targets (>= 1.1)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Runtime.InteropServices (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
Microsoft.NETCore.Targets (>= 1.1)
|
||||
System.Reflection (>= 4.3)
|
||||
System.Reflection.Primitives (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Runtime.Handles (>= 4.3)
|
||||
System.Runtime.InteropServices.RuntimeInformation (4.3)
|
||||
runtime.native.System (>= 4.3)
|
||||
System.Reflection (>= 4.3)
|
||||
System.Reflection.Extensions (>= 4.3)
|
||||
System.Resources.ResourceManager (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Runtime.InteropServices (>= 4.3)
|
||||
System.Threading (>= 4.3)
|
||||
System.Runtime.Numerics (4.3)
|
||||
System.Globalization (>= 4.3)
|
||||
System.Resources.ResourceManager (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Runtime.Extensions (>= 4.3)
|
||||
System.Security.Cryptography.Algorithms (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
runtime.native.System.Security.Cryptography.Apple (>= 4.3)
|
||||
runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||
System.Collections (>= 4.3)
|
||||
System.IO (>= 4.3)
|
||||
System.Resources.ResourceManager (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Runtime.Extensions (>= 4.3)
|
||||
System.Runtime.Handles (>= 4.3)
|
||||
System.Runtime.InteropServices (>= 4.3)
|
||||
System.Runtime.Numerics (>= 4.3)
|
||||
System.Security.Cryptography.Encoding (>= 4.3)
|
||||
System.Security.Cryptography.Primitives (>= 4.3)
|
||||
System.Text.Encoding (>= 4.3)
|
||||
System.Security.Cryptography.Cng (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
System.IO (>= 4.3)
|
||||
System.Resources.ResourceManager (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Runtime.Extensions (>= 4.3)
|
||||
System.Runtime.Handles (>= 4.3)
|
||||
System.Runtime.InteropServices (>= 4.3)
|
||||
System.Security.Cryptography.Algorithms (>= 4.3)
|
||||
System.Security.Cryptography.Encoding (>= 4.3)
|
||||
System.Security.Cryptography.Primitives (>= 4.3)
|
||||
System.Text.Encoding (>= 4.3)
|
||||
System.Security.Cryptography.Csp (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
System.IO (>= 4.3)
|
||||
System.Reflection (>= 4.3)
|
||||
System.Resources.ResourceManager (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Runtime.Extensions (>= 4.3)
|
||||
System.Runtime.Handles (>= 4.3)
|
||||
System.Runtime.InteropServices (>= 4.3)
|
||||
System.Security.Cryptography.Algorithms (>= 4.3)
|
||||
System.Security.Cryptography.Encoding (>= 4.3)
|
||||
System.Security.Cryptography.Primitives (>= 4.3)
|
||||
System.Text.Encoding (>= 4.3)
|
||||
System.Threading (>= 4.3)
|
||||
System.Security.Cryptography.Encoding (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||
System.Collections (>= 4.3)
|
||||
System.Collections.Concurrent (>= 4.3)
|
||||
System.Linq (>= 4.3)
|
||||
System.Resources.ResourceManager (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Runtime.Extensions (>= 4.3)
|
||||
System.Runtime.Handles (>= 4.3)
|
||||
System.Runtime.InteropServices (>= 4.3)
|
||||
System.Security.Cryptography.Primitives (>= 4.3)
|
||||
System.Text.Encoding (>= 4.3)
|
||||
System.Security.Cryptography.OpenSsl (4.3)
|
||||
runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||
System.Collections (>= 4.3)
|
||||
System.IO (>= 4.3)
|
||||
System.Resources.ResourceManager (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Runtime.Extensions (>= 4.3)
|
||||
System.Runtime.Handles (>= 4.3)
|
||||
System.Runtime.InteropServices (>= 4.3)
|
||||
System.Runtime.Numerics (>= 4.3)
|
||||
System.Security.Cryptography.Algorithms (>= 4.3)
|
||||
System.Security.Cryptography.Encoding (>= 4.3)
|
||||
System.Security.Cryptography.Primitives (>= 4.3)
|
||||
System.Text.Encoding (>= 4.3)
|
||||
System.Security.Cryptography.Primitives (4.3)
|
||||
System.Diagnostics.Debug (>= 4.3)
|
||||
System.Globalization (>= 4.3)
|
||||
System.IO (>= 4.3)
|
||||
System.Resources.ResourceManager (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Threading (>= 4.3)
|
||||
System.Threading.Tasks (>= 4.3)
|
||||
System.Security.Cryptography.ProtectedData (7.0)
|
||||
System.Security.Cryptography.X509Certificates (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
runtime.native.System (>= 4.3)
|
||||
runtime.native.System.Net.Http (>= 4.3)
|
||||
runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||
System.Collections (>= 4.3)
|
||||
System.Diagnostics.Debug (>= 4.3)
|
||||
System.Globalization (>= 4.3)
|
||||
System.Globalization.Calendars (>= 4.3)
|
||||
System.IO (>= 4.3)
|
||||
System.IO.FileSystem (>= 4.3)
|
||||
System.IO.FileSystem.Primitives (>= 4.3)
|
||||
System.Resources.ResourceManager (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Runtime.Extensions (>= 4.3)
|
||||
System.Runtime.Handles (>= 4.3)
|
||||
System.Runtime.InteropServices (>= 4.3)
|
||||
System.Runtime.Numerics (>= 4.3)
|
||||
System.Security.Cryptography.Algorithms (>= 4.3)
|
||||
System.Security.Cryptography.Cng (>= 4.3)
|
||||
System.Security.Cryptography.Csp (>= 4.3)
|
||||
System.Security.Cryptography.Encoding (>= 4.3)
|
||||
System.Security.Cryptography.OpenSsl (>= 4.3)
|
||||
System.Security.Cryptography.Primitives (>= 4.3)
|
||||
System.Text.Encoding (>= 4.3)
|
||||
System.Threading (>= 4.3)
|
||||
System.Security.Permissions (7.0)
|
||||
System.Windows.Extensions (>= 7.0)
|
||||
System.Security.Principal (4.3)
|
||||
@@ -534,16 +136,6 @@ NUGET
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
Microsoft.NETCore.Targets (>= 1.1)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Text.Encoding.Extensions (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
Microsoft.NETCore.Targets (>= 1.1)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Text.Encoding (>= 4.3)
|
||||
System.Text.RegularExpressions (4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Threading (4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Threading.Tasks (>= 4.3)
|
||||
System.Threading.Channels (7.0)
|
||||
System.Threading.Tasks (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
@@ -554,58 +146,23 @@ NUGET
|
||||
System.Threading.ThreadPool (4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Runtime.Handles (>= 4.3)
|
||||
System.Threading.Timer (4.3)
|
||||
Microsoft.NETCore.Platforms (>= 1.1)
|
||||
Microsoft.NETCore.Targets (>= 1.1)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Windows.Extensions (7.0)
|
||||
System.Drawing.Common (>= 7.0)
|
||||
System.Xml.ReaderWriter (4.3)
|
||||
System.Collections (>= 4.3)
|
||||
System.Diagnostics.Debug (>= 4.3)
|
||||
System.Globalization (>= 4.3)
|
||||
System.IO (>= 4.3)
|
||||
System.IO.FileSystem (>= 4.3)
|
||||
System.IO.FileSystem.Primitives (>= 4.3)
|
||||
System.Resources.ResourceManager (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Runtime.Extensions (>= 4.3)
|
||||
System.Runtime.InteropServices (>= 4.3)
|
||||
System.Text.Encoding (>= 4.3)
|
||||
System.Text.Encoding.Extensions (>= 4.3)
|
||||
System.Text.RegularExpressions (>= 4.3)
|
||||
System.Threading.Tasks (>= 4.3)
|
||||
System.Threading.Tasks.Extensions (>= 4.3)
|
||||
System.Xml.XDocument (4.3)
|
||||
System.Collections (>= 4.3)
|
||||
System.Diagnostics.Debug (>= 4.3)
|
||||
System.Diagnostics.Tools (>= 4.3)
|
||||
System.Globalization (>= 4.3)
|
||||
System.IO (>= 4.3)
|
||||
System.Reflection (>= 4.3)
|
||||
System.Resources.ResourceManager (>= 4.3)
|
||||
System.Runtime (>= 4.3)
|
||||
System.Runtime.Extensions (>= 4.3)
|
||||
System.Text.Encoding (>= 4.3)
|
||||
System.Threading (>= 4.3)
|
||||
System.Xml.ReaderWriter (>= 4.3)
|
||||
ThisAssembly.Constants (1.4.1)
|
||||
Microsoft.CSharp (>= 4.7)
|
||||
System.Threading.Tasks.Extensions (>= 4.5.4)
|
||||
xunit (2.6.2)
|
||||
xunit.analyzers (>= 1.6)
|
||||
xunit.assert (>= 2.6.2)
|
||||
xunit.core (2.6.2)
|
||||
xunit (2.8)
|
||||
xunit.analyzers (>= 1.13)
|
||||
xunit.assert (>= 2.8)
|
||||
xunit.core (2.8)
|
||||
xunit.abstractions (2.0.3)
|
||||
xunit.analyzers (1.6)
|
||||
xunit.assert (2.6.2)
|
||||
xunit.core (2.6.2)
|
||||
xunit.extensibility.core (2.6.2)
|
||||
xunit.extensibility.execution (2.6.2)
|
||||
xunit.extensibility.core (2.6.2)
|
||||
NETStandard.Library (>= 1.6.1)
|
||||
xunit.analyzers (1.13)
|
||||
xunit.assert (2.8)
|
||||
xunit.core (2.8)
|
||||
xunit.extensibility.core (2.8)
|
||||
xunit.extensibility.execution (2.8)
|
||||
xunit.extensibility.core (2.8)
|
||||
xunit.abstractions (>= 2.0.3)
|
||||
xunit.extensibility.execution (2.6.2)
|
||||
NETStandard.Library (>= 1.6.1)
|
||||
xunit.extensibility.core (2.6.2)
|
||||
xunit.runner.visualstudio (2.5.4)
|
||||
xunit.extensibility.execution (2.8)
|
||||
xunit.extensibility.core (2.8)
|
||||
xunit.runner.visualstudio (2.8)
|
||||
|
||||
@@ -13,12 +13,12 @@
|
||||
}
|
||||
}
|
||||
{
|
||||
"markdownMessage": "C# with build-mode set to 'none'. This means that all C# source in the working directory will be scanned, with build tools, such as Nuget and Dotnet CLIs, only contributing information about external dependencies.",
|
||||
"markdownMessage": "C# was extracted with build-mode set to 'none'. This means that all C# source in the working directory will be scanned, with build tools, such as Nuget and Dotnet CLIs, only contributing information about external dependencies.",
|
||||
"severity": "note",
|
||||
"source": {
|
||||
"extractorName": "csharp",
|
||||
"id": "csharp/autobuilder/buildless/mode-active",
|
||||
"name": "C# with build-mode set to 'none'"
|
||||
"name": "C# was extracted with build-mode set to 'none'"
|
||||
},
|
||||
"visibility": {
|
||||
"cliSummaryTable": true,
|
||||
|
||||
@@ -13,12 +13,12 @@
|
||||
}
|
||||
}
|
||||
{
|
||||
"markdownMessage": "C# with build-mode set to 'none'. This means that all C# source in the working directory will be scanned, with build tools, such as Nuget and Dotnet CLIs, only contributing information about external dependencies.",
|
||||
"markdownMessage": "C# was extracted with build-mode set to 'none'. This means that all C# source in the working directory will be scanned, with build tools, such as Nuget and Dotnet CLIs, only contributing information about external dependencies.",
|
||||
"severity": "note",
|
||||
"source": {
|
||||
"extractorName": "csharp",
|
||||
"id": "csharp/autobuilder/buildless/mode-active",
|
||||
"name": "C# with build-mode set to 'none'"
|
||||
"name": "C# was extracted with build-mode set to 'none'"
|
||||
},
|
||||
"visibility": {
|
||||
"cliSummaryTable": true,
|
||||
|
||||
@@ -13,12 +13,12 @@
|
||||
}
|
||||
}
|
||||
{
|
||||
"markdownMessage": "C# with build-mode set to 'none'. This means that all C# source in the working directory will be scanned, with build tools, such as Nuget and Dotnet CLIs, only contributing information about external dependencies.",
|
||||
"markdownMessage": "C# was extracted with build-mode set to 'none'. This means that all C# source in the working directory will be scanned, with build tools, such as Nuget and Dotnet CLIs, only contributing information about external dependencies.",
|
||||
"severity": "note",
|
||||
"source": {
|
||||
"extractorName": "csharp",
|
||||
"id": "csharp/autobuilder/buildless/mode-active",
|
||||
"name": "C# with build-mode set to 'none'"
|
||||
"name": "C# was extracted with build-mode set to 'none'"
|
||||
},
|
||||
"visibility": {
|
||||
"cliSummaryTable": true,
|
||||
|
||||
@@ -516,10 +516,13 @@ string asPartialModel(UnboundCallable c) {
|
||||
)
|
||||
}
|
||||
|
||||
/** Computes the first 4 columns for neutral CSV rows of `c`. */
|
||||
string asPartialNeutralModel(UnboundCallable c) {
|
||||
/**
|
||||
* Gets the signature of `c` in the format `namespace;type;name;parameters`.
|
||||
*/
|
||||
string getSignature(UnboundCallable c) {
|
||||
exists(string namespace, string type, string name, string parameters |
|
||||
partialModel(c, namespace, type, name, parameters) and
|
||||
partialModel(c, namespace, type, name, parameters)
|
||||
|
|
||||
result =
|
||||
namespace + ";" //
|
||||
+ type + ";" //
|
||||
|
||||
@@ -437,8 +437,14 @@ module EntityFramework {
|
||||
) {
|
||||
this = dbSet.getDbContextClass() and
|
||||
this.output(output, mapped, dbSet) and
|
||||
result = dbSet.getFullName() + "#" + output.getMadRepresentation()
|
||||
exists(string qualifier, string type, string name |
|
||||
mapped.hasFullyQualifiedName(qualifier, type, name) and
|
||||
result = getQualifiedName(qualifier, type, name)
|
||||
)
|
||||
}
|
||||
|
||||
pragma[nomagic]
|
||||
string getSyntheticNameProj(Property mapped) { result = this.getSyntheticName(_, mapped, _) }
|
||||
}
|
||||
|
||||
private class DbContextClassSetProperty extends Property {
|
||||
@@ -446,17 +452,6 @@ module EntityFramework {
|
||||
|
||||
DbContextClassSetProperty() { this = c.getADbSetProperty(_) }
|
||||
|
||||
/**
|
||||
* Gets the fully qualified name for this.
|
||||
*/
|
||||
string getFullName() {
|
||||
exists(string qualifier, string type, string name |
|
||||
this.hasFullyQualifiedName(qualifier, type, name)
|
||||
|
|
||||
result = getQualifiedName(qualifier, type, name)
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the context class where this is a DbSet property.
|
||||
*/
|
||||
@@ -493,7 +488,7 @@ module EntityFramework {
|
||||
exists(string name, Property mapped |
|
||||
preservesValue = true and
|
||||
c.input(input, mapped) and
|
||||
name = c.getSyntheticName(_, mapped, _) and
|
||||
name = c.getSyntheticNameProj(mapped) and
|
||||
output = SummaryComponentStack::syntheticGlobal(name) and
|
||||
model = "DbContextSaveChanges"
|
||||
)
|
||||
@@ -504,7 +499,7 @@ module EntityFramework {
|
||||
* Add all possible synthetic global names.
|
||||
*/
|
||||
private class EFSummarizedCallableSyntheticGlobal extends SummaryComponent::SyntheticGlobal {
|
||||
EFSummarizedCallableSyntheticGlobal() { this = any(DbContextClass c).getSyntheticName(_, _, _) }
|
||||
EFSummarizedCallableSyntheticGlobal() { this = any(DbContextClass c).getSyntheticNameProj(_) }
|
||||
}
|
||||
|
||||
private class DbContextSaveChangesRequiredSummaryComponentStack extends RequiredSummaryComponentStack
|
||||
|
||||
@@ -6,6 +6,29 @@
|
||||
private import CaptureModelsSpecific
|
||||
private import CaptureModelsPrinting
|
||||
|
||||
/**
|
||||
* A node from which flow can return to the caller. This is either a regular
|
||||
* `ReturnNode` or a `PostUpdateNode` corresponding to the value of a parameter.
|
||||
*/
|
||||
private class ReturnNodeExt extends DataFlow::Node {
|
||||
private DataFlowImplCommon::ReturnKindExt kind;
|
||||
|
||||
ReturnNodeExt() {
|
||||
kind = DataFlowImplCommon::getValueReturnPosition(this).getKind() or
|
||||
kind = DataFlowImplCommon::getParamReturnPosition(this, _).getKind()
|
||||
}
|
||||
|
||||
string getOutput() {
|
||||
kind instanceof DataFlowImplCommon::ValueReturnKind and
|
||||
result = "ReturnValue"
|
||||
or
|
||||
exists(ParameterPosition pos |
|
||||
pos = kind.(DataFlowImplCommon::ParamUpdateReturnKind).getPosition() and
|
||||
result = paramReturnNodeAsOutput(returnNodeEnclosingCallable(this), pos)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
class DataFlowTargetApi extends TargetApiSpecific {
|
||||
DataFlowTargetApi() { not isUninterestingForDataFlowModels(this) }
|
||||
}
|
||||
@@ -65,7 +88,7 @@ string asInputArgument(DataFlow::Node source) { result = asInputArgumentSpecific
|
||||
* Gets the summary model of `api`, if it follows the `fluent` programming pattern (returns `this`).
|
||||
*/
|
||||
string captureQualifierFlow(TargetApiSpecific api) {
|
||||
exists(DataFlowImplCommon::ReturnNodeExt ret |
|
||||
exists(ReturnNodeExt ret |
|
||||
api = returnNodeEnclosingCallable(ret) and
|
||||
isOwnInstanceAccessNode(ret)
|
||||
) and
|
||||
@@ -130,7 +153,7 @@ module ThroughFlowConfig implements DataFlow::StateConfigSig {
|
||||
}
|
||||
|
||||
predicate isSink(DataFlow::Node sink, FlowState state) {
|
||||
sink instanceof DataFlowImplCommon::ReturnNodeExt and
|
||||
sink instanceof ReturnNodeExt and
|
||||
not isOwnInstanceAccessNode(sink) and
|
||||
not exists(captureQualifierFlow(sink.asExpr().getEnclosingCallable())) and
|
||||
(state instanceof TaintRead or state instanceof TaintStore)
|
||||
@@ -171,14 +194,11 @@ private module ThroughFlow = TaintTracking::GlobalWithState<ThroughFlowConfig>;
|
||||
* Gets the summary model(s) of `api`, if there is flow from parameters to return value or parameter.
|
||||
*/
|
||||
string captureThroughFlow(DataFlowTargetApi api) {
|
||||
exists(
|
||||
DataFlow::ParameterNode p, DataFlowImplCommon::ReturnNodeExt returnNodeExt, string input,
|
||||
string output
|
||||
|
|
||||
exists(DataFlow::ParameterNode p, ReturnNodeExt returnNodeExt, string input, string output |
|
||||
ThroughFlow::flow(p, returnNodeExt) and
|
||||
returnNodeExt.(DataFlow::Node).getEnclosingCallable() = api and
|
||||
input = parameterNodeAsInput(p) and
|
||||
output = returnNodeAsOutput(returnNodeExt) and
|
||||
output = returnNodeExt.getOutput() and
|
||||
input != output and
|
||||
result = ModelPrinting::asTaintModel(api, input, output)
|
||||
)
|
||||
@@ -196,7 +216,7 @@ module FromSourceConfig implements DataFlow::ConfigSig {
|
||||
|
||||
predicate isSink(DataFlow::Node sink) {
|
||||
exists(DataFlowTargetApi c |
|
||||
sink instanceof DataFlowImplCommon::ReturnNodeExt and
|
||||
sink instanceof ReturnNodeExt and
|
||||
sink.getEnclosingCallable() = c
|
||||
)
|
||||
}
|
||||
@@ -214,12 +234,12 @@ private module FromSource = TaintTracking::Global<FromSourceConfig>;
|
||||
* Gets the source model(s) of `api`, if there is flow from an existing known source to the return of `api`.
|
||||
*/
|
||||
string captureSource(DataFlowTargetApi api) {
|
||||
exists(DataFlow::Node source, DataFlow::Node sink, string kind |
|
||||
exists(DataFlow::Node source, ReturnNodeExt sink, string kind |
|
||||
FromSource::flow(source, sink) and
|
||||
ExternalFlow::sourceNode(source, kind) and
|
||||
api = sink.getEnclosingCallable() and
|
||||
isRelevantSourceKind(kind) and
|
||||
result = ModelPrinting::asSourceModel(api, returnNodeAsOutput(sink), kind)
|
||||
result = ModelPrinting::asSourceModel(api, sink.getOutput(), kind)
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ private import semmle.code.csharp.frameworks.system.linq.Expressions
|
||||
import semmle.code.csharp.dataflow.internal.ExternalFlow as ExternalFlow
|
||||
import semmle.code.csharp.dataflow.internal.DataFlowImplCommon as DataFlowImplCommon
|
||||
import semmle.code.csharp.dataflow.internal.DataFlowPrivate as DataFlowPrivate
|
||||
import semmle.code.csharp.dataflow.internal.DataFlowDispatch as DataFlowDispatch
|
||||
|
||||
module DataFlow = CS::DataFlow;
|
||||
|
||||
@@ -80,7 +81,8 @@ class TargetApiSpecific extends CS::Callable {
|
||||
|
||||
predicate asPartialModel = ExternalFlow::asPartialModel/1;
|
||||
|
||||
predicate asPartialNeutralModel = ExternalFlow::asPartialNeutralModel/1;
|
||||
/** Computes the first 4 columns for neutral CSV rows of `c`. */
|
||||
predicate asPartialNeutralModel = ExternalFlow::getSignature/1;
|
||||
|
||||
/**
|
||||
* Holds if `t` is a type that is generally used for bulk data in collection types.
|
||||
@@ -132,32 +134,24 @@ string parameterAccess(CS::Parameter p) {
|
||||
|
||||
class InstanceParameterNode = DataFlowPrivate::InstanceParameterNode;
|
||||
|
||||
pragma[nomagic]
|
||||
private CS::Parameter getParameter(DataFlowImplCommon::ReturnNodeExt node, ParameterPosition pos) {
|
||||
result = node.(DataFlow::Node).getEnclosingCallable().getParameter(pos.getPosition())
|
||||
}
|
||||
class ParameterPosition = DataFlowDispatch::ParameterPosition;
|
||||
|
||||
/**
|
||||
* Gets the MaD string representation of the the return node `node`.
|
||||
* Gets the MaD string representation of return through parameter at position
|
||||
* `pos` of callable `c`.
|
||||
*/
|
||||
string returnNodeAsOutput(DataFlowImplCommon::ReturnNodeExt node) {
|
||||
if node.getKind() instanceof DataFlowImplCommon::ValueReturnKind
|
||||
then result = "ReturnValue"
|
||||
else
|
||||
exists(ParameterPosition pos |
|
||||
pos = node.getKind().(DataFlowImplCommon::ParamUpdateReturnKind).getPosition()
|
||||
|
|
||||
result = parameterAccess(getParameter(node, pos))
|
||||
or
|
||||
pos.isThisParameter() and
|
||||
result = qualifierString()
|
||||
)
|
||||
bindingset[c]
|
||||
string paramReturnNodeAsOutput(CS::Callable c, ParameterPosition pos) {
|
||||
result = parameterAccess(c.getParameter(pos.getPosition()))
|
||||
or
|
||||
pos.isThisParameter() and
|
||||
result = qualifierString()
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the enclosing callable of `ret`.
|
||||
*/
|
||||
CS::Callable returnNodeEnclosingCallable(DataFlowImplCommon::ReturnNodeExt ret) {
|
||||
CS::Callable returnNodeEnclosingCallable(DataFlow::Node ret) {
|
||||
result = DataFlowImplCommon::getNodeEnclosingCallable(ret).asCallable()
|
||||
}
|
||||
|
||||
|
||||
18
csharp/ql/test/TestUtilities/InlineMadTest.qll
Normal file
18
csharp/ql/test/TestUtilities/InlineMadTest.qll
Normal file
@@ -0,0 +1,18 @@
|
||||
private import csharp as Cs
|
||||
private import codeql.mad.test.InlineMadTest
|
||||
|
||||
private module InlineMadTestLang implements InlineMadTestLangSig {
|
||||
class Callable = Cs::Callable;
|
||||
|
||||
string getComment(Callable c) {
|
||||
exists(Cs::CommentBlock block, Cs::Element after | after = block.getAfter() |
|
||||
(
|
||||
after = c or
|
||||
after = c.(Cs::Accessor).getDeclaration()
|
||||
) and
|
||||
result = block.getALine()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
import InlineMadTestImpl<InlineMadTestLang>
|
||||
@@ -216,6 +216,7 @@ edges
|
||||
| CollectionFlow.cs:309:21:309:23 | kvp : KeyValuePair<T,T> [property Key] : A | CollectionFlow.cs:311:18:311:20 | access to parameter kvp : KeyValuePair<T,T> [property Key] : A | provenance | |
|
||||
| CollectionFlow.cs:311:18:311:20 | access to parameter kvp : KeyValuePair<T,T> [property Key] : A | CollectionFlow.cs:311:18:311:24 | access to property Key | provenance | |
|
||||
| CollectionFlow.cs:328:32:328:38 | element : A | CollectionFlow.cs:328:55:328:61 | access to parameter element : A | provenance | |
|
||||
| CollectionFlow.cs:328:44:328:48 | [post] access to parameter array : A[] [element] : A | CollectionFlow.cs:328:23:328:27 | array [Return] : A[] [element] : A | provenance | |
|
||||
| CollectionFlow.cs:328:55:328:61 | access to parameter element : A | CollectionFlow.cs:328:44:328:48 | [post] access to parameter array : A[] [element] : A | provenance | |
|
||||
| CollectionFlow.cs:332:13:332:13 | access to local variable a : A | CollectionFlow.cs:334:23:334:23 | access to local variable a : A | provenance | |
|
||||
| CollectionFlow.cs:332:17:332:23 | object creation of type A : A | CollectionFlow.cs:332:13:332:13 | access to local variable a : A | provenance | |
|
||||
@@ -229,6 +230,7 @@ edges
|
||||
| CollectionFlow.cs:337:20:337:22 | access to local variable as : A[] [element] : A | CollectionFlow.cs:22:34:22:35 | ts : A[] [element] : A | provenance | |
|
||||
| CollectionFlow.cs:337:20:337:22 | access to local variable as : A[] [element] : A | CollectionFlow.cs:337:14:337:23 | call to method First<A> | provenance | |
|
||||
| CollectionFlow.cs:350:34:350:40 | element : A | CollectionFlow.cs:350:55:350:61 | access to parameter element : A | provenance | |
|
||||
| CollectionFlow.cs:350:46:350:49 | [post] access to parameter list : List<T> [element] : A | CollectionFlow.cs:350:26:350:29 | list [Return] : List<T> [element] : A | provenance | |
|
||||
| CollectionFlow.cs:350:55:350:61 | access to parameter element : A | CollectionFlow.cs:350:46:350:49 | [post] access to parameter list : List<T> [element] : A | provenance | MaD:605 |
|
||||
| CollectionFlow.cs:354:13:354:13 | access to local variable a : A | CollectionFlow.cs:356:23:356:23 | access to local variable a : A | provenance | |
|
||||
| CollectionFlow.cs:354:17:354:23 | object creation of type A : A | CollectionFlow.cs:354:13:354:13 | access to local variable a : A | provenance | |
|
||||
@@ -520,6 +522,7 @@ nodes
|
||||
| CollectionFlow.cs:309:21:309:23 | kvp : KeyValuePair<T,T> [property Key] : A | semmle.label | kvp : KeyValuePair<T,T> [property Key] : A |
|
||||
| CollectionFlow.cs:311:18:311:20 | access to parameter kvp : KeyValuePair<T,T> [property Key] : A | semmle.label | access to parameter kvp : KeyValuePair<T,T> [property Key] : A |
|
||||
| CollectionFlow.cs:311:18:311:24 | access to property Key | semmle.label | access to property Key |
|
||||
| CollectionFlow.cs:328:23:328:27 | array [Return] : A[] [element] : A | semmle.label | array [Return] : A[] [element] : A |
|
||||
| CollectionFlow.cs:328:32:328:38 | element : A | semmle.label | element : A |
|
||||
| CollectionFlow.cs:328:44:328:48 | [post] access to parameter array : A[] [element] : A | semmle.label | [post] access to parameter array : A[] [element] : A |
|
||||
| CollectionFlow.cs:328:55:328:61 | access to parameter element : A | semmle.label | access to parameter element : A |
|
||||
@@ -532,6 +535,7 @@ nodes
|
||||
| CollectionFlow.cs:336:18:336:20 | access to local variable as : A[] [element] : A | semmle.label | access to local variable as : A[] [element] : A |
|
||||
| CollectionFlow.cs:337:14:337:23 | call to method First<A> | semmle.label | call to method First<A> |
|
||||
| CollectionFlow.cs:337:20:337:22 | access to local variable as : A[] [element] : A | semmle.label | access to local variable as : A[] [element] : A |
|
||||
| CollectionFlow.cs:350:26:350:29 | list [Return] : List<T> [element] : A | semmle.label | list [Return] : List<T> [element] : A |
|
||||
| CollectionFlow.cs:350:34:350:40 | element : A | semmle.label | element : A |
|
||||
| CollectionFlow.cs:350:46:350:49 | [post] access to parameter list : List<T> [element] : A | semmle.label | [post] access to parameter list : List<T> [element] : A |
|
||||
| CollectionFlow.cs:350:55:350:61 | access to parameter element : A | semmle.label | access to parameter element : A |
|
||||
@@ -640,9 +644,9 @@ subpaths
|
||||
| CollectionFlow.cs:222:27:222:30 | access to local variable dict : Dictionary<T,T> [element, property Key] : A | CollectionFlow.cs:34:57:34:60 | dict : Dictionary<T,T> [element, property Key] : A | CollectionFlow.cs:34:66:34:81 | access to property Key : A | CollectionFlow.cs:222:14:222:31 | call to method DictFirstKey<A> |
|
||||
| CollectionFlow.cs:240:28:240:31 | access to local variable dict : Dictionary<T,T> [element, property Key] : A | CollectionFlow.cs:32:58:32:61 | dict : Dictionary<T,T> [element, property Key] : A | CollectionFlow.cs:32:67:32:83 | call to method First<T> : A | CollectionFlow.cs:240:14:240:32 | call to method DictKeysFirst<A> |
|
||||
| CollectionFlow.cs:241:27:241:30 | access to local variable dict : Dictionary<T,T> [element, property Key] : A | CollectionFlow.cs:34:57:34:60 | dict : Dictionary<T,T> [element, property Key] : A | CollectionFlow.cs:34:66:34:81 | access to property Key : A | CollectionFlow.cs:241:14:241:31 | call to method DictFirstKey<A> |
|
||||
| CollectionFlow.cs:334:23:334:23 | access to local variable a : A | CollectionFlow.cs:328:32:328:38 | element : A | CollectionFlow.cs:328:44:328:48 | [post] access to parameter array : A[] [element] : A | CollectionFlow.cs:334:18:334:20 | [post] access to local variable as : A[] [element] : A |
|
||||
| CollectionFlow.cs:334:23:334:23 | access to local variable a : A | CollectionFlow.cs:328:32:328:38 | element : A | CollectionFlow.cs:328:23:328:27 | array [Return] : A[] [element] : A | CollectionFlow.cs:334:18:334:20 | [post] access to local variable as : A[] [element] : A |
|
||||
| CollectionFlow.cs:337:20:337:22 | access to local variable as : A[] [element] : A | CollectionFlow.cs:22:34:22:35 | ts : A[] [element] : A | CollectionFlow.cs:22:41:22:45 | access to array element : A | CollectionFlow.cs:337:14:337:23 | call to method First<A> |
|
||||
| CollectionFlow.cs:356:23:356:23 | access to local variable a : A | CollectionFlow.cs:350:34:350:40 | element : A | CollectionFlow.cs:350:46:350:49 | [post] access to parameter list : List<T> [element] : A | CollectionFlow.cs:356:17:356:20 | [post] access to local variable list : List<T> [element] : A |
|
||||
| CollectionFlow.cs:356:23:356:23 | access to local variable a : A | CollectionFlow.cs:350:34:350:40 | element : A | CollectionFlow.cs:350:26:350:29 | list [Return] : List<T> [element] : A | CollectionFlow.cs:356:17:356:20 | [post] access to local variable list : List<T> [element] : A |
|
||||
| CollectionFlow.cs:359:24:359:27 | access to local variable list : List<T> [element] : A | CollectionFlow.cs:24:43:24:46 | list : List<T> [element] : A | CollectionFlow.cs:24:52:24:58 | access to indexer : A | CollectionFlow.cs:359:14:359:28 | call to method ListFirst<A> |
|
||||
#select
|
||||
| CollectionFlow.cs:40:17:40:23 | object creation of type A : A | CollectionFlow.cs:40:17:40:23 | object creation of type A : A | CollectionFlow.cs:14:52:14:56 | access to array element | $@ | CollectionFlow.cs:14:52:14:56 | access to array element | access to array element |
|
||||
|
||||
@@ -7,25 +7,31 @@ edges
|
||||
| Constructors.cs:10:13:10:13 | access to local variable c : C_no_ctor [field s1] : Object | Constructors.cs:13:21:13:22 | this : C_no_ctor [field s1] : Object | provenance | |
|
||||
| Constructors.cs:13:21:13:22 | this : C_no_ctor [field s1] : Object | Constructors.cs:15:18:15:19 | this access : C_no_ctor [field s1] : Object | provenance | |
|
||||
| Constructors.cs:15:18:15:19 | this access : C_no_ctor [field s1] : Object | Constructors.cs:15:18:15:19 | access to field s1 | provenance | |
|
||||
| Constructors.cs:21:24:21:25 | [post] this access : C_with_ctor [field s1] : Object | Constructors.cs:25:29:25:45 | object creation of type C_with_ctor : C_with_ctor [field s1] : Object | provenance | |
|
||||
| Constructors.cs:21:24:21:25 | [post] this access : C_with_ctor [field s1] : Object | Constructors.cs:29:16:29:26 | this [Return] : C_with_ctor [field s1] : Object | provenance | |
|
||||
| Constructors.cs:21:29:21:45 | call to method Source<Object> : Object | Constructors.cs:21:24:21:25 | [post] this access : C_with_ctor [field s1] : Object | provenance | |
|
||||
| Constructors.cs:25:25:25:25 | access to local variable c : C_with_ctor [field s1] : Object | Constructors.cs:26:13:26:13 | access to local variable c : C_with_ctor [field s1] : Object | provenance | |
|
||||
| Constructors.cs:25:29:25:45 | object creation of type C_with_ctor : C_with_ctor [field s1] : Object | Constructors.cs:25:25:25:25 | access to local variable c : C_with_ctor [field s1] : Object | provenance | |
|
||||
| Constructors.cs:26:13:26:13 | access to local variable c : C_with_ctor [field s1] : Object | Constructors.cs:31:21:31:22 | this : C_with_ctor [field s1] : Object | provenance | |
|
||||
| Constructors.cs:29:16:29:26 | this [Return] : C_with_ctor [field s1] : Object | Constructors.cs:25:29:25:45 | object creation of type C_with_ctor : C_with_ctor [field s1] : Object | provenance | |
|
||||
| Constructors.cs:31:21:31:22 | this : C_with_ctor [field s1] : Object | Constructors.cs:33:18:33:19 | this access : C_with_ctor [field s1] : Object | provenance | |
|
||||
| Constructors.cs:33:18:33:19 | this access : C_with_ctor [field s1] : Object | Constructors.cs:33:18:33:19 | access to field s1 | provenance | |
|
||||
| Constructors.cs:41:26:41:26 | o : Object | Constructors.cs:41:38:41:38 | access to parameter o : Object | provenance | |
|
||||
| Constructors.cs:41:32:41:34 | [post] this access : C1 [field Obj] : Object | Constructors.cs:41:16:41:17 | this [Return] : C1 [field Obj] : Object | provenance | |
|
||||
| Constructors.cs:41:38:41:38 | access to parameter o : Object | Constructors.cs:41:32:41:34 | [post] this access : C1 [field Obj] : Object | provenance | |
|
||||
| Constructors.cs:44:28:44:35 | o21param : Object | Constructors.cs:46:23:46:27 | this access : C2 [parameter o21param] : Object | provenance | |
|
||||
| Constructors.cs:44:28:44:35 | o21param : Object | Constructors.cs:46:31:46:38 | access to parameter o21param : Object | provenance | |
|
||||
| Constructors.cs:44:45:44:52 | o22param : Object | Constructors.cs:44:18:44:19 | this [Return] : C2 [parameter o22param] : Object | provenance | |
|
||||
| Constructors.cs:46:23:46:27 | [post] this access : C2 [field Obj21] : Object | Constructors.cs:44:18:44:19 | this [Return] : C2 [field Obj21] : Object | provenance | |
|
||||
| Constructors.cs:46:23:46:27 | this access : C2 [parameter o21param] : Object | Constructors.cs:46:31:46:38 | access to parameter o21param : Object | provenance | |
|
||||
| Constructors.cs:46:31:46:38 | access to parameter o21param : Object | Constructors.cs:46:23:46:27 | [post] this access : C2 [field Obj21] : Object | provenance | |
|
||||
| Constructors.cs:48:32:48:39 | this : C2 [parameter o22param] : Object | Constructors.cs:48:32:48:39 | access to parameter o22param : Object | provenance | |
|
||||
| Constructors.cs:50:32:50:36 | this : C2 [field Obj21] : Object | Constructors.cs:50:32:50:36 | this access : C2 [field Obj21] : Object | provenance | |
|
||||
| Constructors.cs:50:32:50:36 | this access : C2 [field Obj21] : Object | Constructors.cs:50:32:50:36 | access to field Obj21 : Object | provenance | |
|
||||
| Constructors.cs:52:35:52:35 | o : Object | Constructors.cs:54:13:54:20 | access to parameter o22param : Object | provenance | |
|
||||
| Constructors.cs:54:13:54:20 | access to parameter o22param : Object | Constructors.cs:52:21:52:26 | this [Return] : C2 [parameter o22param] : Object | provenance | |
|
||||
| Constructors.cs:57:54:57:55 | o2 : Object | Constructors.cs:59:13:59:14 | access to parameter o1 : Object | provenance | |
|
||||
| Constructors.cs:62:41:62:41 | o : Object | Constructors.cs:64:37:64:37 | access to parameter o : Object | provenance | |
|
||||
| Constructors.cs:64:27:64:34 | access to parameter o22param : Object | Constructors.cs:62:21:62:32 | this [Return] : C2 [parameter o22param] : Object | provenance | |
|
||||
| Constructors.cs:64:37:64:37 | access to parameter o : Object | Constructors.cs:57:54:57:55 | o2 : Object | provenance | |
|
||||
| Constructors.cs:64:37:64:37 | access to parameter o : Object | Constructors.cs:64:27:64:34 | access to parameter o22param : Object | provenance | |
|
||||
| Constructors.cs:70:13:70:13 | access to local variable o : Object | Constructors.cs:71:25:71:25 | access to local variable o : Object | provenance | |
|
||||
@@ -67,6 +73,7 @@ edges
|
||||
| Constructors.cs:100:25:100:29 | access to local variable taint : Object | Constructors.cs:100:9:100:10 | [post] access to local variable c2 : C2 [parameter o22param] : Object | provenance | |
|
||||
| Constructors.cs:101:14:101:15 | access to local variable c2 : C2 [parameter o22param] : Object | Constructors.cs:48:32:48:39 | this : C2 [parameter o22param] : Object | provenance | |
|
||||
| Constructors.cs:101:14:101:15 | access to local variable c2 : C2 [parameter o22param] : Object | Constructors.cs:101:14:101:21 | access to property Obj22 | provenance | |
|
||||
| Constructors.cs:104:28:104:35 | o31param : Object | Constructors.cs:104:18:104:19 | this [Return] : C3 [parameter o31param] : Object | provenance | |
|
||||
| Constructors.cs:106:32:106:39 | this : C3 [parameter o31param] : Object | Constructors.cs:106:32:106:39 | access to parameter o31param : Object | provenance | |
|
||||
| Constructors.cs:111:13:111:15 | access to local variable o31 : Object | Constructors.cs:112:25:112:27 | access to local variable o31 : Object | provenance | |
|
||||
| Constructors.cs:111:19:111:35 | call to method Source<Object> : Object | Constructors.cs:111:13:111:15 | access to local variable o31 : Object | provenance | |
|
||||
@@ -78,7 +85,9 @@ edges
|
||||
| Constructors.cs:113:14:113:15 | access to local variable c3 : C3 [parameter o31param] : Object | Constructors.cs:113:14:113:21 | access to property Obj31 | provenance | |
|
||||
| Constructors.cs:121:26:121:28 | oc1 : Object | Constructors.cs:123:20:123:22 | access to parameter oc1 : Object | provenance | |
|
||||
| Constructors.cs:121:38:121:40 | oc2 : Object | Constructors.cs:124:20:124:22 | access to parameter oc2 : Object | provenance | |
|
||||
| Constructors.cs:123:13:123:16 | [post] this access : C4 [property Obj1] : Object | Constructors.cs:121:16:121:17 | this [Return] : C4 [property Obj1] : Object | provenance | |
|
||||
| Constructors.cs:123:20:123:22 | access to parameter oc1 : Object | Constructors.cs:123:13:123:16 | [post] this access : C4 [property Obj1] : Object | provenance | |
|
||||
| Constructors.cs:124:13:124:16 | [post] this access : C4 [property Obj2] : Object | Constructors.cs:121:16:121:17 | this [Return] : C4 [property Obj2] : Object | provenance | |
|
||||
| Constructors.cs:124:20:124:22 | access to parameter oc2 : Object | Constructors.cs:124:13:124:16 | [post] this access : C4 [property Obj2] : Object | provenance | |
|
||||
| Constructors.cs:130:13:130:14 | access to local variable o1 : Object | Constructors.cs:132:25:132:26 | access to local variable o1 : Object | provenance | |
|
||||
| Constructors.cs:130:18:130:34 | call to method Source<Object> : Object | Constructors.cs:130:13:130:14 | access to local variable o1 : Object | provenance | |
|
||||
@@ -94,6 +103,8 @@ edges
|
||||
| Constructors.cs:132:29:132:30 | access to local variable o2 : Object | Constructors.cs:132:18:132:31 | object creation of type C4 : C4 [property Obj2] : Object | provenance | |
|
||||
| Constructors.cs:133:14:133:15 | access to local variable c4 : C4 [property Obj1] : Object | Constructors.cs:133:14:133:20 | access to property Obj1 | provenance | |
|
||||
| Constructors.cs:134:14:134:15 | access to local variable c4 : C4 [property Obj2] : Object | Constructors.cs:134:14:134:20 | access to property Obj2 | provenance | |
|
||||
| Constructors.cs:137:29:137:32 | Obj1 : Object | Constructors.cs:137:19:137:20 | this [Return] : R1 [property Obj1] : Object | provenance | |
|
||||
| Constructors.cs:137:42:137:45 | Obj2 : Object | Constructors.cs:137:19:137:20 | this [Return] : R1 [property Obj2] : Object | provenance | |
|
||||
| Constructors.cs:141:13:141:14 | access to local variable o1 : Object | Constructors.cs:143:25:143:26 | access to local variable o1 : Object | provenance | |
|
||||
| Constructors.cs:141:18:141:34 | call to method Source<Object> : Object | Constructors.cs:141:13:141:14 | access to local variable o1 : Object | provenance | |
|
||||
| Constructors.cs:142:13:142:14 | access to local variable o2 : Object | Constructors.cs:143:29:143:30 | access to local variable o2 : Object | provenance | |
|
||||
@@ -122,12 +133,16 @@ nodes
|
||||
| Constructors.cs:25:25:25:25 | access to local variable c : C_with_ctor [field s1] : Object | semmle.label | access to local variable c : C_with_ctor [field s1] : Object |
|
||||
| Constructors.cs:25:29:25:45 | object creation of type C_with_ctor : C_with_ctor [field s1] : Object | semmle.label | object creation of type C_with_ctor : C_with_ctor [field s1] : Object |
|
||||
| Constructors.cs:26:13:26:13 | access to local variable c : C_with_ctor [field s1] : Object | semmle.label | access to local variable c : C_with_ctor [field s1] : Object |
|
||||
| Constructors.cs:29:16:29:26 | this [Return] : C_with_ctor [field s1] : Object | semmle.label | this [Return] : C_with_ctor [field s1] : Object |
|
||||
| Constructors.cs:31:21:31:22 | this : C_with_ctor [field s1] : Object | semmle.label | this : C_with_ctor [field s1] : Object |
|
||||
| Constructors.cs:33:18:33:19 | access to field s1 | semmle.label | access to field s1 |
|
||||
| Constructors.cs:33:18:33:19 | this access : C_with_ctor [field s1] : Object | semmle.label | this access : C_with_ctor [field s1] : Object |
|
||||
| Constructors.cs:41:16:41:17 | this [Return] : C1 [field Obj] : Object | semmle.label | this [Return] : C1 [field Obj] : Object |
|
||||
| Constructors.cs:41:26:41:26 | o : Object | semmle.label | o : Object |
|
||||
| Constructors.cs:41:32:41:34 | [post] this access : C1 [field Obj] : Object | semmle.label | [post] this access : C1 [field Obj] : Object |
|
||||
| Constructors.cs:41:38:41:38 | access to parameter o : Object | semmle.label | access to parameter o : Object |
|
||||
| Constructors.cs:44:18:44:19 | this [Return] : C2 [field Obj21] : Object | semmle.label | this [Return] : C2 [field Obj21] : Object |
|
||||
| Constructors.cs:44:18:44:19 | this [Return] : C2 [parameter o22param] : Object | semmle.label | this [Return] : C2 [parameter o22param] : Object |
|
||||
| Constructors.cs:44:28:44:35 | o21param : Object | semmle.label | o21param : Object |
|
||||
| Constructors.cs:44:45:44:52 | o22param : Object | semmle.label | o22param : Object |
|
||||
| Constructors.cs:46:23:46:27 | [post] this access : C2 [field Obj21] : Object | semmle.label | [post] this access : C2 [field Obj21] : Object |
|
||||
@@ -138,10 +153,12 @@ nodes
|
||||
| Constructors.cs:50:32:50:36 | access to field Obj21 : Object | semmle.label | access to field Obj21 : Object |
|
||||
| Constructors.cs:50:32:50:36 | this : C2 [field Obj21] : Object | semmle.label | this : C2 [field Obj21] : Object |
|
||||
| Constructors.cs:50:32:50:36 | this access : C2 [field Obj21] : Object | semmle.label | this access : C2 [field Obj21] : Object |
|
||||
| Constructors.cs:52:21:52:26 | this [Return] : C2 [parameter o22param] : Object | semmle.label | this [Return] : C2 [parameter o22param] : Object |
|
||||
| Constructors.cs:52:35:52:35 | o : Object | semmle.label | o : Object |
|
||||
| Constructors.cs:54:13:54:20 | access to parameter o22param : Object | semmle.label | access to parameter o22param : Object |
|
||||
| Constructors.cs:57:54:57:55 | o2 : Object | semmle.label | o2 : Object |
|
||||
| Constructors.cs:59:13:59:14 | access to parameter o1 : Object | semmle.label | access to parameter o1 : Object |
|
||||
| Constructors.cs:62:21:62:32 | this [Return] : C2 [parameter o22param] : Object | semmle.label | this [Return] : C2 [parameter o22param] : Object |
|
||||
| Constructors.cs:62:41:62:41 | o : Object | semmle.label | o : Object |
|
||||
| Constructors.cs:64:27:64:34 | access to parameter o22param : Object | semmle.label | access to parameter o22param : Object |
|
||||
| Constructors.cs:64:37:64:37 | access to parameter o : Object | semmle.label | access to parameter o : Object |
|
||||
@@ -180,6 +197,7 @@ nodes
|
||||
| Constructors.cs:100:25:100:29 | access to local variable taint : Object | semmle.label | access to local variable taint : Object |
|
||||
| Constructors.cs:101:14:101:15 | access to local variable c2 : C2 [parameter o22param] : Object | semmle.label | access to local variable c2 : C2 [parameter o22param] : Object |
|
||||
| Constructors.cs:101:14:101:21 | access to property Obj22 | semmle.label | access to property Obj22 |
|
||||
| Constructors.cs:104:18:104:19 | this [Return] : C3 [parameter o31param] : Object | semmle.label | this [Return] : C3 [parameter o31param] : Object |
|
||||
| Constructors.cs:104:28:104:35 | o31param : Object | semmle.label | o31param : Object |
|
||||
| Constructors.cs:106:32:106:39 | access to parameter o31param : Object | semmle.label | access to parameter o31param : Object |
|
||||
| Constructors.cs:106:32:106:39 | this : C3 [parameter o31param] : Object | semmle.label | this : C3 [parameter o31param] : Object |
|
||||
@@ -190,6 +208,8 @@ nodes
|
||||
| Constructors.cs:112:25:112:27 | access to local variable o31 : Object | semmle.label | access to local variable o31 : Object |
|
||||
| Constructors.cs:113:14:113:15 | access to local variable c3 : C3 [parameter o31param] : Object | semmle.label | access to local variable c3 : C3 [parameter o31param] : Object |
|
||||
| Constructors.cs:113:14:113:21 | access to property Obj31 | semmle.label | access to property Obj31 |
|
||||
| Constructors.cs:121:16:121:17 | this [Return] : C4 [property Obj1] : Object | semmle.label | this [Return] : C4 [property Obj1] : Object |
|
||||
| Constructors.cs:121:16:121:17 | this [Return] : C4 [property Obj2] : Object | semmle.label | this [Return] : C4 [property Obj2] : Object |
|
||||
| Constructors.cs:121:26:121:28 | oc1 : Object | semmle.label | oc1 : Object |
|
||||
| Constructors.cs:121:38:121:40 | oc2 : Object | semmle.label | oc2 : Object |
|
||||
| Constructors.cs:123:13:123:16 | [post] this access : C4 [property Obj1] : Object | semmle.label | [post] this access : C4 [property Obj1] : Object |
|
||||
@@ -210,6 +230,8 @@ nodes
|
||||
| Constructors.cs:133:14:133:20 | access to property Obj1 | semmle.label | access to property Obj1 |
|
||||
| Constructors.cs:134:14:134:15 | access to local variable c4 : C4 [property Obj2] : Object | semmle.label | access to local variable c4 : C4 [property Obj2] : Object |
|
||||
| Constructors.cs:134:14:134:20 | access to property Obj2 | semmle.label | access to property Obj2 |
|
||||
| Constructors.cs:137:19:137:20 | this [Return] : R1 [property Obj1] : Object | semmle.label | this [Return] : R1 [property Obj1] : Object |
|
||||
| Constructors.cs:137:19:137:20 | this [Return] : R1 [property Obj2] : Object | semmle.label | this [Return] : R1 [property Obj2] : Object |
|
||||
| Constructors.cs:137:29:137:32 | Obj1 : Object | semmle.label | Obj1 : Object |
|
||||
| Constructors.cs:137:42:137:45 | Obj2 : Object | semmle.label | Obj2 : Object |
|
||||
| Constructors.cs:141:13:141:14 | access to local variable o1 : Object | semmle.label | access to local variable o1 : Object |
|
||||
@@ -228,21 +250,21 @@ nodes
|
||||
| Constructors.cs:145:14:145:20 | access to property Obj2 | semmle.label | access to property Obj2 |
|
||||
subpaths
|
||||
| Constructors.cs:64:37:64:37 | access to parameter o : Object | Constructors.cs:57:54:57:55 | o2 : Object | Constructors.cs:59:13:59:14 | access to parameter o1 : Object | Constructors.cs:64:27:64:34 | access to parameter o22param : Object |
|
||||
| Constructors.cs:71:25:71:25 | access to local variable o : Object | Constructors.cs:41:26:41:26 | o : Object | Constructors.cs:41:32:41:34 | [post] this access : C1 [field Obj] : Object | Constructors.cs:71:18:71:26 | object creation of type C1 : C1 [field Obj] : Object |
|
||||
| Constructors.cs:79:25:79:27 | access to local variable o21 : Object | Constructors.cs:44:28:44:35 | o21param : Object | Constructors.cs:46:23:46:27 | [post] this access : C2 [field Obj21] : Object | Constructors.cs:79:18:79:33 | object creation of type C2 : C2 [field Obj21] : Object |
|
||||
| Constructors.cs:79:30:79:32 | access to local variable o22 : Object | Constructors.cs:44:45:44:52 | o22param : Object | Constructors.cs:44:45:44:52 | o22param : Object | Constructors.cs:79:18:79:33 | object creation of type C2 : C2 [parameter o22param] : Object |
|
||||
| Constructors.cs:71:25:71:25 | access to local variable o : Object | Constructors.cs:41:26:41:26 | o : Object | Constructors.cs:41:16:41:17 | this [Return] : C1 [field Obj] : Object | Constructors.cs:71:18:71:26 | object creation of type C1 : C1 [field Obj] : Object |
|
||||
| Constructors.cs:79:25:79:27 | access to local variable o21 : Object | Constructors.cs:44:28:44:35 | o21param : Object | Constructors.cs:44:18:44:19 | this [Return] : C2 [field Obj21] : Object | Constructors.cs:79:18:79:33 | object creation of type C2 : C2 [field Obj21] : Object |
|
||||
| Constructors.cs:79:30:79:32 | access to local variable o22 : Object | Constructors.cs:44:45:44:52 | o22param : Object | Constructors.cs:44:18:44:19 | this [Return] : C2 [parameter o22param] : Object | Constructors.cs:79:18:79:33 | object creation of type C2 : C2 [parameter o22param] : Object |
|
||||
| Constructors.cs:81:14:81:15 | access to local variable c2 : C2 [parameter o22param] : Object | Constructors.cs:48:32:48:39 | this : C2 [parameter o22param] : Object | Constructors.cs:48:32:48:39 | access to parameter o22param : Object | Constructors.cs:81:14:81:21 | access to property Obj22 |
|
||||
| Constructors.cs:82:14:82:15 | access to local variable c2 : C2 [field Obj21] : Object | Constructors.cs:50:32:50:36 | this : C2 [field Obj21] : Object | Constructors.cs:50:32:50:36 | access to field Obj21 : Object | Constructors.cs:82:14:82:21 | access to property Obj23 |
|
||||
| Constructors.cs:92:19:92:23 | access to local variable taint : Object | Constructors.cs:52:35:52:35 | o : Object | Constructors.cs:54:13:54:20 | access to parameter o22param : Object | Constructors.cs:92:9:92:10 | [post] access to local variable c2 : C2 [parameter o22param] : Object |
|
||||
| Constructors.cs:92:19:92:23 | access to local variable taint : Object | Constructors.cs:52:35:52:35 | o : Object | Constructors.cs:52:21:52:26 | this [Return] : C2 [parameter o22param] : Object | Constructors.cs:92:9:92:10 | [post] access to local variable c2 : C2 [parameter o22param] : Object |
|
||||
| Constructors.cs:93:14:93:15 | access to local variable c2 : C2 [parameter o22param] : Object | Constructors.cs:48:32:48:39 | this : C2 [parameter o22param] : Object | Constructors.cs:48:32:48:39 | access to parameter o22param : Object | Constructors.cs:93:14:93:21 | access to property Obj22 |
|
||||
| Constructors.cs:100:25:100:29 | access to local variable taint : Object | Constructors.cs:62:41:62:41 | o : Object | Constructors.cs:64:27:64:34 | access to parameter o22param : Object | Constructors.cs:100:9:100:10 | [post] access to local variable c2 : C2 [parameter o22param] : Object |
|
||||
| Constructors.cs:100:25:100:29 | access to local variable taint : Object | Constructors.cs:62:41:62:41 | o : Object | Constructors.cs:62:21:62:32 | this [Return] : C2 [parameter o22param] : Object | Constructors.cs:100:9:100:10 | [post] access to local variable c2 : C2 [parameter o22param] : Object |
|
||||
| Constructors.cs:101:14:101:15 | access to local variable c2 : C2 [parameter o22param] : Object | Constructors.cs:48:32:48:39 | this : C2 [parameter o22param] : Object | Constructors.cs:48:32:48:39 | access to parameter o22param : Object | Constructors.cs:101:14:101:21 | access to property Obj22 |
|
||||
| Constructors.cs:112:25:112:27 | access to local variable o31 : Object | Constructors.cs:104:28:104:35 | o31param : Object | Constructors.cs:104:28:104:35 | o31param : Object | Constructors.cs:112:18:112:28 | object creation of type C3 : C3 [parameter o31param] : Object |
|
||||
| Constructors.cs:112:25:112:27 | access to local variable o31 : Object | Constructors.cs:104:28:104:35 | o31param : Object | Constructors.cs:104:18:104:19 | this [Return] : C3 [parameter o31param] : Object | Constructors.cs:112:18:112:28 | object creation of type C3 : C3 [parameter o31param] : Object |
|
||||
| Constructors.cs:113:14:113:15 | access to local variable c3 : C3 [parameter o31param] : Object | Constructors.cs:106:32:106:39 | this : C3 [parameter o31param] : Object | Constructors.cs:106:32:106:39 | access to parameter o31param : Object | Constructors.cs:113:14:113:21 | access to property Obj31 |
|
||||
| Constructors.cs:132:25:132:26 | access to local variable o1 : Object | Constructors.cs:121:26:121:28 | oc1 : Object | Constructors.cs:123:13:123:16 | [post] this access : C4 [property Obj1] : Object | Constructors.cs:132:18:132:31 | object creation of type C4 : C4 [property Obj1] : Object |
|
||||
| Constructors.cs:132:29:132:30 | access to local variable o2 : Object | Constructors.cs:121:38:121:40 | oc2 : Object | Constructors.cs:124:13:124:16 | [post] this access : C4 [property Obj2] : Object | Constructors.cs:132:18:132:31 | object creation of type C4 : C4 [property Obj2] : Object |
|
||||
| Constructors.cs:143:25:143:26 | access to local variable o1 : Object | Constructors.cs:137:29:137:32 | Obj1 : Object | Constructors.cs:137:29:137:32 | Obj1 : Object | Constructors.cs:143:18:143:31 | object creation of type R1 : R1 [property Obj1] : Object |
|
||||
| Constructors.cs:143:29:143:30 | access to local variable o2 : Object | Constructors.cs:137:42:137:45 | Obj2 : Object | Constructors.cs:137:42:137:45 | Obj2 : Object | Constructors.cs:143:18:143:31 | object creation of type R1 : R1 [property Obj2] : Object |
|
||||
| Constructors.cs:132:25:132:26 | access to local variable o1 : Object | Constructors.cs:121:26:121:28 | oc1 : Object | Constructors.cs:121:16:121:17 | this [Return] : C4 [property Obj1] : Object | Constructors.cs:132:18:132:31 | object creation of type C4 : C4 [property Obj1] : Object |
|
||||
| Constructors.cs:132:29:132:30 | access to local variable o2 : Object | Constructors.cs:121:38:121:40 | oc2 : Object | Constructors.cs:121:16:121:17 | this [Return] : C4 [property Obj2] : Object | Constructors.cs:132:18:132:31 | object creation of type C4 : C4 [property Obj2] : Object |
|
||||
| Constructors.cs:143:25:143:26 | access to local variable o1 : Object | Constructors.cs:137:29:137:32 | Obj1 : Object | Constructors.cs:137:19:137:20 | this [Return] : R1 [property Obj1] : Object | Constructors.cs:143:18:143:31 | object creation of type R1 : R1 [property Obj1] : Object |
|
||||
| Constructors.cs:143:29:143:30 | access to local variable o2 : Object | Constructors.cs:137:42:137:45 | Obj2 : Object | Constructors.cs:137:19:137:20 | this [Return] : R1 [property Obj2] : Object | Constructors.cs:143:18:143:31 | object creation of type R1 : R1 [property Obj2] : Object |
|
||||
#select
|
||||
| Constructors.cs:15:18:15:19 | access to field s1 | Constructors.cs:5:29:5:45 | call to method Source<Object> : Object | Constructors.cs:15:18:15:19 | access to field s1 | $@ | Constructors.cs:5:29:5:45 | call to method Source<Object> : Object | call to method Source<Object> : Object |
|
||||
| Constructors.cs:33:18:33:19 | access to field s1 | Constructors.cs:21:29:21:45 | call to method Source<Object> : Object | Constructors.cs:33:18:33:19 | access to field s1 | $@ | Constructors.cs:21:29:21:45 | call to method Source<Object> : Object | call to method Source<Object> : Object |
|
||||
|
||||
@@ -84,8 +84,10 @@ edges
|
||||
| A.cs:60:22:60:22 | c : C1 [field a] : A | A.cs:64:19:64:23 | (...) ... : C1 [field a] : A | provenance | |
|
||||
| A.cs:64:19:64:23 | (...) ... : C1 [field a] : A | A.cs:64:18:64:26 | access to field a | provenance | |
|
||||
| A.cs:64:19:64:23 | (...) ... : C1 [field a] : A | A.cs:64:18:64:26 | access to field a | provenance | |
|
||||
| A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | A.cs:88:12:88:12 | [post] access to local variable b : B [field c] : C | provenance | |
|
||||
| A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | A.cs:88:12:88:12 | [post] access to local variable b : B [field c] : C | provenance | |
|
||||
| A.cs:81:22:81:22 | b [Return] : B [field c] : C | A.cs:88:12:88:12 | [post] access to local variable b : B [field c] : C | provenance | |
|
||||
| A.cs:81:22:81:22 | b [Return] : B [field c] : C | A.cs:88:12:88:12 | [post] access to local variable b : B [field c] : C | provenance | |
|
||||
| A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | A.cs:81:22:81:22 | b [Return] : B [field c] : C | provenance | |
|
||||
| A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | A.cs:81:22:81:22 | b [Return] : B [field c] : C | provenance | |
|
||||
| A.cs:83:15:83:26 | call to method Source<C> : C | A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | provenance | |
|
||||
| A.cs:83:15:83:26 | call to method Source<C> : C | A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | provenance | |
|
||||
| A.cs:83:15:83:26 | call to method Source<C> : C | A.cs:145:27:145:27 | c : C | provenance | |
|
||||
@@ -94,20 +96,28 @@ edges
|
||||
| A.cs:88:12:88:12 | [post] access to local variable b : B [field c] : C | A.cs:89:14:89:14 | access to local variable b : B [field c] : C | provenance | |
|
||||
| A.cs:89:14:89:14 | access to local variable b : B [field c] : C | A.cs:89:14:89:16 | access to field c | provenance | |
|
||||
| A.cs:89:14:89:14 | access to local variable b : B [field c] : C | A.cs:89:14:89:16 | access to field c | provenance | |
|
||||
| A.cs:95:16:95:16 | this [Return] : D [field b, field c] : C | A.cs:105:17:105:29 | object creation of type D : D [field b, field c] : C | provenance | |
|
||||
| A.cs:95:16:95:16 | this [Return] : D [field b, field c] : C | A.cs:105:17:105:29 | object creation of type D : D [field b, field c] : C | provenance | |
|
||||
| A.cs:95:16:95:16 | this [Return] : D [field b] : B | A.cs:105:17:105:29 | object creation of type D : D [field b] : B | provenance | |
|
||||
| A.cs:95:16:95:16 | this [Return] : D [field b] : B | A.cs:105:17:105:29 | object creation of type D : D [field b] : B | provenance | |
|
||||
| A.cs:95:20:95:20 | b : B | A.cs:97:13:97:13 | access to parameter b : B | provenance | |
|
||||
| A.cs:95:20:95:20 | b : B | A.cs:97:13:97:13 | access to parameter b : B | provenance | |
|
||||
| A.cs:95:20:95:20 | b [Return] : B [field c] : C | A.cs:105:23:105:23 | [post] access to local variable b : B [field c] : C | provenance | |
|
||||
| A.cs:95:20:95:20 | b [Return] : B [field c] : C | A.cs:105:23:105:23 | [post] access to local variable b : B [field c] : C | provenance | |
|
||||
| A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | A.cs:95:20:95:20 | b [Return] : B [field c] : C | provenance | |
|
||||
| A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | A.cs:95:20:95:20 | b [Return] : B [field c] : C | provenance | |
|
||||
| A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | A.cs:98:22:98:43 | ... ? ... : ... : B [field c] : C | provenance | |
|
||||
| A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | A.cs:98:22:98:43 | ... ? ... : ... : B [field c] : C | provenance | |
|
||||
| A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | A.cs:105:23:105:23 | [post] access to local variable b : B [field c] : C | provenance | |
|
||||
| A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | A.cs:105:23:105:23 | [post] access to local variable b : B [field c] : C | provenance | |
|
||||
| A.cs:97:13:97:13 | access to parameter b : B | A.cs:98:22:98:43 | ... ? ... : ... : B | provenance | |
|
||||
| A.cs:97:13:97:13 | access to parameter b : B | A.cs:98:22:98:43 | ... ? ... : ... : B | provenance | |
|
||||
| A.cs:97:19:97:32 | call to method Source<C> : C | A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | provenance | |
|
||||
| A.cs:97:19:97:32 | call to method Source<C> : C | A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | provenance | |
|
||||
| A.cs:98:13:98:16 | [post] this access : D [field b, field c] : C | A.cs:105:17:105:29 | object creation of type D : D [field b, field c] : C | provenance | |
|
||||
| A.cs:98:13:98:16 | [post] this access : D [field b, field c] : C | A.cs:105:17:105:29 | object creation of type D : D [field b, field c] : C | provenance | |
|
||||
| A.cs:98:13:98:16 | [post] this access : D [field b] : B | A.cs:105:17:105:29 | object creation of type D : D [field b] : B | provenance | |
|
||||
| A.cs:98:13:98:16 | [post] this access : D [field b] : B | A.cs:105:17:105:29 | object creation of type D : D [field b] : B | provenance | |
|
||||
| A.cs:98:13:98:16 | [post] this access : D [field b, field c] : C | A.cs:95:16:95:16 | this [Return] : D [field b, field c] : C | provenance | |
|
||||
| A.cs:98:13:98:16 | [post] this access : D [field b, field c] : C | A.cs:95:16:95:16 | this [Return] : D [field b, field c] : C | provenance | |
|
||||
| A.cs:98:13:98:16 | [post] this access : D [field b] : B | A.cs:95:16:95:16 | this [Return] : D [field b] : B | provenance | |
|
||||
| A.cs:98:13:98:16 | [post] this access : D [field b] : B | A.cs:95:16:95:16 | this [Return] : D [field b] : B | provenance | |
|
||||
| A.cs:98:13:98:16 | [post] this access : D [field b] : B | A.cs:95:16:95:16 | this [Return] : D [field b] : B | provenance | |
|
||||
| A.cs:98:13:98:16 | [post] this access : D [field b] : B | A.cs:95:16:95:16 | this [Return] : D [field b] : B | provenance | |
|
||||
| A.cs:98:22:98:43 | ... ? ... : ... : B | A.cs:98:13:98:16 | [post] this access : D [field b] : B | provenance | |
|
||||
| A.cs:98:22:98:43 | ... ? ... : ... : B | A.cs:98:13:98:16 | [post] this access : D [field b] : B | provenance | |
|
||||
| A.cs:98:22:98:43 | ... ? ... : ... : B | A.cs:98:13:98:16 | [post] this access : D [field b] : B | provenance | |
|
||||
@@ -196,6 +206,8 @@ edges
|
||||
| A.cs:123:18:123:18 | access to local variable l : MyList [field head] : B | A.cs:123:18:123:23 | access to field head | provenance | |
|
||||
| A.cs:141:20:141:20 | c : C | A.cs:143:22:143:22 | access to parameter c : C | provenance | |
|
||||
| A.cs:141:20:141:20 | c : C | A.cs:143:22:143:22 | access to parameter c : C | provenance | |
|
||||
| A.cs:143:13:143:16 | [post] this access : B [field c] : C | A.cs:141:16:141:16 | this [Return] : B [field c] : C | provenance | |
|
||||
| A.cs:143:13:143:16 | [post] this access : B [field c] : C | A.cs:141:16:141:16 | this [Return] : B [field c] : C | provenance | |
|
||||
| A.cs:143:22:143:22 | access to parameter c : C | A.cs:143:13:143:16 | [post] this access : B [field c] : C | provenance | |
|
||||
| A.cs:143:22:143:22 | access to parameter c : C | A.cs:143:13:143:16 | [post] this access : B [field c] : C | provenance | |
|
||||
| A.cs:145:27:145:27 | c : C | A.cs:145:41:145:41 | access to parameter c : C | provenance | |
|
||||
@@ -204,6 +216,12 @@ edges
|
||||
| A.cs:145:27:145:27 | c : C1 | A.cs:145:41:145:41 | access to parameter c : C1 | provenance | |
|
||||
| A.cs:145:27:145:27 | c : C2 | A.cs:145:41:145:41 | access to parameter c : C2 | provenance | |
|
||||
| A.cs:145:27:145:27 | c : C2 | A.cs:145:41:145:41 | access to parameter c : C2 | provenance | |
|
||||
| A.cs:145:32:145:35 | [post] this access : B [field c] : C | A.cs:145:21:145:23 | this [Return] : B [field c] : C | provenance | |
|
||||
| A.cs:145:32:145:35 | [post] this access : B [field c] : C | A.cs:145:21:145:23 | this [Return] : B [field c] : C | provenance | |
|
||||
| A.cs:145:32:145:35 | [post] this access : B [field c] : C1 | A.cs:145:21:145:23 | this [Return] : B [field c] : C1 | provenance | |
|
||||
| A.cs:145:32:145:35 | [post] this access : B [field c] : C1 | A.cs:145:21:145:23 | this [Return] : B [field c] : C1 | provenance | |
|
||||
| A.cs:145:32:145:35 | [post] this access : B [field c] : C2 | A.cs:145:21:145:23 | this [Return] : B [field c] : C2 | provenance | |
|
||||
| A.cs:145:32:145:35 | [post] this access : B [field c] : C2 | A.cs:145:21:145:23 | this [Return] : B [field c] : C2 | provenance | |
|
||||
| A.cs:145:41:145:41 | access to parameter c : C | A.cs:145:32:145:35 | [post] this access : B [field c] : C | provenance | |
|
||||
| A.cs:145:41:145:41 | access to parameter c : C | A.cs:145:32:145:35 | [post] this access : B [field c] : C | provenance | |
|
||||
| A.cs:145:41:145:41 | access to parameter c : C1 | A.cs:145:32:145:35 | [post] this access : B [field c] : C1 | provenance | |
|
||||
@@ -230,8 +248,14 @@ edges
|
||||
| A.cs:157:38:157:41 | next : MyList [field head] : B | A.cs:160:25:160:28 | access to parameter next : MyList [field head] : B | provenance | |
|
||||
| A.cs:157:38:157:41 | next : MyList [field next, field head] : B | A.cs:160:25:160:28 | access to parameter next : MyList [field next, field head] : B | provenance | |
|
||||
| A.cs:157:38:157:41 | next : MyList [field next, field head] : B | A.cs:160:25:160:28 | access to parameter next : MyList [field next, field head] : B | provenance | |
|
||||
| A.cs:159:13:159:16 | [post] this access : MyList [field head] : B | A.cs:157:16:157:21 | this [Return] : MyList [field head] : B | provenance | |
|
||||
| A.cs:159:13:159:16 | [post] this access : MyList [field head] : B | A.cs:157:16:157:21 | this [Return] : MyList [field head] : B | provenance | |
|
||||
| A.cs:159:25:159:28 | access to parameter head : B | A.cs:159:13:159:16 | [post] this access : MyList [field head] : B | provenance | |
|
||||
| A.cs:159:25:159:28 | access to parameter head : B | A.cs:159:13:159:16 | [post] this access : MyList [field head] : B | provenance | |
|
||||
| A.cs:160:13:160:16 | [post] this access : MyList [field next, field head] : B | A.cs:157:16:157:21 | this [Return] : MyList [field next, field head] : B | provenance | |
|
||||
| A.cs:160:13:160:16 | [post] this access : MyList [field next, field head] : B | A.cs:157:16:157:21 | this [Return] : MyList [field next, field head] : B | provenance | |
|
||||
| A.cs:160:13:160:16 | [post] this access : MyList [field next, field next, field head] : B | A.cs:157:16:157:21 | this [Return] : MyList [field next, field next, field head] : B | provenance | |
|
||||
| A.cs:160:13:160:16 | [post] this access : MyList [field next, field next, field head] : B | A.cs:157:16:157:21 | this [Return] : MyList [field next, field next, field head] : B | provenance | |
|
||||
| A.cs:160:25:160:28 | access to parameter next : MyList [field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field head] : B | provenance | |
|
||||
| A.cs:160:25:160:28 | access to parameter next : MyList [field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field head] : B | provenance | |
|
||||
| A.cs:160:25:160:28 | access to parameter next : MyList [field next, field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field next, field head] : B | provenance | |
|
||||
@@ -288,30 +312,38 @@ edges
|
||||
| B.cs:29:26:29:27 | e1 : Elem | B.cs:31:26:31:27 | access to parameter e1 : Elem | provenance | |
|
||||
| B.cs:29:35:29:36 | e2 : Elem | B.cs:32:26:32:27 | access to parameter e2 : Elem | provenance | |
|
||||
| B.cs:29:35:29:36 | e2 : Elem | B.cs:32:26:32:27 | access to parameter e2 : Elem | provenance | |
|
||||
| B.cs:31:13:31:16 | [post] this access : Box1 [field elem1] : Elem | B.cs:29:16:29:19 | this [Return] : Box1 [field elem1] : Elem | provenance | |
|
||||
| B.cs:31:13:31:16 | [post] this access : Box1 [field elem1] : Elem | B.cs:29:16:29:19 | this [Return] : Box1 [field elem1] : Elem | provenance | |
|
||||
| B.cs:31:26:31:27 | access to parameter e1 : Elem | B.cs:31:13:31:16 | [post] this access : Box1 [field elem1] : Elem | provenance | |
|
||||
| B.cs:31:26:31:27 | access to parameter e1 : Elem | B.cs:31:13:31:16 | [post] this access : Box1 [field elem1] : Elem | provenance | |
|
||||
| B.cs:32:13:32:16 | [post] this access : Box1 [field elem2] : Elem | B.cs:29:16:29:19 | this [Return] : Box1 [field elem2] : Elem | provenance | |
|
||||
| B.cs:32:13:32:16 | [post] this access : Box1 [field elem2] : Elem | B.cs:29:16:29:19 | this [Return] : Box1 [field elem2] : Elem | provenance | |
|
||||
| B.cs:32:26:32:27 | access to parameter e2 : Elem | B.cs:32:13:32:16 | [post] this access : Box1 [field elem2] : Elem | provenance | |
|
||||
| B.cs:32:26:32:27 | access to parameter e2 : Elem | B.cs:32:13:32:16 | [post] this access : Box1 [field elem2] : Elem | provenance | |
|
||||
| B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem1] : Elem | provenance | |
|
||||
| B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem1] : Elem | provenance | |
|
||||
| B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem2] : Elem | provenance | |
|
||||
| B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem2] : Elem | provenance | |
|
||||
| B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem1] : Elem | B.cs:39:16:39:19 | this [Return] : Box2 [field box1, field elem1] : Elem | provenance | |
|
||||
| B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem1] : Elem | B.cs:39:16:39:19 | this [Return] : Box2 [field box1, field elem1] : Elem | provenance | |
|
||||
| B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem2] : Elem | B.cs:39:16:39:19 | this [Return] : Box2 [field box1, field elem2] : Elem | provenance | |
|
||||
| B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem2] : Elem | B.cs:39:16:39:19 | this [Return] : Box2 [field box1, field elem2] : Elem | provenance | |
|
||||
| B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem1] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem1] : Elem | provenance | |
|
||||
| B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem1] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem1] : Elem | provenance | |
|
||||
| B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem2] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem2] : Elem | provenance | |
|
||||
| B.cs:41:25:41:26 | access to parameter b1 : Box1 [field elem2] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem2] : Elem | provenance | |
|
||||
| C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s1] : Elem | provenance | |
|
||||
| C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s1] : Elem | provenance | |
|
||||
| C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | C.cs:16:13:16:13 | this [Return] : C [field s1] : Elem | provenance | |
|
||||
| C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | C.cs:16:13:16:13 | this [Return] : C [field s1] : Elem | provenance | |
|
||||
| C.cs:3:23:3:37 | call to method Source<Elem> : Elem | C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | provenance | |
|
||||
| C.cs:3:23:3:37 | call to method Source<Elem> : Elem | C.cs:3:18:3:19 | [post] this access : C [field s1] : Elem | provenance | |
|
||||
| C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s2] : Elem | provenance | |
|
||||
| C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s2] : Elem | provenance | |
|
||||
| C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | C.cs:16:13:16:13 | this [Return] : C [field s2] : Elem | provenance | |
|
||||
| C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | C.cs:16:13:16:13 | this [Return] : C [field s2] : Elem | provenance | |
|
||||
| C.cs:4:32:4:46 | call to method Source<Elem> : Elem | C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | provenance | |
|
||||
| C.cs:4:32:4:46 | call to method Source<Elem> : Elem | C.cs:4:27:4:28 | [post] this access : C [field s2] : Elem | provenance | |
|
||||
| C.cs:6:30:6:44 | call to method Source<Elem> : Elem | C.cs:26:14:26:15 | access to field s4 | provenance | |
|
||||
| C.cs:6:30:6:44 | call to method Source<Elem> : Elem | C.cs:26:14:26:15 | access to field s4 | provenance | |
|
||||
| C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | C.cs:12:15:12:21 | object creation of type C : C [property s5] : Elem | provenance | |
|
||||
| C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | C.cs:12:15:12:21 | object creation of type C : C [property s5] : Elem | provenance | |
|
||||
| C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | C.cs:16:13:16:13 | this [Return] : C [property s5] : Elem | provenance | |
|
||||
| C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | C.cs:16:13:16:13 | this [Return] : C [property s5] : Elem | provenance | |
|
||||
| C.cs:7:37:7:51 | call to method Source<Elem> : Elem | C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | provenance | |
|
||||
| C.cs:7:37:7:51 | call to method Source<Elem> : Elem | C.cs:7:18:7:19 | [post] this access : C [property s5] : Elem | provenance | |
|
||||
| C.cs:8:30:8:44 | call to method Source<Elem> : Elem | C.cs:28:14:28:15 | access to property s6 | provenance | |
|
||||
@@ -340,8 +372,16 @@ edges
|
||||
| C.cs:13:9:13:9 | access to local variable c : C [field s3] : Elem | C.cs:21:17:21:18 | this : C [field s3] : Elem | provenance | |
|
||||
| C.cs:13:9:13:9 | access to local variable c : C [property s5] : Elem | C.cs:21:17:21:18 | this : C [property s5] : Elem | provenance | |
|
||||
| C.cs:13:9:13:9 | access to local variable c : C [property s5] : Elem | C.cs:21:17:21:18 | this : C [property s5] : Elem | provenance | |
|
||||
| C.cs:18:9:18:12 | [post] this access : C [field s3] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s3] : Elem | provenance | |
|
||||
| C.cs:18:9:18:12 | [post] this access : C [field s3] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s3] : Elem | provenance | |
|
||||
| C.cs:16:13:16:13 | this [Return] : C [field s1] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s1] : Elem | provenance | |
|
||||
| C.cs:16:13:16:13 | this [Return] : C [field s1] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s1] : Elem | provenance | |
|
||||
| C.cs:16:13:16:13 | this [Return] : C [field s2] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s2] : Elem | provenance | |
|
||||
| C.cs:16:13:16:13 | this [Return] : C [field s2] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s2] : Elem | provenance | |
|
||||
| C.cs:16:13:16:13 | this [Return] : C [field s3] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s3] : Elem | provenance | |
|
||||
| C.cs:16:13:16:13 | this [Return] : C [field s3] : Elem | C.cs:12:15:12:21 | object creation of type C : C [field s3] : Elem | provenance | |
|
||||
| C.cs:16:13:16:13 | this [Return] : C [property s5] : Elem | C.cs:12:15:12:21 | object creation of type C : C [property s5] : Elem | provenance | |
|
||||
| C.cs:16:13:16:13 | this [Return] : C [property s5] : Elem | C.cs:12:15:12:21 | object creation of type C : C [property s5] : Elem | provenance | |
|
||||
| C.cs:18:9:18:12 | [post] this access : C [field s3] : Elem | C.cs:16:13:16:13 | this [Return] : C [field s3] : Elem | provenance | |
|
||||
| C.cs:18:9:18:12 | [post] this access : C [field s3] : Elem | C.cs:16:13:16:13 | this [Return] : C [field s3] : Elem | provenance | |
|
||||
| C.cs:18:19:18:33 | call to method Source<Elem> : Elem | C.cs:18:9:18:12 | [post] this access : C [field s3] : Elem | provenance | |
|
||||
| C.cs:18:19:18:33 | call to method Source<Elem> : Elem | C.cs:18:9:18:12 | [post] this access : C [field s3] : Elem | provenance | |
|
||||
| C.cs:21:17:21:18 | this : C [field s1] : Elem | C.cs:23:14:23:15 | this access : C [field s1] : Elem | provenance | |
|
||||
@@ -366,6 +406,8 @@ edges
|
||||
| D.cs:8:22:8:25 | this access : D [field trivialPropField] : Object | D.cs:8:22:8:42 | access to field trivialPropField : Object | provenance | |
|
||||
| D.cs:9:9:9:11 | value : Object | D.cs:9:39:9:43 | access to parameter value : Object | provenance | |
|
||||
| D.cs:9:9:9:11 | value : Object | D.cs:9:39:9:43 | access to parameter value : Object | provenance | |
|
||||
| D.cs:9:15:9:18 | [post] this access : D [field trivialPropField] : Object | D.cs:9:9:9:11 | this [Return] : D [field trivialPropField] : Object | provenance | |
|
||||
| D.cs:9:15:9:18 | [post] this access : D [field trivialPropField] : Object | D.cs:9:9:9:11 | this [Return] : D [field trivialPropField] : Object | provenance | |
|
||||
| D.cs:9:39:9:43 | access to parameter value : Object | D.cs:9:15:9:18 | [post] this access : D [field trivialPropField] : Object | provenance | |
|
||||
| D.cs:9:39:9:43 | access to parameter value : Object | D.cs:9:15:9:18 | [post] this access : D [field trivialPropField] : Object | provenance | |
|
||||
| D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | D.cs:14:22:14:25 | this access : D [field trivialPropField] : Object | provenance | |
|
||||
@@ -374,6 +416,8 @@ edges
|
||||
| D.cs:14:22:14:25 | this access : D [field trivialPropField] : Object | D.cs:14:22:14:42 | access to field trivialPropField : Object | provenance | |
|
||||
| D.cs:15:9:15:11 | value : Object | D.cs:15:34:15:38 | access to parameter value : Object | provenance | |
|
||||
| D.cs:15:9:15:11 | value : Object | D.cs:15:34:15:38 | access to parameter value : Object | provenance | |
|
||||
| D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object | D.cs:15:9:15:11 | this [Return] : D [field trivialPropField] : Object | provenance | |
|
||||
| D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object | D.cs:15:9:15:11 | this [Return] : D [field trivialPropField] : Object | provenance | |
|
||||
| D.cs:15:34:15:38 | access to parameter value : Object | D.cs:9:9:9:11 | value : Object | provenance | |
|
||||
| D.cs:15:34:15:38 | access to parameter value : Object | D.cs:9:9:9:11 | value : Object | provenance | |
|
||||
| D.cs:15:34:15:38 | access to parameter value : Object | D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object | provenance | |
|
||||
@@ -480,6 +524,8 @@ edges
|
||||
| E.cs:24:14:24:14 | access to local variable s : S [field Field] : Object | E.cs:24:14:24:20 | access to field Field | provenance | |
|
||||
| E.cs:43:46:43:46 | o : Object | E.cs:46:22:46:22 | access to parameter o : Object | provenance | |
|
||||
| E.cs:43:46:43:46 | o : Object | E.cs:46:22:46:22 | access to parameter o : Object | provenance | |
|
||||
| E.cs:46:9:46:9 | [post] access to parameter s : RefS [field RefField] : Object | E.cs:43:36:43:36 | s [Return] : RefS [field RefField] : Object | provenance | |
|
||||
| E.cs:46:9:46:9 | [post] access to parameter s : RefS [field RefField] : Object | E.cs:43:36:43:36 | s [Return] : RefS [field RefField] : Object | provenance | |
|
||||
| E.cs:46:22:46:22 | access to parameter o : Object | E.cs:46:9:46:9 | [post] access to parameter s : RefS [field RefField] : Object | provenance | |
|
||||
| E.cs:46:22:46:22 | access to parameter o : Object | E.cs:46:9:46:9 | [post] access to parameter s : RefS [field RefField] : Object | provenance | |
|
||||
| E.cs:54:13:54:17 | access to local variable taint : Object | E.cs:55:29:55:33 | access to local variable taint : Object | provenance | |
|
||||
@@ -648,6 +694,8 @@ edges
|
||||
| G.cs:63:34:63:37 | this access : Box1 [field Elem] : Elem | G.cs:63:34:63:37 | access to field Elem : Elem | provenance | |
|
||||
| G.cs:64:34:64:34 | e : Elem | G.cs:64:46:64:46 | access to parameter e : Elem | provenance | |
|
||||
| G.cs:64:34:64:34 | e : Elem | G.cs:64:46:64:46 | access to parameter e : Elem | provenance | |
|
||||
| G.cs:64:39:64:42 | [post] this access : Box1 [field Elem] : Elem | G.cs:64:21:64:27 | this [Return] : Box1 [field Elem] : Elem | provenance | |
|
||||
| G.cs:64:39:64:42 | [post] this access : Box1 [field Elem] : Elem | G.cs:64:21:64:27 | this [Return] : Box1 [field Elem] : Elem | provenance | |
|
||||
| G.cs:64:46:64:46 | access to parameter e : Elem | G.cs:64:39:64:42 | [post] this access : Box1 [field Elem] : Elem | provenance | |
|
||||
| G.cs:64:46:64:46 | access to parameter e : Elem | G.cs:64:39:64:42 | [post] this access : Box1 [field Elem] : Elem | provenance | |
|
||||
| G.cs:71:21:71:27 | this : Box2 [field Box1, field Elem] : Elem | G.cs:71:34:71:37 | this access : Box2 [field Box1, field Elem] : Elem | provenance | |
|
||||
@@ -708,6 +756,8 @@ edges
|
||||
| H.cs:45:14:45:14 | access to local variable b : B [field FieldB] : Object | H.cs:45:14:45:21 | access to field FieldB | provenance | |
|
||||
| H.cs:53:25:53:25 | a : A [field FieldA] : Object | H.cs:55:21:55:21 | access to parameter a : A [field FieldA] : Object | provenance | |
|
||||
| H.cs:53:25:53:25 | a : A [field FieldA] : Object | H.cs:55:21:55:21 | access to parameter a : A [field FieldA] : Object | provenance | |
|
||||
| H.cs:55:9:55:10 | [post] access to parameter b1 : B [field FieldB] : Object | H.cs:53:30:53:31 | b1 [Return] : B [field FieldB] : Object | provenance | |
|
||||
| H.cs:55:9:55:10 | [post] access to parameter b1 : B [field FieldB] : Object | H.cs:53:30:53:31 | b1 [Return] : B [field FieldB] : Object | provenance | |
|
||||
| H.cs:55:21:55:21 | access to parameter a : A [field FieldA] : Object | H.cs:55:21:55:28 | access to field FieldA : Object | provenance | |
|
||||
| H.cs:55:21:55:21 | access to parameter a : A [field FieldA] : Object | H.cs:55:21:55:28 | access to field FieldA : Object | provenance | |
|
||||
| H.cs:55:21:55:28 | access to field FieldA : Object | H.cs:55:9:55:10 | [post] access to parameter b1 : B [field FieldB] : Object | provenance | |
|
||||
@@ -726,6 +776,8 @@ edges
|
||||
| H.cs:65:14:65:15 | access to local variable b1 : B [field FieldB] : Object | H.cs:65:14:65:22 | access to field FieldB | provenance | |
|
||||
| H.cs:77:30:77:30 | o : Object | H.cs:79:20:79:20 | access to parameter o : Object | provenance | |
|
||||
| H.cs:77:30:77:30 | o : Object | H.cs:79:20:79:20 | access to parameter o : Object | provenance | |
|
||||
| H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | H.cs:77:20:77:20 | a [Return] : A [field FieldA] : Object | provenance | |
|
||||
| H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | H.cs:77:20:77:20 | a [Return] : A [field FieldA] : Object | provenance | |
|
||||
| H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | provenance | |
|
||||
| H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | provenance | |
|
||||
| H.cs:79:20:79:20 | access to parameter o : Object | H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | provenance | |
|
||||
@@ -734,6 +786,8 @@ edges
|
||||
| H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | provenance | |
|
||||
| H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object | provenance | |
|
||||
| H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object | provenance | |
|
||||
| H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object | H.cs:77:35:77:36 | b1 [Return] : B [field FieldB] : Object | provenance | |
|
||||
| H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object | H.cs:77:35:77:36 | b1 [Return] : B [field FieldB] : Object | provenance | |
|
||||
| H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object | H.cs:89:14:89:14 | access to local variable a : A [field FieldA] : Object | provenance | |
|
||||
| H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object | H.cs:89:14:89:14 | access to local variable a : A [field FieldA] : Object | provenance | |
|
||||
| H.cs:88:20:88:36 | call to method Source<Object> : Object | H.cs:77:30:77:30 | o : Object | provenance | |
|
||||
@@ -812,6 +866,8 @@ edges
|
||||
| H.cs:147:25:147:38 | call to method Source<A> : A | H.cs:138:27:138:27 | o : A | provenance | |
|
||||
| H.cs:147:25:147:38 | call to method Source<A> : A | H.cs:147:17:147:39 | call to method Through : A | provenance | |
|
||||
| H.cs:147:25:147:38 | call to method Source<A> : A | H.cs:147:17:147:39 | call to method Through : A | provenance | |
|
||||
| H.cs:153:22:153:22 | a [Return] : A [field FieldA] : B | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA] : B | provenance | |
|
||||
| H.cs:153:22:153:22 | a [Return] : A [field FieldA] : B | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA] : B | provenance | |
|
||||
| H.cs:153:32:153:32 | o : Object | H.cs:156:20:156:20 | access to parameter o : Object | provenance | |
|
||||
| H.cs:153:32:153:32 | o : Object | H.cs:156:20:156:20 | access to parameter o : Object | provenance | |
|
||||
| H.cs:155:13:155:13 | access to local variable b : B | H.cs:156:9:156:9 | access to local variable b : B | provenance | |
|
||||
@@ -824,8 +880,10 @@ edges
|
||||
| H.cs:156:9:156:9 | access to local variable b : B | H.cs:157:20:157:20 | access to local variable b : B | provenance | |
|
||||
| H.cs:156:20:156:20 | access to parameter o : Object | H.cs:156:9:156:9 | [post] access to local variable b : B [field FieldB] : Object | provenance | |
|
||||
| H.cs:156:20:156:20 | access to parameter o : Object | H.cs:156:9:156:9 | [post] access to local variable b : B [field FieldB] : Object | provenance | |
|
||||
| H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA] : B | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA] : B | provenance | |
|
||||
| H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA] : B | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA] : B | provenance | |
|
||||
| H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA, field FieldB] : Object | H.cs:153:22:153:22 | a [Return] : A [field FieldA, field FieldB] : Object | provenance | |
|
||||
| H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA, field FieldB] : Object | H.cs:153:22:153:22 | a [Return] : A [field FieldA, field FieldB] : Object | provenance | |
|
||||
| H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA] : B | H.cs:153:22:153:22 | a [Return] : A [field FieldA] : B | provenance | |
|
||||
| H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA] : B | H.cs:153:22:153:22 | a [Return] : A [field FieldA] : B | provenance | |
|
||||
| H.cs:157:20:157:20 | access to local variable b : B | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA] : B | provenance | |
|
||||
| H.cs:157:20:157:20 | access to local variable b : B | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA] : B | provenance | |
|
||||
| H.cs:157:20:157:20 | access to local variable b : B [field FieldB] : Object | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA, field FieldB] : Object | provenance | |
|
||||
@@ -860,10 +918,12 @@ edges
|
||||
| H.cs:165:20:165:27 | access to field FieldA : B [field FieldB] : Object | H.cs:165:17:165:27 | (...) ... : B [field FieldB] : Object | provenance | |
|
||||
| H.cs:167:14:167:14 | access to local variable b : B [field FieldB] : Object | H.cs:167:14:167:21 | access to field FieldB | provenance | |
|
||||
| H.cs:167:14:167:14 | access to local variable b : B [field FieldB] : Object | H.cs:167:14:167:21 | access to field FieldB | provenance | |
|
||||
| I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | I.cs:21:13:21:19 | object creation of type I : I [field Field1] : Object | provenance | |
|
||||
| I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | I.cs:21:13:21:19 | object creation of type I : I [field Field1] : Object | provenance | |
|
||||
| I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | I.cs:26:13:26:37 | [pre-initializer] object creation of type I : I [field Field1] : Object | provenance | |
|
||||
| I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | I.cs:26:13:26:37 | [pre-initializer] object creation of type I : I [field Field1] : Object | provenance | |
|
||||
| I.cs:5:12:5:12 | this [Return] : I [field Field1] : Object | I.cs:21:13:21:19 | object creation of type I : I [field Field1] : Object | provenance | |
|
||||
| I.cs:5:12:5:12 | this [Return] : I [field Field1] : Object | I.cs:21:13:21:19 | object creation of type I : I [field Field1] : Object | provenance | |
|
||||
| I.cs:5:12:5:12 | this [Return] : I [field Field1] : Object | I.cs:26:13:26:37 | [pre-initializer] object creation of type I : I [field Field1] : Object | provenance | |
|
||||
| I.cs:5:12:5:12 | this [Return] : I [field Field1] : Object | I.cs:26:13:26:37 | [pre-initializer] object creation of type I : I [field Field1] : Object | provenance | |
|
||||
| I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | I.cs:5:12:5:12 | this [Return] : I [field Field1] : Object | provenance | |
|
||||
| I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | I.cs:5:12:5:12 | this [Return] : I [field Field1] : Object | provenance | |
|
||||
| I.cs:7:18:7:34 | call to method Source<Object> : Object | I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | provenance | |
|
||||
| I.cs:7:18:7:34 | call to method Source<Object> : Object | I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | provenance | |
|
||||
| I.cs:13:13:13:13 | access to local variable o : Object | I.cs:15:20:15:20 | access to local variable o : Object | provenance | |
|
||||
@@ -912,10 +972,18 @@ edges
|
||||
| I.cs:39:9:39:9 | access to parameter i : I [field Field1] : Object | I.cs:40:14:40:14 | access to parameter i : I [field Field1] : Object | provenance | |
|
||||
| I.cs:40:14:40:14 | access to parameter i : I [field Field1] : Object | I.cs:40:14:40:21 | access to field Field1 | provenance | |
|
||||
| I.cs:40:14:40:14 | access to parameter i : I [field Field1] : Object | I.cs:40:14:40:21 | access to field Field1 | provenance | |
|
||||
| J.cs:6:40:6:44 | Prop1 : Object | J.cs:6:21:6:31 | this [Return] : RecordClass [property Prop1] : Object | provenance | |
|
||||
| J.cs:6:40:6:44 | Prop1 : Object | J.cs:6:21:6:31 | this [Return] : RecordClass [property Prop1] : Object | provenance | |
|
||||
| J.cs:8:42:8:46 | Prop1 : Object | J.cs:8:22:8:33 | this [Return] : RecordStruct [property Prop1] : Object | provenance | |
|
||||
| J.cs:8:42:8:46 | Prop1 : Object | J.cs:8:22:8:33 | this [Return] : RecordStruct [property Prop1] : Object | provenance | |
|
||||
| J.cs:14:26:14:30 | field : Object | J.cs:14:66:14:70 | access to parameter field : Object | provenance | |
|
||||
| J.cs:14:26:14:30 | field : Object | J.cs:14:66:14:70 | access to parameter field : Object | provenance | |
|
||||
| J.cs:14:40:14:43 | prop : Object | J.cs:14:73:14:76 | access to parameter prop : Object | provenance | |
|
||||
| J.cs:14:40:14:43 | prop : Object | J.cs:14:73:14:76 | access to parameter prop : Object | provenance | |
|
||||
| J.cs:14:50:14:54 | [post] this access : Struct [field Field] : Object | J.cs:14:12:14:17 | this [Return] : Struct [field Field] : Object | provenance | |
|
||||
| J.cs:14:50:14:54 | [post] this access : Struct [field Field] : Object | J.cs:14:12:14:17 | this [Return] : Struct [field Field] : Object | provenance | |
|
||||
| J.cs:14:57:14:60 | [post] this access : Struct [property Prop] : Object | J.cs:14:12:14:17 | this [Return] : Struct [property Prop] : Object | provenance | |
|
||||
| J.cs:14:57:14:60 | [post] this access : Struct [property Prop] : Object | J.cs:14:12:14:17 | this [Return] : Struct [property Prop] : Object | provenance | |
|
||||
| J.cs:14:66:14:70 | access to parameter field : Object | J.cs:14:50:14:54 | [post] this access : Struct [field Field] : Object | provenance | |
|
||||
| J.cs:14:66:14:70 | access to parameter field : Object | J.cs:14:50:14:54 | [post] this access : Struct [field Field] : Object | provenance | |
|
||||
| J.cs:14:73:14:76 | access to parameter prop : Object | J.cs:14:57:14:60 | [post] this access : Struct [property Prop] : Object | provenance | |
|
||||
@@ -1167,6 +1235,8 @@ nodes
|
||||
| A.cs:64:18:64:26 | access to field a | semmle.label | access to field a |
|
||||
| A.cs:64:19:64:23 | (...) ... : C1 [field a] : A | semmle.label | (...) ... : C1 [field a] : A |
|
||||
| A.cs:64:19:64:23 | (...) ... : C1 [field a] : A | semmle.label | (...) ... : C1 [field a] : A |
|
||||
| A.cs:81:22:81:22 | b [Return] : B [field c] : C | semmle.label | b [Return] : B [field c] : C |
|
||||
| A.cs:81:22:81:22 | b [Return] : B [field c] : C | semmle.label | b [Return] : B [field c] : C |
|
||||
| A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | semmle.label | [post] access to parameter b : B [field c] : C |
|
||||
| A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C | semmle.label | [post] access to parameter b : B [field c] : C |
|
||||
| A.cs:83:15:83:26 | call to method Source<C> : C | semmle.label | call to method Source<C> : C |
|
||||
@@ -1177,8 +1247,16 @@ nodes
|
||||
| A.cs:89:14:89:14 | access to local variable b : B [field c] : C | semmle.label | access to local variable b : B [field c] : C |
|
||||
| A.cs:89:14:89:16 | access to field c | semmle.label | access to field c |
|
||||
| A.cs:89:14:89:16 | access to field c | semmle.label | access to field c |
|
||||
| A.cs:95:16:95:16 | this [Return] : D [field b, field c] : C | semmle.label | this [Return] : D [field b, field c] : C |
|
||||
| A.cs:95:16:95:16 | this [Return] : D [field b, field c] : C | semmle.label | this [Return] : D [field b, field c] : C |
|
||||
| A.cs:95:16:95:16 | this [Return] : D [field b] : B | semmle.label | this [Return] : D [field b] : B |
|
||||
| A.cs:95:16:95:16 | this [Return] : D [field b] : B | semmle.label | this [Return] : D [field b] : B |
|
||||
| A.cs:95:16:95:16 | this [Return] : D [field b] : B | semmle.label | this [Return] : D [field b] : B |
|
||||
| A.cs:95:16:95:16 | this [Return] : D [field b] : B | semmle.label | this [Return] : D [field b] : B |
|
||||
| A.cs:95:20:95:20 | b : B | semmle.label | b : B |
|
||||
| A.cs:95:20:95:20 | b : B | semmle.label | b : B |
|
||||
| A.cs:95:20:95:20 | b [Return] : B [field c] : C | semmle.label | b [Return] : B [field c] : C |
|
||||
| A.cs:95:20:95:20 | b [Return] : B [field c] : C | semmle.label | b [Return] : B [field c] : C |
|
||||
| A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | semmle.label | [post] access to parameter b : B [field c] : C |
|
||||
| A.cs:97:13:97:13 | [post] access to parameter b : B [field c] : C | semmle.label | [post] access to parameter b : B [field c] : C |
|
||||
| A.cs:97:13:97:13 | access to parameter b : B | semmle.label | access to parameter b : B |
|
||||
@@ -1277,12 +1355,20 @@ nodes
|
||||
| A.cs:123:18:123:18 | access to local variable l : MyList [field head] : B | semmle.label | access to local variable l : MyList [field head] : B |
|
||||
| A.cs:123:18:123:23 | access to field head | semmle.label | access to field head |
|
||||
| A.cs:123:18:123:23 | access to field head | semmle.label | access to field head |
|
||||
| A.cs:141:16:141:16 | this [Return] : B [field c] : C | semmle.label | this [Return] : B [field c] : C |
|
||||
| A.cs:141:16:141:16 | this [Return] : B [field c] : C | semmle.label | this [Return] : B [field c] : C |
|
||||
| A.cs:141:20:141:20 | c : C | semmle.label | c : C |
|
||||
| A.cs:141:20:141:20 | c : C | semmle.label | c : C |
|
||||
| A.cs:143:13:143:16 | [post] this access : B [field c] : C | semmle.label | [post] this access : B [field c] : C |
|
||||
| A.cs:143:13:143:16 | [post] this access : B [field c] : C | semmle.label | [post] this access : B [field c] : C |
|
||||
| A.cs:143:22:143:22 | access to parameter c : C | semmle.label | access to parameter c : C |
|
||||
| A.cs:143:22:143:22 | access to parameter c : C | semmle.label | access to parameter c : C |
|
||||
| A.cs:145:21:145:23 | this [Return] : B [field c] : C | semmle.label | this [Return] : B [field c] : C |
|
||||
| A.cs:145:21:145:23 | this [Return] : B [field c] : C | semmle.label | this [Return] : B [field c] : C |
|
||||
| A.cs:145:21:145:23 | this [Return] : B [field c] : C1 | semmle.label | this [Return] : B [field c] : C1 |
|
||||
| A.cs:145:21:145:23 | this [Return] : B [field c] : C1 | semmle.label | this [Return] : B [field c] : C1 |
|
||||
| A.cs:145:21:145:23 | this [Return] : B [field c] : C2 | semmle.label | this [Return] : B [field c] : C2 |
|
||||
| A.cs:145:21:145:23 | this [Return] : B [field c] : C2 | semmle.label | this [Return] : B [field c] : C2 |
|
||||
| A.cs:145:27:145:27 | c : C | semmle.label | c : C |
|
||||
| A.cs:145:27:145:27 | c : C | semmle.label | c : C |
|
||||
| A.cs:145:27:145:27 | c : C1 | semmle.label | c : C1 |
|
||||
@@ -1319,6 +1405,12 @@ nodes
|
||||
| A.cs:149:20:149:27 | object creation of type B : B [field c] : C | semmle.label | object creation of type B : B [field c] : C |
|
||||
| A.cs:149:26:149:26 | access to parameter c : C | semmle.label | access to parameter c : C |
|
||||
| A.cs:149:26:149:26 | access to parameter c : C | semmle.label | access to parameter c : C |
|
||||
| A.cs:157:16:157:21 | this [Return] : MyList [field head] : B | semmle.label | this [Return] : MyList [field head] : B |
|
||||
| A.cs:157:16:157:21 | this [Return] : MyList [field head] : B | semmle.label | this [Return] : MyList [field head] : B |
|
||||
| A.cs:157:16:157:21 | this [Return] : MyList [field next, field head] : B | semmle.label | this [Return] : MyList [field next, field head] : B |
|
||||
| A.cs:157:16:157:21 | this [Return] : MyList [field next, field head] : B | semmle.label | this [Return] : MyList [field next, field head] : B |
|
||||
| A.cs:157:16:157:21 | this [Return] : MyList [field next, field next, field head] : B | semmle.label | this [Return] : MyList [field next, field next, field head] : B |
|
||||
| A.cs:157:16:157:21 | this [Return] : MyList [field next, field next, field head] : B | semmle.label | this [Return] : MyList [field next, field next, field head] : B |
|
||||
| A.cs:157:25:157:28 | head : B | semmle.label | head : B |
|
||||
| A.cs:157:25:157:28 | head : B | semmle.label | head : B |
|
||||
| A.cs:157:38:157:41 | next : MyList [field head] : B | semmle.label | next : MyList [field head] : B |
|
||||
@@ -1381,6 +1473,10 @@ nodes
|
||||
| B.cs:18:14:18:20 | access to field box1 : Box1 [field elem2] : Elem | semmle.label | access to field box1 : Box1 [field elem2] : Elem |
|
||||
| B.cs:18:14:18:26 | access to field elem2 | semmle.label | access to field elem2 |
|
||||
| B.cs:18:14:18:26 | access to field elem2 | semmle.label | access to field elem2 |
|
||||
| B.cs:29:16:29:19 | this [Return] : Box1 [field elem1] : Elem | semmle.label | this [Return] : Box1 [field elem1] : Elem |
|
||||
| B.cs:29:16:29:19 | this [Return] : Box1 [field elem1] : Elem | semmle.label | this [Return] : Box1 [field elem1] : Elem |
|
||||
| B.cs:29:16:29:19 | this [Return] : Box1 [field elem2] : Elem | semmle.label | this [Return] : Box1 [field elem2] : Elem |
|
||||
| B.cs:29:16:29:19 | this [Return] : Box1 [field elem2] : Elem | semmle.label | this [Return] : Box1 [field elem2] : Elem |
|
||||
| B.cs:29:26:29:27 | e1 : Elem | semmle.label | e1 : Elem |
|
||||
| B.cs:29:26:29:27 | e1 : Elem | semmle.label | e1 : Elem |
|
||||
| B.cs:29:35:29:36 | e2 : Elem | semmle.label | e2 : Elem |
|
||||
@@ -1393,6 +1489,10 @@ nodes
|
||||
| B.cs:32:13:32:16 | [post] this access : Box1 [field elem2] : Elem | semmle.label | [post] this access : Box1 [field elem2] : Elem |
|
||||
| B.cs:32:26:32:27 | access to parameter e2 : Elem | semmle.label | access to parameter e2 : Elem |
|
||||
| B.cs:32:26:32:27 | access to parameter e2 : Elem | semmle.label | access to parameter e2 : Elem |
|
||||
| B.cs:39:16:39:19 | this [Return] : Box2 [field box1, field elem1] : Elem | semmle.label | this [Return] : Box2 [field box1, field elem1] : Elem |
|
||||
| B.cs:39:16:39:19 | this [Return] : Box2 [field box1, field elem1] : Elem | semmle.label | this [Return] : Box2 [field box1, field elem1] : Elem |
|
||||
| B.cs:39:16:39:19 | this [Return] : Box2 [field box1, field elem2] : Elem | semmle.label | this [Return] : Box2 [field box1, field elem2] : Elem |
|
||||
| B.cs:39:16:39:19 | this [Return] : Box2 [field box1, field elem2] : Elem | semmle.label | this [Return] : Box2 [field box1, field elem2] : Elem |
|
||||
| B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | semmle.label | b1 : Box1 [field elem1] : Elem |
|
||||
| B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | semmle.label | b1 : Box1 [field elem1] : Elem |
|
||||
| B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | semmle.label | b1 : Box1 [field elem2] : Elem |
|
||||
@@ -1445,6 +1545,14 @@ nodes
|
||||
| C.cs:13:9:13:9 | access to local variable c : C [field s3] : Elem | semmle.label | access to local variable c : C [field s3] : Elem |
|
||||
| C.cs:13:9:13:9 | access to local variable c : C [property s5] : Elem | semmle.label | access to local variable c : C [property s5] : Elem |
|
||||
| C.cs:13:9:13:9 | access to local variable c : C [property s5] : Elem | semmle.label | access to local variable c : C [property s5] : Elem |
|
||||
| C.cs:16:13:16:13 | this [Return] : C [field s1] : Elem | semmle.label | this [Return] : C [field s1] : Elem |
|
||||
| C.cs:16:13:16:13 | this [Return] : C [field s1] : Elem | semmle.label | this [Return] : C [field s1] : Elem |
|
||||
| C.cs:16:13:16:13 | this [Return] : C [field s2] : Elem | semmle.label | this [Return] : C [field s2] : Elem |
|
||||
| C.cs:16:13:16:13 | this [Return] : C [field s2] : Elem | semmle.label | this [Return] : C [field s2] : Elem |
|
||||
| C.cs:16:13:16:13 | this [Return] : C [field s3] : Elem | semmle.label | this [Return] : C [field s3] : Elem |
|
||||
| C.cs:16:13:16:13 | this [Return] : C [field s3] : Elem | semmle.label | this [Return] : C [field s3] : Elem |
|
||||
| C.cs:16:13:16:13 | this [Return] : C [property s5] : Elem | semmle.label | this [Return] : C [property s5] : Elem |
|
||||
| C.cs:16:13:16:13 | this [Return] : C [property s5] : Elem | semmle.label | this [Return] : C [property s5] : Elem |
|
||||
| C.cs:18:9:18:12 | [post] this access : C [field s3] : Elem | semmle.label | [post] this access : C [field s3] : Elem |
|
||||
| C.cs:18:9:18:12 | [post] this access : C [field s3] : Elem | semmle.label | [post] this access : C [field s3] : Elem |
|
||||
| C.cs:18:19:18:33 | call to method Source<Elem> : Elem | semmle.label | call to method Source<Elem> : Elem |
|
||||
@@ -1483,6 +1591,8 @@ nodes
|
||||
| D.cs:8:22:8:25 | this access : D [field trivialPropField] : Object | semmle.label | this access : D [field trivialPropField] : Object |
|
||||
| D.cs:8:22:8:42 | access to field trivialPropField : Object | semmle.label | access to field trivialPropField : Object |
|
||||
| D.cs:8:22:8:42 | access to field trivialPropField : Object | semmle.label | access to field trivialPropField : Object |
|
||||
| D.cs:9:9:9:11 | this [Return] : D [field trivialPropField] : Object | semmle.label | this [Return] : D [field trivialPropField] : Object |
|
||||
| D.cs:9:9:9:11 | this [Return] : D [field trivialPropField] : Object | semmle.label | this [Return] : D [field trivialPropField] : Object |
|
||||
| D.cs:9:9:9:11 | value : Object | semmle.label | value : Object |
|
||||
| D.cs:9:9:9:11 | value : Object | semmle.label | value : Object |
|
||||
| D.cs:9:15:9:18 | [post] this access : D [field trivialPropField] : Object | semmle.label | [post] this access : D [field trivialPropField] : Object |
|
||||
@@ -1495,6 +1605,8 @@ nodes
|
||||
| D.cs:14:22:14:25 | this access : D [field trivialPropField] : Object | semmle.label | this access : D [field trivialPropField] : Object |
|
||||
| D.cs:14:22:14:42 | access to field trivialPropField : Object | semmle.label | access to field trivialPropField : Object |
|
||||
| D.cs:14:22:14:42 | access to field trivialPropField : Object | semmle.label | access to field trivialPropField : Object |
|
||||
| D.cs:15:9:15:11 | this [Return] : D [field trivialPropField] : Object | semmle.label | this [Return] : D [field trivialPropField] : Object |
|
||||
| D.cs:15:9:15:11 | this [Return] : D [field trivialPropField] : Object | semmle.label | this [Return] : D [field trivialPropField] : Object |
|
||||
| D.cs:15:9:15:11 | value : Object | semmle.label | value : Object |
|
||||
| D.cs:15:9:15:11 | value : Object | semmle.label | value : Object |
|
||||
| D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object | semmle.label | [post] this access : D [field trivialPropField] : Object |
|
||||
@@ -1597,6 +1709,8 @@ nodes
|
||||
| E.cs:24:14:24:14 | access to local variable s : S [field Field] : Object | semmle.label | access to local variable s : S [field Field] : Object |
|
||||
| E.cs:24:14:24:20 | access to field Field | semmle.label | access to field Field |
|
||||
| E.cs:24:14:24:20 | access to field Field | semmle.label | access to field Field |
|
||||
| E.cs:43:36:43:36 | s [Return] : RefS [field RefField] : Object | semmle.label | s [Return] : RefS [field RefField] : Object |
|
||||
| E.cs:43:36:43:36 | s [Return] : RefS [field RefField] : Object | semmle.label | s [Return] : RefS [field RefField] : Object |
|
||||
| E.cs:43:46:43:46 | o : Object | semmle.label | o : Object |
|
||||
| E.cs:43:46:43:46 | o : Object | semmle.label | o : Object |
|
||||
| E.cs:46:9:46:9 | [post] access to parameter s : RefS [field RefField] : Object | semmle.label | [post] access to parameter s : RefS [field RefField] : Object |
|
||||
@@ -1775,6 +1889,8 @@ nodes
|
||||
| G.cs:63:34:63:37 | access to field Elem : Elem | semmle.label | access to field Elem : Elem |
|
||||
| G.cs:63:34:63:37 | this access : Box1 [field Elem] : Elem | semmle.label | this access : Box1 [field Elem] : Elem |
|
||||
| G.cs:63:34:63:37 | this access : Box1 [field Elem] : Elem | semmle.label | this access : Box1 [field Elem] : Elem |
|
||||
| G.cs:64:21:64:27 | this [Return] : Box1 [field Elem] : Elem | semmle.label | this [Return] : Box1 [field Elem] : Elem |
|
||||
| G.cs:64:21:64:27 | this [Return] : Box1 [field Elem] : Elem | semmle.label | this [Return] : Box1 [field Elem] : Elem |
|
||||
| G.cs:64:34:64:34 | e : Elem | semmle.label | e : Elem |
|
||||
| G.cs:64:34:64:34 | e : Elem | semmle.label | e : Elem |
|
||||
| G.cs:64:39:64:42 | [post] this access : Box1 [field Elem] : Elem | semmle.label | [post] this access : Box1 [field Elem] : Elem |
|
||||
@@ -1847,6 +1963,8 @@ nodes
|
||||
| H.cs:45:14:45:21 | access to field FieldB | semmle.label | access to field FieldB |
|
||||
| H.cs:53:25:53:25 | a : A [field FieldA] : Object | semmle.label | a : A [field FieldA] : Object |
|
||||
| H.cs:53:25:53:25 | a : A [field FieldA] : Object | semmle.label | a : A [field FieldA] : Object |
|
||||
| H.cs:53:30:53:31 | b1 [Return] : B [field FieldB] : Object | semmle.label | b1 [Return] : B [field FieldB] : Object |
|
||||
| H.cs:53:30:53:31 | b1 [Return] : B [field FieldB] : Object | semmle.label | b1 [Return] : B [field FieldB] : Object |
|
||||
| H.cs:55:9:55:10 | [post] access to parameter b1 : B [field FieldB] : Object | semmle.label | [post] access to parameter b1 : B [field FieldB] : Object |
|
||||
| H.cs:55:9:55:10 | [post] access to parameter b1 : B [field FieldB] : Object | semmle.label | [post] access to parameter b1 : B [field FieldB] : Object |
|
||||
| H.cs:55:21:55:21 | access to parameter a : A [field FieldA] : Object | semmle.label | access to parameter a : A [field FieldA] : Object |
|
||||
@@ -1865,8 +1983,12 @@ nodes
|
||||
| H.cs:65:14:65:15 | access to local variable b1 : B [field FieldB] : Object | semmle.label | access to local variable b1 : B [field FieldB] : Object |
|
||||
| H.cs:65:14:65:22 | access to field FieldB | semmle.label | access to field FieldB |
|
||||
| H.cs:65:14:65:22 | access to field FieldB | semmle.label | access to field FieldB |
|
||||
| H.cs:77:20:77:20 | a [Return] : A [field FieldA] : Object | semmle.label | a [Return] : A [field FieldA] : Object |
|
||||
| H.cs:77:20:77:20 | a [Return] : A [field FieldA] : Object | semmle.label | a [Return] : A [field FieldA] : Object |
|
||||
| H.cs:77:30:77:30 | o : Object | semmle.label | o : Object |
|
||||
| H.cs:77:30:77:30 | o : Object | semmle.label | o : Object |
|
||||
| H.cs:77:35:77:36 | b1 [Return] : B [field FieldB] : Object | semmle.label | b1 [Return] : B [field FieldB] : Object |
|
||||
| H.cs:77:35:77:36 | b1 [Return] : B [field FieldB] : Object | semmle.label | b1 [Return] : B [field FieldB] : Object |
|
||||
| H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | semmle.label | [post] access to parameter a : A [field FieldA] : Object |
|
||||
| H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | semmle.label | [post] access to parameter a : A [field FieldA] : Object |
|
||||
| H.cs:79:20:79:20 | access to parameter o : Object | semmle.label | access to parameter o : Object |
|
||||
@@ -1953,6 +2075,10 @@ nodes
|
||||
| H.cs:147:25:147:38 | call to method Source<A> : A | semmle.label | call to method Source<A> : A |
|
||||
| H.cs:148:14:148:14 | access to local variable a | semmle.label | access to local variable a |
|
||||
| H.cs:148:14:148:14 | access to local variable a | semmle.label | access to local variable a |
|
||||
| H.cs:153:22:153:22 | a [Return] : A [field FieldA, field FieldB] : Object | semmle.label | a [Return] : A [field FieldA, field FieldB] : Object |
|
||||
| H.cs:153:22:153:22 | a [Return] : A [field FieldA, field FieldB] : Object | semmle.label | a [Return] : A [field FieldA, field FieldB] : Object |
|
||||
| H.cs:153:22:153:22 | a [Return] : A [field FieldA] : B | semmle.label | a [Return] : A [field FieldA] : B |
|
||||
| H.cs:153:22:153:22 | a [Return] : A [field FieldA] : B | semmle.label | a [Return] : A [field FieldA] : B |
|
||||
| H.cs:153:32:153:32 | o : Object | semmle.label | o : Object |
|
||||
| H.cs:153:32:153:32 | o : Object | semmle.label | o : Object |
|
||||
| H.cs:155:13:155:13 | access to local variable b : B | semmle.label | access to local variable b : B |
|
||||
@@ -2005,6 +2131,8 @@ nodes
|
||||
| H.cs:167:14:167:14 | access to local variable b : B [field FieldB] : Object | semmle.label | access to local variable b : B [field FieldB] : Object |
|
||||
| H.cs:167:14:167:21 | access to field FieldB | semmle.label | access to field FieldB |
|
||||
| H.cs:167:14:167:21 | access to field FieldB | semmle.label | access to field FieldB |
|
||||
| I.cs:5:12:5:12 | this [Return] : I [field Field1] : Object | semmle.label | this [Return] : I [field Field1] : Object |
|
||||
| I.cs:5:12:5:12 | this [Return] : I [field Field1] : Object | semmle.label | this [Return] : I [field Field1] : Object |
|
||||
| I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | semmle.label | [post] this access : I [field Field1] : Object |
|
||||
| I.cs:7:9:7:14 | [post] this access : I [field Field1] : Object | semmle.label | [post] this access : I [field Field1] : Object |
|
||||
| I.cs:7:18:7:34 | call to method Source<Object> : Object | semmle.label | call to method Source<Object> : Object |
|
||||
@@ -2063,10 +2191,18 @@ nodes
|
||||
| I.cs:40:14:40:14 | access to parameter i : I [field Field1] : Object | semmle.label | access to parameter i : I [field Field1] : Object |
|
||||
| I.cs:40:14:40:21 | access to field Field1 | semmle.label | access to field Field1 |
|
||||
| I.cs:40:14:40:21 | access to field Field1 | semmle.label | access to field Field1 |
|
||||
| J.cs:6:21:6:31 | this [Return] : RecordClass [property Prop1] : Object | semmle.label | this [Return] : RecordClass [property Prop1] : Object |
|
||||
| J.cs:6:21:6:31 | this [Return] : RecordClass [property Prop1] : Object | semmle.label | this [Return] : RecordClass [property Prop1] : Object |
|
||||
| J.cs:6:40:6:44 | Prop1 : Object | semmle.label | Prop1 : Object |
|
||||
| J.cs:6:40:6:44 | Prop1 : Object | semmle.label | Prop1 : Object |
|
||||
| J.cs:8:22:8:33 | this [Return] : RecordStruct [property Prop1] : Object | semmle.label | this [Return] : RecordStruct [property Prop1] : Object |
|
||||
| J.cs:8:22:8:33 | this [Return] : RecordStruct [property Prop1] : Object | semmle.label | this [Return] : RecordStruct [property Prop1] : Object |
|
||||
| J.cs:8:42:8:46 | Prop1 : Object | semmle.label | Prop1 : Object |
|
||||
| J.cs:8:42:8:46 | Prop1 : Object | semmle.label | Prop1 : Object |
|
||||
| J.cs:14:12:14:17 | this [Return] : Struct [field Field] : Object | semmle.label | this [Return] : Struct [field Field] : Object |
|
||||
| J.cs:14:12:14:17 | this [Return] : Struct [field Field] : Object | semmle.label | this [Return] : Struct [field Field] : Object |
|
||||
| J.cs:14:12:14:17 | this [Return] : Struct [property Prop] : Object | semmle.label | this [Return] : Struct [property Prop] : Object |
|
||||
| J.cs:14:12:14:17 | this [Return] : Struct [property Prop] : Object | semmle.label | this [Return] : Struct [property Prop] : Object |
|
||||
| J.cs:14:26:14:30 | field : Object | semmle.label | field : Object |
|
||||
| J.cs:14:26:14:30 | field : Object | semmle.label | field : Object |
|
||||
| J.cs:14:40:14:43 | prop : Object | semmle.label | prop : Object |
|
||||
@@ -2260,48 +2396,48 @@ nodes
|
||||
subpaths
|
||||
| A.cs:6:24:6:24 | access to local variable c : C | A.cs:147:32:147:32 | c : C | A.cs:149:20:149:27 | object creation of type B : B [field c] : C | A.cs:6:17:6:25 | call to method Make : B [field c] : C |
|
||||
| A.cs:6:24:6:24 | access to local variable c : C | A.cs:147:32:147:32 | c : C | A.cs:149:20:149:27 | object creation of type B : B [field c] : C | A.cs:6:17:6:25 | call to method Make : B [field c] : C |
|
||||
| A.cs:13:15:13:29 | call to method Source<C1> : C1 | A.cs:145:27:145:27 | c : C1 | A.cs:145:32:145:35 | [post] this access : B [field c] : C1 | A.cs:13:9:13:9 | [post] access to local variable b : B [field c] : C1 |
|
||||
| A.cs:13:15:13:29 | call to method Source<C1> : C1 | A.cs:145:27:145:27 | c : C1 | A.cs:145:32:145:35 | [post] this access : B [field c] : C1 | A.cs:13:9:13:9 | [post] access to local variable b : B [field c] : C1 |
|
||||
| A.cs:13:15:13:29 | call to method Source<C1> : C1 | A.cs:145:27:145:27 | c : C1 | A.cs:145:21:145:23 | this [Return] : B [field c] : C1 | A.cs:13:9:13:9 | [post] access to local variable b : B [field c] : C1 |
|
||||
| A.cs:13:15:13:29 | call to method Source<C1> : C1 | A.cs:145:27:145:27 | c : C1 | A.cs:145:21:145:23 | this [Return] : B [field c] : C1 | A.cs:13:9:13:9 | [post] access to local variable b : B [field c] : C1 |
|
||||
| A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | A.cs:146:18:146:20 | this : B [field c] : C1 | A.cs:146:33:146:38 | access to field c : C1 | A.cs:14:14:14:20 | call to method Get |
|
||||
| A.cs:14:14:14:14 | access to local variable b : B [field c] : C1 | A.cs:146:18:146:20 | this : B [field c] : C1 | A.cs:146:33:146:38 | access to field c : C1 | A.cs:14:14:14:20 | call to method Get |
|
||||
| A.cs:15:15:15:35 | object creation of type B : B [field c] : C | A.cs:146:18:146:20 | this : B [field c] : C | A.cs:146:33:146:38 | access to field c : C | A.cs:15:14:15:42 | call to method Get |
|
||||
| A.cs:15:15:15:35 | object creation of type B : B [field c] : C | A.cs:146:18:146:20 | this : B [field c] : C | A.cs:146:33:146:38 | access to field c : C | A.cs:15:14:15:42 | call to method Get |
|
||||
| A.cs:15:21:15:34 | call to method Source<C> : C | A.cs:141:20:141:20 | c : C | A.cs:143:13:143:16 | [post] this access : B [field c] : C | A.cs:15:15:15:35 | object creation of type B : B [field c] : C |
|
||||
| A.cs:15:21:15:34 | call to method Source<C> : C | A.cs:141:20:141:20 | c : C | A.cs:143:13:143:16 | [post] this access : B [field c] : C | A.cs:15:15:15:35 | object creation of type B : B [field c] : C |
|
||||
| A.cs:15:21:15:34 | call to method Source<C> : C | A.cs:141:20:141:20 | c : C | A.cs:141:16:141:16 | this [Return] : B [field c] : C | A.cs:15:15:15:35 | object creation of type B : B [field c] : C |
|
||||
| A.cs:15:21:15:34 | call to method Source<C> : C | A.cs:141:20:141:20 | c : C | A.cs:141:16:141:16 | this [Return] : B [field c] : C | A.cs:15:15:15:35 | object creation of type B : B [field c] : C |
|
||||
| A.cs:22:25:22:37 | call to method Source<C2> : C2 | A.cs:42:29:42:29 | c : C2 | A.cs:48:20:48:21 | access to local variable b2 : B [field c] : C2 | A.cs:22:14:22:38 | call to method SetOnB : B [field c] : C2 |
|
||||
| A.cs:22:25:22:37 | call to method Source<C2> : C2 | A.cs:42:29:42:29 | c : C2 | A.cs:48:20:48:21 | access to local variable b2 : B [field c] : C2 | A.cs:22:14:22:38 | call to method SetOnB : B [field c] : C2 |
|
||||
| A.cs:31:29:31:41 | call to method Source<C2> : C2 | A.cs:36:33:36:33 | c : C2 | A.cs:39:16:39:28 | ... ? ... : ... : B [field c] : C2 | A.cs:31:14:31:42 | call to method SetOnBWrap : B [field c] : C2 |
|
||||
| A.cs:31:29:31:41 | call to method Source<C2> : C2 | A.cs:36:33:36:33 | c : C2 | A.cs:39:16:39:28 | ... ? ... : ... : B [field c] : C2 | A.cs:31:14:31:42 | call to method SetOnBWrap : B [field c] : C2 |
|
||||
| A.cs:38:29:38:29 | access to parameter c : C2 | A.cs:42:29:42:29 | c : C2 | A.cs:48:20:48:21 | access to local variable b2 : B [field c] : C2 | A.cs:38:18:38:30 | call to method SetOnB : B [field c] : C2 |
|
||||
| A.cs:38:29:38:29 | access to parameter c : C2 | A.cs:42:29:42:29 | c : C2 | A.cs:48:20:48:21 | access to local variable b2 : B [field c] : C2 | A.cs:38:18:38:30 | call to method SetOnB : B [field c] : C2 |
|
||||
| A.cs:47:20:47:20 | access to parameter c : C2 | A.cs:145:27:145:27 | c : C2 | A.cs:145:32:145:35 | [post] this access : B [field c] : C2 | A.cs:47:13:47:14 | [post] access to local variable b2 : B [field c] : C2 |
|
||||
| A.cs:47:20:47:20 | access to parameter c : C2 | A.cs:145:27:145:27 | c : C2 | A.cs:145:32:145:35 | [post] this access : B [field c] : C2 | A.cs:47:13:47:14 | [post] access to local variable b2 : B [field c] : C2 |
|
||||
| A.cs:83:15:83:26 | call to method Source<C> : C | A.cs:145:27:145:27 | c : C | A.cs:145:32:145:35 | [post] this access : B [field c] : C | A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C |
|
||||
| A.cs:83:15:83:26 | call to method Source<C> : C | A.cs:145:27:145:27 | c : C | A.cs:145:32:145:35 | [post] this access : B [field c] : C | A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C |
|
||||
| A.cs:105:23:105:23 | access to local variable b : B | A.cs:95:20:95:20 | b : B | A.cs:98:13:98:16 | [post] this access : D [field b] : B | A.cs:105:17:105:29 | object creation of type D : D [field b] : B |
|
||||
| A.cs:105:23:105:23 | access to local variable b : B | A.cs:95:20:95:20 | b : B | A.cs:98:13:98:16 | [post] this access : D [field b] : B | A.cs:105:17:105:29 | object creation of type D : D [field b] : B |
|
||||
| A.cs:114:29:114:29 | access to local variable b : B | A.cs:157:25:157:28 | head : B | A.cs:159:13:159:16 | [post] this access : MyList [field head] : B | A.cs:114:18:114:54 | object creation of type MyList : MyList [field head] : B |
|
||||
| A.cs:114:29:114:29 | access to local variable b : B | A.cs:157:25:157:28 | head : B | A.cs:159:13:159:16 | [post] this access : MyList [field head] : B | A.cs:114:18:114:54 | object creation of type MyList : MyList [field head] : B |
|
||||
| A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | A.cs:157:38:157:41 | next : MyList [field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field head] : B | A.cs:115:18:115:37 | object creation of type MyList : MyList [field next, field head] : B |
|
||||
| A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | A.cs:157:38:157:41 | next : MyList [field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field head] : B | A.cs:115:18:115:37 | object creation of type MyList : MyList [field next, field head] : B |
|
||||
| A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | A.cs:157:38:157:41 | next : MyList [field next, field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field next, field head] : B | A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B |
|
||||
| A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | A.cs:157:38:157:41 | next : MyList [field next, field head] : B | A.cs:160:13:160:16 | [post] this access : MyList [field next, field next, field head] : B | A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B |
|
||||
| A.cs:149:26:149:26 | access to parameter c : C | A.cs:141:20:141:20 | c : C | A.cs:143:13:143:16 | [post] this access : B [field c] : C | A.cs:149:20:149:27 | object creation of type B : B [field c] : C |
|
||||
| A.cs:149:26:149:26 | access to parameter c : C | A.cs:141:20:141:20 | c : C | A.cs:143:13:143:16 | [post] this access : B [field c] : C | A.cs:149:20:149:27 | object creation of type B : B [field c] : C |
|
||||
| B.cs:6:27:6:27 | access to local variable e : Elem | B.cs:29:26:29:27 | e1 : Elem | B.cs:31:13:31:16 | [post] this access : Box1 [field elem1] : Elem | B.cs:6:18:6:34 | object creation of type Box1 : Box1 [field elem1] : Elem |
|
||||
| B.cs:6:27:6:27 | access to local variable e : Elem | B.cs:29:26:29:27 | e1 : Elem | B.cs:31:13:31:16 | [post] this access : Box1 [field elem1] : Elem | B.cs:6:18:6:34 | object creation of type Box1 : Box1 [field elem1] : Elem |
|
||||
| B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem1] : Elem | B.cs:7:18:7:29 | object creation of type Box2 : Box2 [field box1, field elem1] : Elem |
|
||||
| B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem1] : Elem | B.cs:7:18:7:29 | object creation of type Box2 : Box2 [field box1, field elem1] : Elem |
|
||||
| B.cs:15:33:15:33 | access to local variable e : Elem | B.cs:29:35:29:36 | e2 : Elem | B.cs:32:13:32:16 | [post] this access : Box1 [field elem2] : Elem | B.cs:15:18:15:34 | object creation of type Box1 : Box1 [field elem2] : Elem |
|
||||
| B.cs:15:33:15:33 | access to local variable e : Elem | B.cs:29:35:29:36 | e2 : Elem | B.cs:32:13:32:16 | [post] this access : Box1 [field elem2] : Elem | B.cs:15:18:15:34 | object creation of type Box1 : Box1 [field elem2] : Elem |
|
||||
| B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem2] : Elem | B.cs:16:18:16:29 | object creation of type Box2 : Box2 [field box1, field elem2] : Elem |
|
||||
| B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | B.cs:41:13:41:16 | [post] this access : Box2 [field box1, field elem2] : Elem | B.cs:16:18:16:29 | object creation of type Box2 : Box2 [field box1, field elem2] : Elem |
|
||||
| D.cs:15:34:15:38 | access to parameter value : Object | D.cs:9:9:9:11 | value : Object | D.cs:9:15:9:18 | [post] this access : D [field trivialPropField] : Object | D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object |
|
||||
| D.cs:15:34:15:38 | access to parameter value : Object | D.cs:9:9:9:11 | value : Object | D.cs:9:15:9:18 | [post] this access : D [field trivialPropField] : Object | D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object |
|
||||
| D.cs:22:27:22:28 | access to parameter o2 : Object | D.cs:9:9:9:11 | value : Object | D.cs:9:15:9:18 | [post] this access : D [field trivialPropField] : Object | D.cs:22:9:22:11 | [post] access to local variable ret : D [field trivialPropField] : Object |
|
||||
| D.cs:22:27:22:28 | access to parameter o2 : Object | D.cs:9:9:9:11 | value : Object | D.cs:9:15:9:18 | [post] this access : D [field trivialPropField] : Object | D.cs:22:9:22:11 | [post] access to local variable ret : D [field trivialPropField] : Object |
|
||||
| D.cs:23:27:23:28 | access to parameter o3 : Object | D.cs:15:9:15:11 | value : Object | D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object | D.cs:23:9:23:11 | [post] access to local variable ret : D [field trivialPropField] : Object |
|
||||
| D.cs:23:27:23:28 | access to parameter o3 : Object | D.cs:15:9:15:11 | value : Object | D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object | D.cs:23:9:23:11 | [post] access to local variable ret : D [field trivialPropField] : Object |
|
||||
| A.cs:47:20:47:20 | access to parameter c : C2 | A.cs:145:27:145:27 | c : C2 | A.cs:145:21:145:23 | this [Return] : B [field c] : C2 | A.cs:47:13:47:14 | [post] access to local variable b2 : B [field c] : C2 |
|
||||
| A.cs:47:20:47:20 | access to parameter c : C2 | A.cs:145:27:145:27 | c : C2 | A.cs:145:21:145:23 | this [Return] : B [field c] : C2 | A.cs:47:13:47:14 | [post] access to local variable b2 : B [field c] : C2 |
|
||||
| A.cs:83:15:83:26 | call to method Source<C> : C | A.cs:145:27:145:27 | c : C | A.cs:145:21:145:23 | this [Return] : B [field c] : C | A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C |
|
||||
| A.cs:83:15:83:26 | call to method Source<C> : C | A.cs:145:27:145:27 | c : C | A.cs:145:21:145:23 | this [Return] : B [field c] : C | A.cs:83:9:83:9 | [post] access to parameter b : B [field c] : C |
|
||||
| A.cs:105:23:105:23 | access to local variable b : B | A.cs:95:20:95:20 | b : B | A.cs:95:16:95:16 | this [Return] : D [field b] : B | A.cs:105:17:105:29 | object creation of type D : D [field b] : B |
|
||||
| A.cs:105:23:105:23 | access to local variable b : B | A.cs:95:20:95:20 | b : B | A.cs:95:16:95:16 | this [Return] : D [field b] : B | A.cs:105:17:105:29 | object creation of type D : D [field b] : B |
|
||||
| A.cs:114:29:114:29 | access to local variable b : B | A.cs:157:25:157:28 | head : B | A.cs:157:16:157:21 | this [Return] : MyList [field head] : B | A.cs:114:18:114:54 | object creation of type MyList : MyList [field head] : B |
|
||||
| A.cs:114:29:114:29 | access to local variable b : B | A.cs:157:25:157:28 | head : B | A.cs:157:16:157:21 | this [Return] : MyList [field head] : B | A.cs:114:18:114:54 | object creation of type MyList : MyList [field head] : B |
|
||||
| A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | A.cs:157:38:157:41 | next : MyList [field head] : B | A.cs:157:16:157:21 | this [Return] : MyList [field next, field head] : B | A.cs:115:18:115:37 | object creation of type MyList : MyList [field next, field head] : B |
|
||||
| A.cs:115:35:115:36 | access to local variable l1 : MyList [field head] : B | A.cs:157:38:157:41 | next : MyList [field head] : B | A.cs:157:16:157:21 | this [Return] : MyList [field next, field head] : B | A.cs:115:18:115:37 | object creation of type MyList : MyList [field next, field head] : B |
|
||||
| A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | A.cs:157:38:157:41 | next : MyList [field next, field head] : B | A.cs:157:16:157:21 | this [Return] : MyList [field next, field next, field head] : B | A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B |
|
||||
| A.cs:116:35:116:36 | access to local variable l2 : MyList [field next, field head] : B | A.cs:157:38:157:41 | next : MyList [field next, field head] : B | A.cs:157:16:157:21 | this [Return] : MyList [field next, field next, field head] : B | A.cs:116:18:116:37 | object creation of type MyList : MyList [field next, field next, field head] : B |
|
||||
| A.cs:149:26:149:26 | access to parameter c : C | A.cs:141:20:141:20 | c : C | A.cs:141:16:141:16 | this [Return] : B [field c] : C | A.cs:149:20:149:27 | object creation of type B : B [field c] : C |
|
||||
| A.cs:149:26:149:26 | access to parameter c : C | A.cs:141:20:141:20 | c : C | A.cs:141:16:141:16 | this [Return] : B [field c] : C | A.cs:149:20:149:27 | object creation of type B : B [field c] : C |
|
||||
| B.cs:6:27:6:27 | access to local variable e : Elem | B.cs:29:26:29:27 | e1 : Elem | B.cs:29:16:29:19 | this [Return] : Box1 [field elem1] : Elem | B.cs:6:18:6:34 | object creation of type Box1 : Box1 [field elem1] : Elem |
|
||||
| B.cs:6:27:6:27 | access to local variable e : Elem | B.cs:29:26:29:27 | e1 : Elem | B.cs:29:16:29:19 | this [Return] : Box1 [field elem1] : Elem | B.cs:6:18:6:34 | object creation of type Box1 : Box1 [field elem1] : Elem |
|
||||
| B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | B.cs:39:16:39:19 | this [Return] : Box2 [field box1, field elem1] : Elem | B.cs:7:18:7:29 | object creation of type Box2 : Box2 [field box1, field elem1] : Elem |
|
||||
| B.cs:7:27:7:28 | access to local variable b1 : Box1 [field elem1] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem1] : Elem | B.cs:39:16:39:19 | this [Return] : Box2 [field box1, field elem1] : Elem | B.cs:7:18:7:29 | object creation of type Box2 : Box2 [field box1, field elem1] : Elem |
|
||||
| B.cs:15:33:15:33 | access to local variable e : Elem | B.cs:29:35:29:36 | e2 : Elem | B.cs:29:16:29:19 | this [Return] : Box1 [field elem2] : Elem | B.cs:15:18:15:34 | object creation of type Box1 : Box1 [field elem2] : Elem |
|
||||
| B.cs:15:33:15:33 | access to local variable e : Elem | B.cs:29:35:29:36 | e2 : Elem | B.cs:29:16:29:19 | this [Return] : Box1 [field elem2] : Elem | B.cs:15:18:15:34 | object creation of type Box1 : Box1 [field elem2] : Elem |
|
||||
| B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | B.cs:39:16:39:19 | this [Return] : Box2 [field box1, field elem2] : Elem | B.cs:16:18:16:29 | object creation of type Box2 : Box2 [field box1, field elem2] : Elem |
|
||||
| B.cs:16:27:16:28 | access to local variable b1 : Box1 [field elem2] : Elem | B.cs:39:26:39:27 | b1 : Box1 [field elem2] : Elem | B.cs:39:16:39:19 | this [Return] : Box2 [field box1, field elem2] : Elem | B.cs:16:18:16:29 | object creation of type Box2 : Box2 [field box1, field elem2] : Elem |
|
||||
| D.cs:15:34:15:38 | access to parameter value : Object | D.cs:9:9:9:11 | value : Object | D.cs:9:9:9:11 | this [Return] : D [field trivialPropField] : Object | D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object |
|
||||
| D.cs:15:34:15:38 | access to parameter value : Object | D.cs:9:9:9:11 | value : Object | D.cs:9:9:9:11 | this [Return] : D [field trivialPropField] : Object | D.cs:15:15:15:18 | [post] this access : D [field trivialPropField] : Object |
|
||||
| D.cs:22:27:22:28 | access to parameter o2 : Object | D.cs:9:9:9:11 | value : Object | D.cs:9:9:9:11 | this [Return] : D [field trivialPropField] : Object | D.cs:22:9:22:11 | [post] access to local variable ret : D [field trivialPropField] : Object |
|
||||
| D.cs:22:27:22:28 | access to parameter o2 : Object | D.cs:9:9:9:11 | value : Object | D.cs:9:9:9:11 | this [Return] : D [field trivialPropField] : Object | D.cs:22:9:22:11 | [post] access to local variable ret : D [field trivialPropField] : Object |
|
||||
| D.cs:23:27:23:28 | access to parameter o3 : Object | D.cs:15:9:15:11 | value : Object | D.cs:15:9:15:11 | this [Return] : D [field trivialPropField] : Object | D.cs:23:9:23:11 | [post] access to local variable ret : D [field trivialPropField] : Object |
|
||||
| D.cs:23:27:23:28 | access to parameter o3 : Object | D.cs:15:9:15:11 | value : Object | D.cs:15:9:15:11 | this [Return] : D [field trivialPropField] : Object | D.cs:23:9:23:11 | [post] access to local variable ret : D [field trivialPropField] : Object |
|
||||
| D.cs:31:24:31:24 | access to local variable o : Object | D.cs:18:28:18:29 | o1 : Object | D.cs:24:16:24:18 | access to local variable ret : D [property AutoProp] : Object | D.cs:31:17:31:37 | call to method Create : D [property AutoProp] : Object |
|
||||
| D.cs:31:24:31:24 | access to local variable o : Object | D.cs:18:28:18:29 | o1 : Object | D.cs:24:16:24:18 | access to local variable ret : D [property AutoProp] : Object | D.cs:31:17:31:37 | call to method Create : D [property AutoProp] : Object |
|
||||
| D.cs:37:26:37:42 | call to method Source<Object> : Object | D.cs:18:39:18:40 | o2 : Object | D.cs:24:16:24:18 | access to local variable ret : D [field trivialPropField] : Object | D.cs:37:13:37:49 | call to method Create : D [field trivialPropField] : Object |
|
||||
@@ -2318,16 +2454,16 @@ subpaths
|
||||
| D.cs:47:14:47:14 | access to local variable d : D [field trivialPropField] : Object | D.cs:14:9:14:11 | this : D [field trivialPropField] : Object | D.cs:14:22:14:42 | access to field trivialPropField : Object | D.cs:47:14:47:26 | access to property ComplexProp |
|
||||
| E.cs:23:25:23:25 | access to local variable o : Object | E.cs:8:29:8:29 | o : Object | E.cs:12:16:12:18 | access to local variable ret : S [field Field] : Object | E.cs:23:17:23:26 | call to method CreateS : S [field Field] : Object |
|
||||
| E.cs:23:25:23:25 | access to local variable o : Object | E.cs:8:29:8:29 | o : Object | E.cs:12:16:12:18 | access to local variable ret : S [field Field] : Object | E.cs:23:17:23:26 | call to method CreateS : S [field Field] : Object |
|
||||
| E.cs:55:29:55:33 | access to local variable taint : Object | E.cs:43:46:43:46 | o : Object | E.cs:46:9:46:9 | [post] access to parameter s : RefS [field RefField] : Object | E.cs:55:23:55:26 | [post] access to local variable refs : RefS [field RefField] : Object |
|
||||
| E.cs:55:29:55:33 | access to local variable taint : Object | E.cs:43:46:43:46 | o : Object | E.cs:46:9:46:9 | [post] access to parameter s : RefS [field RefField] : Object | E.cs:55:23:55:26 | [post] access to local variable refs : RefS [field RefField] : Object |
|
||||
| E.cs:55:29:55:33 | access to local variable taint : Object | E.cs:43:46:43:46 | o : Object | E.cs:43:36:43:36 | s [Return] : RefS [field RefField] : Object | E.cs:55:23:55:26 | [post] access to local variable refs : RefS [field RefField] : Object |
|
||||
| E.cs:55:29:55:33 | access to local variable taint : Object | E.cs:43:46:43:46 | o : Object | E.cs:43:36:43:36 | s [Return] : RefS [field RefField] : Object | E.cs:55:23:55:26 | [post] access to local variable refs : RefS [field RefField] : Object |
|
||||
| F.cs:11:24:11:24 | access to local variable o : Object | F.cs:6:28:6:29 | o1 : Object | F.cs:6:46:6:81 | object creation of type F : F [field Field1] : Object | F.cs:11:17:11:31 | call to method Create : F [field Field1] : Object |
|
||||
| F.cs:11:24:11:24 | access to local variable o : Object | F.cs:6:28:6:29 | o1 : Object | F.cs:6:46:6:81 | object creation of type F : F [field Field1] : Object | F.cs:11:17:11:31 | call to method Create : F [field Field1] : Object |
|
||||
| F.cs:15:26:15:42 | call to method Source<Object> : Object | F.cs:6:39:6:40 | o2 : Object | F.cs:6:46:6:81 | object creation of type F : F [field Field2] : Object | F.cs:15:13:15:43 | call to method Create : F [field Field2] : Object |
|
||||
| F.cs:15:26:15:42 | call to method Source<Object> : Object | F.cs:6:39:6:40 | o2 : Object | F.cs:6:46:6:81 | object creation of type F : F [field Field2] : Object | F.cs:15:13:15:43 | call to method Create : F [field Field2] : Object |
|
||||
| G.cs:17:24:17:24 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | G.cs:64:39:64:42 | [post] this access : Box1 [field Elem] : Elem | G.cs:17:9:17:14 | [post] access to field Box1 : Box1 [field Elem] : Elem |
|
||||
| G.cs:17:24:17:24 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | G.cs:64:39:64:42 | [post] this access : Box1 [field Elem] : Elem | G.cs:17:9:17:14 | [post] access to field Box1 : Box1 [field Elem] : Elem |
|
||||
| G.cs:33:29:33:29 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | G.cs:64:39:64:42 | [post] this access : Box1 [field Elem] : Elem | G.cs:33:9:33:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem |
|
||||
| G.cs:33:29:33:29 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | G.cs:64:39:64:42 | [post] this access : Box1 [field Elem] : Elem | G.cs:33:9:33:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem |
|
||||
| G.cs:17:24:17:24 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | G.cs:64:21:64:27 | this [Return] : Box1 [field Elem] : Elem | G.cs:17:9:17:14 | [post] access to field Box1 : Box1 [field Elem] : Elem |
|
||||
| G.cs:17:24:17:24 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | G.cs:64:21:64:27 | this [Return] : Box1 [field Elem] : Elem | G.cs:17:9:17:14 | [post] access to field Box1 : Box1 [field Elem] : Elem |
|
||||
| G.cs:33:29:33:29 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | G.cs:64:21:64:27 | this [Return] : Box1 [field Elem] : Elem | G.cs:33:9:33:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem |
|
||||
| G.cs:33:29:33:29 | access to local variable e : Elem | G.cs:64:34:64:34 | e : Elem | G.cs:64:21:64:27 | this [Return] : Box1 [field Elem] : Elem | G.cs:33:9:33:19 | [post] call to method GetBox1 : Box1 [field Elem] : Elem |
|
||||
| G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | G.cs:71:21:71:27 | this : Box2 [field Box1, field Elem] : Elem | G.cs:71:34:71:37 | access to field Box1 : Box1 [field Elem] : Elem | G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem |
|
||||
| G.cs:39:14:39:15 | access to parameter b2 : Box2 [field Box1, field Elem] : Elem | G.cs:71:21:71:27 | this : Box2 [field Box1, field Elem] : Elem | G.cs:71:34:71:37 | access to field Box1 : Box1 [field Elem] : Elem | G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem |
|
||||
| G.cs:39:14:39:25 | call to method GetBox1 : Box1 [field Elem] : Elem | G.cs:63:21:63:27 | this : Box1 [field Elem] : Elem | G.cs:63:34:63:37 | access to field Elem : Elem | G.cs:39:14:39:35 | call to method GetElem |
|
||||
@@ -2336,14 +2472,14 @@ subpaths
|
||||
| H.cs:24:27:24:27 | access to local variable a : A [field FieldA] : Object | H.cs:13:15:13:15 | a : A [field FieldA] : Object | H.cs:17:16:17:18 | access to local variable ret : A [field FieldA] : Object | H.cs:24:21:24:28 | call to method Clone : A [field FieldA] : Object |
|
||||
| H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : Object | H.cs:44:17:44:28 | call to method Transform : B [field FieldB] : Object |
|
||||
| H.cs:44:27:44:27 | access to local variable a : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : Object | H.cs:44:17:44:28 | call to method Transform : B [field FieldB] : Object |
|
||||
| H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | H.cs:55:9:55:10 | [post] access to parameter b1 : B [field FieldB] : Object | H.cs:64:25:64:26 | [post] access to local variable b1 : B [field FieldB] : Object |
|
||||
| H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | H.cs:55:9:55:10 | [post] access to parameter b1 : B [field FieldB] : Object | H.cs:64:25:64:26 | [post] access to local variable b1 : B [field FieldB] : Object |
|
||||
| H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | H.cs:55:9:55:10 | [post] access to parameter b1 : B [field FieldB] : Object | H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object |
|
||||
| H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | H.cs:55:9:55:10 | [post] access to parameter b1 : B [field FieldB] : Object | H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object |
|
||||
| H.cs:88:20:88:36 | call to method Source<Object> : Object | H.cs:77:30:77:30 | o : Object | H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object |
|
||||
| H.cs:88:20:88:36 | call to method Source<Object> : Object | H.cs:77:30:77:30 | o : Object | H.cs:79:9:79:9 | [post] access to parameter a : A [field FieldA] : Object | H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object |
|
||||
| H.cs:88:20:88:36 | call to method Source<Object> : Object | H.cs:77:30:77:30 | o : Object | H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object | H.cs:88:39:88:40 | [post] access to local variable b1 : B [field FieldB] : Object |
|
||||
| H.cs:88:20:88:36 | call to method Source<Object> : Object | H.cs:77:30:77:30 | o : Object | H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object | H.cs:88:39:88:40 | [post] access to local variable b1 : B [field FieldB] : Object |
|
||||
| H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | H.cs:53:30:53:31 | b1 [Return] : B [field FieldB] : Object | H.cs:64:25:64:26 | [post] access to local variable b1 : B [field FieldB] : Object |
|
||||
| H.cs:64:22:64:22 | access to local variable a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | H.cs:53:30:53:31 | b1 [Return] : B [field FieldB] : Object | H.cs:64:25:64:26 | [post] access to local variable b1 : B [field FieldB] : Object |
|
||||
| H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | H.cs:53:30:53:31 | b1 [Return] : B [field FieldB] : Object | H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object |
|
||||
| H.cs:80:22:80:22 | access to parameter a : A [field FieldA] : Object | H.cs:53:25:53:25 | a : A [field FieldA] : Object | H.cs:53:30:53:31 | b1 [Return] : B [field FieldB] : Object | H.cs:80:25:80:26 | [post] access to parameter b1 : B [field FieldB] : Object |
|
||||
| H.cs:88:20:88:36 | call to method Source<Object> : Object | H.cs:77:30:77:30 | o : Object | H.cs:77:20:77:20 | a [Return] : A [field FieldA] : Object | H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object |
|
||||
| H.cs:88:20:88:36 | call to method Source<Object> : Object | H.cs:77:30:77:30 | o : Object | H.cs:77:20:77:20 | a [Return] : A [field FieldA] : Object | H.cs:88:17:88:17 | [post] access to local variable a : A [field FieldA] : Object |
|
||||
| H.cs:88:20:88:36 | call to method Source<Object> : Object | H.cs:77:30:77:30 | o : Object | H.cs:77:35:77:36 | b1 [Return] : B [field FieldB] : Object | H.cs:88:39:88:40 | [post] access to local variable b1 : B [field FieldB] : Object |
|
||||
| H.cs:88:20:88:36 | call to method Source<Object> : Object | H.cs:77:30:77:30 | o : Object | H.cs:77:35:77:36 | b1 [Return] : B [field FieldB] : Object | H.cs:88:39:88:40 | [post] access to local variable b1 : B [field FieldB] : Object |
|
||||
| H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : Object | H.cs:106:16:106:40 | call to method Transform : B [field FieldB] : Object |
|
||||
| H.cs:106:26:106:39 | (...) ... : A [field FieldA] : Object | H.cs:33:19:33:19 | a : A [field FieldA] : Object | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : Object | H.cs:106:16:106:40 | call to method Transform : B [field FieldB] : Object |
|
||||
| H.cs:113:31:113:31 | access to local variable a : A [field FieldA] : Object | H.cs:102:23:102:23 | a : A [field FieldA] : Object | H.cs:106:16:106:40 | call to method Transform : B [field FieldB] : Object | H.cs:113:17:113:32 | call to method TransformWrap : B [field FieldB] : Object |
|
||||
@@ -2356,16 +2492,16 @@ subpaths
|
||||
| H.cs:142:26:142:26 | access to local variable a : A [field FieldA] : A | H.cs:33:19:33:19 | a : A [field FieldA] : A | H.cs:37:16:37:16 | access to local variable b : B [field FieldB] : A | H.cs:142:16:142:27 | call to method Transform : B [field FieldB] : A |
|
||||
| H.cs:147:25:147:38 | call to method Source<A> : A | H.cs:138:27:138:27 | o : A | H.cs:142:16:142:34 | access to field FieldB : A | H.cs:147:17:147:39 | call to method Through : A |
|
||||
| H.cs:147:25:147:38 | call to method Source<A> : A | H.cs:138:27:138:27 | o : A | H.cs:142:16:142:34 | access to field FieldB : A | H.cs:147:17:147:39 | call to method Through : A |
|
||||
| H.cs:164:22:164:22 | access to local variable o : Object | H.cs:153:32:153:32 | o : Object | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA, field FieldB] : Object | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA, field FieldB] : Object |
|
||||
| H.cs:164:22:164:22 | access to local variable o : Object | H.cs:153:32:153:32 | o : Object | H.cs:157:9:157:9 | [post] access to parameter a : A [field FieldA, field FieldB] : Object | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA, field FieldB] : Object |
|
||||
| J.cs:22:34:22:34 | access to local variable o : Object | J.cs:6:40:6:44 | Prop1 : Object | J.cs:6:40:6:44 | Prop1 : Object | J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object |
|
||||
| J.cs:22:34:22:34 | access to local variable o : Object | J.cs:6:40:6:44 | Prop1 : Object | J.cs:6:40:6:44 | Prop1 : Object | J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object |
|
||||
| J.cs:42:35:42:35 | access to local variable o : Object | J.cs:8:42:8:46 | Prop1 : Object | J.cs:8:42:8:46 | Prop1 : Object | J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object |
|
||||
| J.cs:42:35:42:35 | access to local variable o : Object | J.cs:8:42:8:46 | Prop1 : Object | J.cs:8:42:8:46 | Prop1 : Object | J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object |
|
||||
| J.cs:62:29:62:29 | access to local variable o : Object | J.cs:14:26:14:30 | field : Object | J.cs:14:50:14:54 | [post] this access : Struct [field Field] : Object | J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object |
|
||||
| J.cs:62:29:62:29 | access to local variable o : Object | J.cs:14:26:14:30 | field : Object | J.cs:14:50:14:54 | [post] this access : Struct [field Field] : Object | J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object |
|
||||
| J.cs:80:35:80:35 | access to local variable o : Object | J.cs:14:40:14:43 | prop : Object | J.cs:14:57:14:60 | [post] this access : Struct [property Prop] : Object | J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object |
|
||||
| J.cs:80:35:80:35 | access to local variable o : Object | J.cs:14:40:14:43 | prop : Object | J.cs:14:57:14:60 | [post] this access : Struct [property Prop] : Object | J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object |
|
||||
| H.cs:164:22:164:22 | access to local variable o : Object | H.cs:153:32:153:32 | o : Object | H.cs:153:22:153:22 | a [Return] : A [field FieldA, field FieldB] : Object | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA, field FieldB] : Object |
|
||||
| H.cs:164:22:164:22 | access to local variable o : Object | H.cs:153:32:153:32 | o : Object | H.cs:153:22:153:22 | a [Return] : A [field FieldA, field FieldB] : Object | H.cs:164:19:164:19 | [post] access to local variable a : A [field FieldA, field FieldB] : Object |
|
||||
| J.cs:22:34:22:34 | access to local variable o : Object | J.cs:6:40:6:44 | Prop1 : Object | J.cs:6:21:6:31 | this [Return] : RecordClass [property Prop1] : Object | J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object |
|
||||
| J.cs:22:34:22:34 | access to local variable o : Object | J.cs:6:40:6:44 | Prop1 : Object | J.cs:6:21:6:31 | this [Return] : RecordClass [property Prop1] : Object | J.cs:22:18:22:41 | object creation of type RecordClass : RecordClass [property Prop1] : Object |
|
||||
| J.cs:42:35:42:35 | access to local variable o : Object | J.cs:8:42:8:46 | Prop1 : Object | J.cs:8:22:8:33 | this [Return] : RecordStruct [property Prop1] : Object | J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object |
|
||||
| J.cs:42:35:42:35 | access to local variable o : Object | J.cs:8:42:8:46 | Prop1 : Object | J.cs:8:22:8:33 | this [Return] : RecordStruct [property Prop1] : Object | J.cs:42:18:42:42 | object creation of type RecordStruct : RecordStruct [property Prop1] : Object |
|
||||
| J.cs:62:29:62:29 | access to local variable o : Object | J.cs:14:26:14:30 | field : Object | J.cs:14:12:14:17 | this [Return] : Struct [field Field] : Object | J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object |
|
||||
| J.cs:62:29:62:29 | access to local variable o : Object | J.cs:14:26:14:30 | field : Object | J.cs:14:12:14:17 | this [Return] : Struct [field Field] : Object | J.cs:62:18:62:36 | object creation of type Struct : Struct [field Field] : Object |
|
||||
| J.cs:80:35:80:35 | access to local variable o : Object | J.cs:14:40:14:43 | prop : Object | J.cs:14:12:14:17 | this [Return] : Struct [property Prop] : Object | J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object |
|
||||
| J.cs:80:35:80:35 | access to local variable o : Object | J.cs:14:40:14:43 | prop : Object | J.cs:14:12:14:17 | this [Return] : Struct [property Prop] : Object | J.cs:80:18:80:36 | object creation of type Struct : Struct [property Prop] : Object |
|
||||
#select
|
||||
| A.cs:7:14:7:16 | access to field c | A.cs:5:17:5:28 | call to method Source<C> : C | A.cs:7:14:7:16 | access to field c | $@ | A.cs:5:17:5:28 | call to method Source<C> : C | call to method Source<C> : C |
|
||||
| A.cs:7:14:7:16 | access to field c | A.cs:5:17:5:28 | call to method Source<C> : C | A.cs:7:14:7:16 | access to field c | $@ | A.cs:5:17:5:28 | call to method Source<C> : C | call to method Source<C> : C |
|
||||
|
||||
@@ -126,7 +126,8 @@ edges
|
||||
| Capture.cs:350:34:350:34 | a : (...) => ... [captured s] : String | Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured s] : String | provenance | |
|
||||
| Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured sink39] : String | provenance | |
|
||||
| Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured sink39] : String | provenance | |
|
||||
| Capture.cs:352:9:352:9 | [post] access to parameter a : (...) => ... [captured sink40] : String | Capture.cs:114:23:117:13 | [post] (...) => ... : (...) => ... [captured sink40] : String | provenance | |
|
||||
| Capture.cs:350:34:350:34 | a [Return] : (...) => ... [captured sink40] : String | Capture.cs:114:23:117:13 | [post] (...) => ... : (...) => ... [captured sink40] : String | provenance | |
|
||||
| Capture.cs:352:9:352:9 | [post] access to parameter a : (...) => ... [captured sink40] : String | Capture.cs:350:34:350:34 | a [Return] : (...) => ... [captured sink40] : String | provenance | |
|
||||
| Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured s] : String | Capture.cs:217:19:217:19 | access to parameter s | provenance | |
|
||||
| Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured sink39] : String | Capture.cs:55:27:58:17 | (...) => ... : (...) => ... [captured sink39] : String | provenance | |
|
||||
| Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured sink39] : String | Capture.cs:57:27:57:32 | access to parameter sink39 | provenance | |
|
||||
@@ -408,19 +409,20 @@ edges
|
||||
| GlobalDataFlow.cs:469:21:469:21 | s : String | GlobalDataFlow.cs:469:32:469:32 | access to parameter s | provenance | |
|
||||
| GlobalDataFlow.cs:470:15:470:17 | access to parameter arg : String | GlobalDataFlow.cs:469:21:469:21 | s : String | provenance | |
|
||||
| GlobalDataFlow.cs:473:28:473:41 | "taint source" : String | GlobalDataFlow.cs:466:53:466:55 | arg : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:490:25:490:26 | [post] access to local variable x1 : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:490:30:490:31 | [post] access to local variable x2 : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:497:31:497:32 | [post] access to local variable y1 : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:497:36:497:37 | [post] access to local variable y2 : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:497:42:497:43 | [post] access to local variable y3 : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:508:33:508:33 | [post] access to local variable x : SubSimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:515:20:515:20 | [post] access to parameter x : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:515:25:515:25 | [post] access to local variable y : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:527:20:527:20 | [post] access to local variable x : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:528:20:528:20 | [post] access to local variable y : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:529:18:529:18 | [post] access to local variable z : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:538:20:538:21 | [post] access to parameter sc : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:546:24:546:24 | [post] access to local variable x : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:490:25:490:26 | [post] access to local variable x1 : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:490:30:490:31 | [post] access to local variable x2 : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:497:31:497:32 | [post] access to local variable y1 : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:497:36:497:37 | [post] access to local variable y2 : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:497:42:497:43 | [post] access to local variable y3 : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:508:33:508:33 | [post] access to local variable x : SubSimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:515:20:515:20 | [post] access to parameter x : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:515:25:515:25 | [post] access to local variable y : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:527:20:527:20 | [post] access to local variable x : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:528:20:528:20 | [post] access to local variable y : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:529:18:529:18 | [post] access to local variable z : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:538:20:538:21 | [post] access to parameter sc : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:546:24:546:24 | [post] access to local variable x : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:20:483:33 | "taint source" : String | GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:490:25:490:26 | [post] access to local variable x1 : SimpleClass [field field] : String | GlobalDataFlow.cs:491:15:491:16 | access to local variable x1 : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:490:30:490:31 | [post] access to local variable x2 : SimpleClass [field field] : String | GlobalDataFlow.cs:492:15:492:16 | access to local variable x2 : SimpleClass [field field] : String | provenance | |
|
||||
@@ -626,6 +628,7 @@ nodes
|
||||
| Capture.cs:350:34:350:34 | a : (...) => ... [captured s] : String | semmle.label | a : (...) => ... [captured s] : String |
|
||||
| Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | semmle.label | a : (...) => ... [captured sink39] : String |
|
||||
| Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | semmle.label | a : (...) => ... [captured sink39] : String |
|
||||
| Capture.cs:350:34:350:34 | a [Return] : (...) => ... [captured sink40] : String | semmle.label | a [Return] : (...) => ... [captured sink40] : String |
|
||||
| Capture.cs:352:9:352:9 | [post] access to parameter a : (...) => ... [captured sink40] : String | semmle.label | [post] access to parameter a : (...) => ... [captured sink40] : String |
|
||||
| Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured s] : String | semmle.label | access to parameter a : (...) => ... [captured s] : String |
|
||||
| Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured sink39] : String | semmle.label | access to parameter a : (...) => ... [captured sink39] : String |
|
||||
@@ -861,6 +864,7 @@ nodes
|
||||
| GlobalDataFlow.cs:469:32:469:32 | access to parameter s | semmle.label | access to parameter s |
|
||||
| GlobalDataFlow.cs:470:15:470:17 | access to parameter arg : String | semmle.label | access to parameter arg : String |
|
||||
| GlobalDataFlow.cs:473:28:473:41 | "taint source" : String | semmle.label | "taint source" : String |
|
||||
| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | semmle.label | sc [Return] : SimpleClass [field field] : String |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | semmle.label | [post] access to parameter sc : SimpleClass [field field] : String |
|
||||
| GlobalDataFlow.cs:483:20:483:33 | "taint source" : String | semmle.label | "taint source" : String |
|
||||
| GlobalDataFlow.cs:490:25:490:26 | [post] access to local variable x1 : SimpleClass [field field] : String | semmle.label | [post] access to local variable x1 : SimpleClass [field field] : String |
|
||||
|
||||
@@ -126,7 +126,8 @@ edges
|
||||
| Capture.cs:350:34:350:34 | a : (...) => ... [captured s] : String | Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured s] : String | provenance | |
|
||||
| Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured sink39] : String | provenance | |
|
||||
| Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured sink39] : String | provenance | |
|
||||
| Capture.cs:352:9:352:9 | [post] access to parameter a : (...) => ... [captured sink40] : String | Capture.cs:114:23:117:13 | [post] (...) => ... : (...) => ... [captured sink40] : String | provenance | |
|
||||
| Capture.cs:350:34:350:34 | a [Return] : (...) => ... [captured sink40] : String | Capture.cs:114:23:117:13 | [post] (...) => ... : (...) => ... [captured sink40] : String | provenance | |
|
||||
| Capture.cs:352:9:352:9 | [post] access to parameter a : (...) => ... [captured sink40] : String | Capture.cs:350:34:350:34 | a [Return] : (...) => ... [captured sink40] : String | provenance | |
|
||||
| Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured s] : String | Capture.cs:217:19:217:19 | access to parameter s | provenance | |
|
||||
| Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured sink39] : String | Capture.cs:55:27:58:17 | (...) => ... : (...) => ... [captured sink39] : String | provenance | |
|
||||
| Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured sink39] : String | Capture.cs:57:27:57:32 | access to parameter sink39 | provenance | |
|
||||
@@ -430,19 +431,20 @@ edges
|
||||
| GlobalDataFlow.cs:469:21:469:21 | s : String | GlobalDataFlow.cs:469:32:469:32 | access to parameter s | provenance | |
|
||||
| GlobalDataFlow.cs:470:15:470:17 | access to parameter arg : String | GlobalDataFlow.cs:469:21:469:21 | s : String | provenance | |
|
||||
| GlobalDataFlow.cs:473:28:473:41 | "taint source" : String | GlobalDataFlow.cs:466:53:466:55 | arg : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:490:25:490:26 | [post] access to local variable x1 : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:490:30:490:31 | [post] access to local variable x2 : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:497:31:497:32 | [post] access to local variable y1 : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:497:36:497:37 | [post] access to local variable y2 : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:497:42:497:43 | [post] access to local variable y3 : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:508:33:508:33 | [post] access to local variable x : SubSimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:515:20:515:20 | [post] access to parameter x : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:515:25:515:25 | [post] access to local variable y : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:527:20:527:20 | [post] access to local variable x : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:528:20:528:20 | [post] access to local variable y : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:529:18:529:18 | [post] access to local variable z : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:538:20:538:21 | [post] access to parameter sc : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:546:24:546:24 | [post] access to local variable x : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:490:25:490:26 | [post] access to local variable x1 : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:490:30:490:31 | [post] access to local variable x2 : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:497:31:497:32 | [post] access to local variable y1 : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:497:36:497:37 | [post] access to local variable y2 : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:497:42:497:43 | [post] access to local variable y3 : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:508:33:508:33 | [post] access to local variable x : SubSimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:515:20:515:20 | [post] access to parameter x : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:515:25:515:25 | [post] access to local variable y : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:527:20:527:20 | [post] access to local variable x : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:528:20:528:20 | [post] access to local variable y : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:529:18:529:18 | [post] access to local variable z : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:538:20:538:21 | [post] access to parameter sc : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | GlobalDataFlow.cs:546:24:546:24 | [post] access to local variable x : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:483:20:483:33 | "taint source" : String | GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:490:25:490:26 | [post] access to local variable x1 : SimpleClass [field field] : String | GlobalDataFlow.cs:491:15:491:16 | access to local variable x1 : SimpleClass [field field] : String | provenance | |
|
||||
| GlobalDataFlow.cs:490:30:490:31 | [post] access to local variable x2 : SimpleClass [field field] : String | GlobalDataFlow.cs:492:15:492:16 | access to local variable x2 : SimpleClass [field field] : String | provenance | |
|
||||
@@ -475,8 +477,10 @@ edges
|
||||
| GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | GlobalDataFlow.cs:81:79:81:79 | x : String | provenance | |
|
||||
| GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | GlobalDataFlow.cs:558:44:558:47 | delegate call : String | provenance | |
|
||||
| GlobalDataFlowStringBuilder.cs:17:64:17:64 | s : String | GlobalDataFlowStringBuilder.cs:19:19:19:19 | access to parameter s : String | provenance | |
|
||||
| GlobalDataFlowStringBuilder.cs:19:9:19:10 | [post] access to parameter sb : StringBuilder | GlobalDataFlowStringBuilder.cs:17:53:17:54 | sb [Return] : StringBuilder | provenance | |
|
||||
| GlobalDataFlowStringBuilder.cs:19:19:19:19 | access to parameter s : String | GlobalDataFlowStringBuilder.cs:19:9:19:10 | [post] access to parameter sb : StringBuilder | provenance | MaD:1901 |
|
||||
| GlobalDataFlowStringBuilder.cs:22:76:22:76 | s : String | GlobalDataFlowStringBuilder.cs:24:19:24:26 | (...) ... : AppendInterpolatedStringHandler | provenance | |
|
||||
| GlobalDataFlowStringBuilder.cs:24:9:24:10 | [post] access to parameter sb : StringBuilder | GlobalDataFlowStringBuilder.cs:22:65:22:66 | sb [Return] : StringBuilder | provenance | |
|
||||
| GlobalDataFlowStringBuilder.cs:24:19:24:26 | (...) ... : AppendInterpolatedStringHandler | GlobalDataFlowStringBuilder.cs:24:9:24:10 | [post] access to parameter sb : StringBuilder | provenance | MaD:1913 |
|
||||
| GlobalDataFlowStringBuilder.cs:30:31:30:32 | [post] access to local variable sb : StringBuilder | GlobalDataFlowStringBuilder.cs:31:21:31:22 | access to local variable sb : StringBuilder | provenance | |
|
||||
| GlobalDataFlowStringBuilder.cs:30:31:30:32 | [post] access to local variable sb : StringBuilder | GlobalDataFlowStringBuilder.cs:35:20:35:21 | access to local variable sb : StringBuilder | provenance | |
|
||||
@@ -676,6 +680,7 @@ nodes
|
||||
| Capture.cs:350:34:350:34 | a : (...) => ... [captured s] : String | semmle.label | a : (...) => ... [captured s] : String |
|
||||
| Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | semmle.label | a : (...) => ... [captured sink39] : String |
|
||||
| Capture.cs:350:34:350:34 | a : (...) => ... [captured sink39] : String | semmle.label | a : (...) => ... [captured sink39] : String |
|
||||
| Capture.cs:350:34:350:34 | a [Return] : (...) => ... [captured sink40] : String | semmle.label | a [Return] : (...) => ... [captured sink40] : String |
|
||||
| Capture.cs:352:9:352:9 | [post] access to parameter a : (...) => ... [captured sink40] : String | semmle.label | [post] access to parameter a : (...) => ... [captured sink40] : String |
|
||||
| Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured s] : String | semmle.label | access to parameter a : (...) => ... [captured s] : String |
|
||||
| Capture.cs:352:9:352:9 | access to parameter a : (...) => ... [captured sink39] : String | semmle.label | access to parameter a : (...) => ... [captured sink39] : String |
|
||||
@@ -934,6 +939,7 @@ nodes
|
||||
| GlobalDataFlow.cs:469:32:469:32 | access to parameter s | semmle.label | access to parameter s |
|
||||
| GlobalDataFlow.cs:470:15:470:17 | access to parameter arg : String | semmle.label | access to parameter arg : String |
|
||||
| GlobalDataFlow.cs:473:28:473:41 | "taint source" : String | semmle.label | "taint source" : String |
|
||||
| GlobalDataFlow.cs:481:41:481:42 | sc [Return] : SimpleClass [field field] : String | semmle.label | sc [Return] : SimpleClass [field field] : String |
|
||||
| GlobalDataFlow.cs:483:9:483:10 | [post] access to parameter sc : SimpleClass [field field] : String | semmle.label | [post] access to parameter sc : SimpleClass [field field] : String |
|
||||
| GlobalDataFlow.cs:483:20:483:33 | "taint source" : String | semmle.label | "taint source" : String |
|
||||
| GlobalDataFlow.cs:490:25:490:26 | [post] access to local variable x1 : SimpleClass [field field] : String | semmle.label | [post] access to local variable x1 : SimpleClass [field field] : String |
|
||||
@@ -979,9 +985,11 @@ nodes
|
||||
| GlobalDataFlow.cs:556:27:556:27 | access to parameter e : null [element] : String | semmle.label | access to parameter e : null [element] : String |
|
||||
| GlobalDataFlow.cs:558:44:558:47 | delegate call : String | semmle.label | delegate call : String |
|
||||
| GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | semmle.label | access to local variable x : String |
|
||||
| GlobalDataFlowStringBuilder.cs:17:53:17:54 | sb [Return] : StringBuilder | semmle.label | sb [Return] : StringBuilder |
|
||||
| GlobalDataFlowStringBuilder.cs:17:64:17:64 | s : String | semmle.label | s : String |
|
||||
| GlobalDataFlowStringBuilder.cs:19:9:19:10 | [post] access to parameter sb : StringBuilder | semmle.label | [post] access to parameter sb : StringBuilder |
|
||||
| GlobalDataFlowStringBuilder.cs:19:19:19:19 | access to parameter s : String | semmle.label | access to parameter s : String |
|
||||
| GlobalDataFlowStringBuilder.cs:22:65:22:66 | sb [Return] : StringBuilder | semmle.label | sb [Return] : StringBuilder |
|
||||
| GlobalDataFlowStringBuilder.cs:22:76:22:76 | s : String | semmle.label | s : String |
|
||||
| GlobalDataFlowStringBuilder.cs:24:9:24:10 | [post] access to parameter sb : StringBuilder | semmle.label | [post] access to parameter sb : StringBuilder |
|
||||
| GlobalDataFlowStringBuilder.cs:24:19:24:26 | (...) ... : AppendInterpolatedStringHandler | semmle.label | (...) ... : AppendInterpolatedStringHandler |
|
||||
@@ -1077,8 +1085,8 @@ subpaths
|
||||
| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:298:26:298:26 | x : String | GlobalDataFlow.cs:301:16:301:41 | ... ? ... : ... : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String |
|
||||
| GlobalDataFlow.cs:389:18:389:18 | access to parameter x : String | GlobalDataFlow.cs:300:27:300:28 | x0 : String | GlobalDataFlow.cs:300:33:300:34 | access to parameter x0 : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String |
|
||||
| GlobalDataFlow.cs:558:46:558:46 | access to local variable x : String | GlobalDataFlow.cs:81:79:81:79 | x : String | GlobalDataFlow.cs:81:84:81:84 | access to parameter x : String | GlobalDataFlow.cs:558:44:558:47 | delegate call : String |
|
||||
| GlobalDataFlowStringBuilder.cs:30:35:30:48 | "taint source" : String | GlobalDataFlowStringBuilder.cs:17:64:17:64 | s : String | GlobalDataFlowStringBuilder.cs:19:9:19:10 | [post] access to parameter sb : StringBuilder | GlobalDataFlowStringBuilder.cs:30:31:30:32 | [post] access to local variable sb : StringBuilder |
|
||||
| GlobalDataFlowStringBuilder.cs:48:47:48:60 | "taint source" : String | GlobalDataFlowStringBuilder.cs:22:76:22:76 | s : String | GlobalDataFlowStringBuilder.cs:24:9:24:10 | [post] access to parameter sb : StringBuilder | GlobalDataFlowStringBuilder.cs:48:43:48:44 | [post] access to local variable sb : StringBuilder |
|
||||
| GlobalDataFlowStringBuilder.cs:30:35:30:48 | "taint source" : String | GlobalDataFlowStringBuilder.cs:17:64:17:64 | s : String | GlobalDataFlowStringBuilder.cs:17:53:17:54 | sb [Return] : StringBuilder | GlobalDataFlowStringBuilder.cs:30:31:30:32 | [post] access to local variable sb : StringBuilder |
|
||||
| GlobalDataFlowStringBuilder.cs:48:47:48:60 | "taint source" : String | GlobalDataFlowStringBuilder.cs:22:76:22:76 | s : String | GlobalDataFlowStringBuilder.cs:22:65:22:66 | sb [Return] : StringBuilder | GlobalDataFlowStringBuilder.cs:48:43:48:44 | [post] access to local variable sb : StringBuilder |
|
||||
| Splitting.cs:8:24:8:30 | [b (line 3): false] access to parameter tainted : String | Splitting.cs:16:26:16:26 | x : String | Splitting.cs:16:32:16:32 | access to parameter x : String | Splitting.cs:8:17:8:31 | [b (line 3): false] call to method Return<String> : String |
|
||||
| Splitting.cs:8:24:8:30 | [b (line 3): true] access to parameter tainted : String | Splitting.cs:16:26:16:26 | x : String | Splitting.cs:16:32:16:32 | access to parameter x : String | Splitting.cs:8:17:8:31 | [b (line 3): true] call to method Return<String> : String |
|
||||
| Splitting.cs:20:29:20:29 | access to parameter s : String | Splitting.cs:16:26:16:26 | x : String | Splitting.cs:16:32:16:32 | access to parameter x : String | Splitting.cs:20:22:20:30 | call to method Return<String> : String |
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -4,15 +4,15 @@ import semmle.code.csharp.dataflow.internal.ExternalFlow
|
||||
final private class NeutralCallableFinal = NeutralCallable;
|
||||
|
||||
class RelevantNeutralCallable extends NeutralCallableFinal {
|
||||
final string getCallableCsv() { result = asPartialNeutralModel(this) }
|
||||
final string getCallableCsv() { result = getSignature(this) }
|
||||
}
|
||||
|
||||
class RelevantSourceCallable extends SourceCallable {
|
||||
string getCallableCsv() { result = asPartialModel(this) }
|
||||
string getCallableCsv() { result = getSignature(this) }
|
||||
}
|
||||
|
||||
class RelevantSinkCallable extends SinkCallable {
|
||||
string getCallableCsv() { result = asPartialModel(this) }
|
||||
string getCallableCsv() { result = getSignature(this) }
|
||||
}
|
||||
|
||||
import TestSummaryOutput<IncludeSummarizedCallable>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -152,6 +152,8 @@ edges
|
||||
| Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple<String,ValueTuple<Int32,String>,Int32> [field Item1] : String | Tuples.cs:89:18:89:18 | access to local variable p | provenance | |
|
||||
| Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple<String,ValueTuple<Int32,String>,Int32> [field Item2, field Item2] : String | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple<Int32,String> [field Item2] : String | provenance | |
|
||||
| Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple<String,ValueTuple<Int32,String>,Int32> [field Item2, field Item2] : String | Tuples.cs:87:18:87:35 | (..., ...) : ValueTuple<Int32,String> [field Item2] : String | provenance | |
|
||||
| Tuples.cs:95:22:95:22 | i : String | Tuples.cs:95:12:95:13 | this [Return] : R1 [property i] : String | provenance | |
|
||||
| Tuples.cs:95:22:95:22 | i : String | Tuples.cs:95:12:95:13 | this [Return] : R1 [property i] : String | provenance | |
|
||||
| Tuples.cs:99:13:99:13 | access to local variable o : String | Tuples.cs:100:24:100:24 | access to local variable o : String | provenance | |
|
||||
| Tuples.cs:99:13:99:13 | access to local variable o : String | Tuples.cs:100:24:100:24 | access to local variable o : String | provenance | |
|
||||
| Tuples.cs:99:17:99:33 | call to method Source<String> : String | Tuples.cs:99:13:99:13 | access to local variable o : String | provenance | |
|
||||
@@ -379,6 +381,8 @@ nodes
|
||||
| Tuples.cs:89:18:89:18 | access to local variable p | semmle.label | access to local variable p |
|
||||
| Tuples.cs:90:18:90:18 | access to local variable r | semmle.label | access to local variable r |
|
||||
| Tuples.cs:90:18:90:18 | access to local variable r | semmle.label | access to local variable r |
|
||||
| Tuples.cs:95:12:95:13 | this [Return] : R1 [property i] : String | semmle.label | this [Return] : R1 [property i] : String |
|
||||
| Tuples.cs:95:12:95:13 | this [Return] : R1 [property i] : String | semmle.label | this [Return] : R1 [property i] : String |
|
||||
| Tuples.cs:95:22:95:22 | i : String | semmle.label | i : String |
|
||||
| Tuples.cs:95:22:95:22 | i : String | semmle.label | i : String |
|
||||
| Tuples.cs:99:13:99:13 | access to local variable o : String | semmle.label | access to local variable o : String |
|
||||
@@ -436,8 +440,8 @@ nodes
|
||||
| Tuples.cs:134:14:134:15 | access to local variable y4 | semmle.label | access to local variable y4 |
|
||||
| Tuples.cs:134:14:134:15 | access to local variable y4 | semmle.label | access to local variable y4 |
|
||||
subpaths
|
||||
| Tuples.cs:100:24:100:24 | access to local variable o : String | Tuples.cs:95:22:95:22 | i : String | Tuples.cs:95:22:95:22 | i : String | Tuples.cs:100:17:100:28 | object creation of type R1 : R1 [property i] : String |
|
||||
| Tuples.cs:100:24:100:24 | access to local variable o : String | Tuples.cs:95:22:95:22 | i : String | Tuples.cs:95:22:95:22 | i : String | Tuples.cs:100:17:100:28 | object creation of type R1 : R1 [property i] : String |
|
||||
| Tuples.cs:100:24:100:24 | access to local variable o : String | Tuples.cs:95:22:95:22 | i : String | Tuples.cs:95:12:95:13 | this [Return] : R1 [property i] : String | Tuples.cs:100:17:100:28 | object creation of type R1 : R1 [property i] : String |
|
||||
| Tuples.cs:100:24:100:24 | access to local variable o : String | Tuples.cs:95:22:95:22 | i : String | Tuples.cs:95:12:95:13 | this [Return] : R1 [property i] : String | Tuples.cs:100:17:100:28 | object creation of type R1 : R1 [property i] : String |
|
||||
#select
|
||||
| Tuples.cs:12:14:12:14 | access to local variable a | Tuples.cs:7:18:7:34 | call to method Source<Object> : Object | Tuples.cs:12:14:12:14 | access to local variable a | $@ | Tuples.cs:7:18:7:34 | call to method Source<Object> : Object | call to method Source<Object> : Object |
|
||||
| Tuples.cs:12:14:12:14 | access to local variable a | Tuples.cs:7:18:7:34 | call to method Source<Object> : Object | Tuples.cs:12:14:12:14 | access to local variable a | $@ | Tuples.cs:7:18:7:34 | call to method Source<Object> : Object | call to method Source<Object> : Object |
|
||||
|
||||
@@ -1,175 +1,95 @@
|
||||
summary
|
||||
| EFCoreTests;MyContext;false;get_Addresses;();;SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Id]];ReturnValue.Element.Property[EFCoreTests.Address.Id];value;manual |
|
||||
| EFCoreTests;MyContext;false;get_Addresses;();;SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Street]];ReturnValue.Element.Property[EFCoreTests.Address.Street];value;manual |
|
||||
| EFCoreTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.AddressId]];ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.AddressId];value;manual |
|
||||
| EFCoreTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id]];ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];value;manual |
|
||||
| EFCoreTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street]];ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];value;manual |
|
||||
| EFCoreTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Id]];ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Id];value;manual |
|
||||
| EFCoreTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.PersonId]];ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.PersonId];value;manual |
|
||||
| EFCoreTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id]];ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];value;manual |
|
||||
| EFCoreTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name]];ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];value;manual |
|
||||
| EFCoreTests;MyContext;false;get_Persons;();;SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id]];ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];value;manual |
|
||||
| EFCoreTests;MyContext;false;get_Persons;();;SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street]];ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];value;manual |
|
||||
| EFCoreTests;MyContext;false;get_Persons;();;SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Id]];ReturnValue.Element.Property[EFCoreTests.Person.Id];value;manual |
|
||||
| EFCoreTests;MyContext;false;get_Persons;();;SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Name]];ReturnValue.Element.Property[EFCoreTests.Person.Name];value;manual |
|
||||
| EFTests;MyContext;false;get_Addresses;();;SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Id]];ReturnValue.Element.Property[EFTests.Address.Id];value;manual |
|
||||
| EFTests;MyContext;false;get_Addresses;();;SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Street]];ReturnValue.Element.Property[EFTests.Address.Street];value;manual |
|
||||
| EFTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.AddressId]];ReturnValue.Element.Property[EFTests.PersonAddressMap.AddressId];value;manual |
|
||||
| EFTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id]];ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];value;manual |
|
||||
| EFTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street]];ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];value;manual |
|
||||
| EFTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Id]];ReturnValue.Element.Property[EFTests.PersonAddressMap.Id];value;manual |
|
||||
| EFTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.PersonId]];ReturnValue.Element.Property[EFTests.PersonAddressMap.PersonId];value;manual |
|
||||
| EFTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id]];ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];value;manual |
|
||||
| EFTests;MyContext;false;get_PersonAddresses;();;SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name]];ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];value;manual |
|
||||
| EFTests;MyContext;false;get_Persons;();;SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id]];ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];value;manual |
|
||||
| EFTests;MyContext;false;get_Persons;();;SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street]];ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];value;manual |
|
||||
| EFTests;MyContext;false;get_Persons;();;SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Id]];ReturnValue.Element.Property[EFTests.Person.Id];value;manual |
|
||||
| EFTests;MyContext;false;get_Persons;();;SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Name]];ReturnValue.Element.Property[EFTests.Person.Name];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Id]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Street]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.AddressId];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.AddressId]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Id]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Street]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Id]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.PersonId];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.PersonId]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Id]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Name]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Id]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Street]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Id]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChanges;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Name]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Id]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Street]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.AddressId];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.AddressId]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Id]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Street]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Id]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.PersonId];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.PersonId]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Id]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Name]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Id]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Addresses#ReturnValue.Element.Property[EFCoreTests.Address.Street]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Id]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];SyntheticGlobal[EFCoreTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name]];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];SyntheticGlobal[EFCoreTests.MyContext.Persons#ReturnValue.Element.Property[EFCoreTests.Person.Name]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Street]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.AddressId];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.AddressId]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Street]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.PersonId];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.PersonId]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Name]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Street]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChanges;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Name]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Street]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.AddressId];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.AddressId]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Street]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.PersonId];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.PersonId]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Name]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Street]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;();;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Name]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Street]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.AddressId];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.AddressId]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Street]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.PersonId];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.PersonId]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Name]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Addresses#ReturnValue.Element.Property[EFTests.Address.Street]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Id]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.PersonAddresses#ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name]];value;manual |
|
||||
| System.Data.Entity;DbContext;false;SaveChangesAsync;(System.Threading.CancellationToken);;Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];SyntheticGlobal[EFTests.MyContext.Persons#ReturnValue.Element.Property[EFTests.Person.Name]];value;manual |
|
||||
| EFCoreTests;MyContext;get_Addresses;();SyntheticGlobal[EFCoreTests.Address.Id];ReturnValue.Element.Property[EFCoreTests.Address.Id];value;manual |
|
||||
| EFCoreTests;MyContext;get_Addresses;();SyntheticGlobal[EFCoreTests.Address.Street];ReturnValue.Element.Property[EFCoreTests.Address.Street];value;manual |
|
||||
| EFCoreTests;MyContext;get_PersonAddresses;();SyntheticGlobal[EFCoreTests.Address.Id];ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];value;manual |
|
||||
| EFCoreTests;MyContext;get_PersonAddresses;();SyntheticGlobal[EFCoreTests.Address.Street];ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];value;manual |
|
||||
| EFCoreTests;MyContext;get_PersonAddresses;();SyntheticGlobal[EFCoreTests.Person.Id];ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];value;manual |
|
||||
| EFCoreTests;MyContext;get_PersonAddresses;();SyntheticGlobal[EFCoreTests.Person.Name];ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];value;manual |
|
||||
| EFCoreTests;MyContext;get_PersonAddresses;();SyntheticGlobal[EFCoreTests.PersonAddressMap.AddressId];ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.AddressId];value;manual |
|
||||
| EFCoreTests;MyContext;get_PersonAddresses;();SyntheticGlobal[EFCoreTests.PersonAddressMap.Id];ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.Id];value;manual |
|
||||
| EFCoreTests;MyContext;get_PersonAddresses;();SyntheticGlobal[EFCoreTests.PersonAddressMap.PersonId];ReturnValue.Element.Property[EFCoreTests.PersonAddressMap.PersonId];value;manual |
|
||||
| EFCoreTests;MyContext;get_Persons;();SyntheticGlobal[EFCoreTests.Address.Id];ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];value;manual |
|
||||
| EFCoreTests;MyContext;get_Persons;();SyntheticGlobal[EFCoreTests.Address.Street];ReturnValue.Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];value;manual |
|
||||
| EFCoreTests;MyContext;get_Persons;();SyntheticGlobal[EFCoreTests.Person.Id];ReturnValue.Element.Property[EFCoreTests.Person.Id];value;manual |
|
||||
| EFCoreTests;MyContext;get_Persons;();SyntheticGlobal[EFCoreTests.Person.Name];ReturnValue.Element.Property[EFCoreTests.Person.Name];value;manual |
|
||||
| EFTests;MyContext;get_Addresses;();SyntheticGlobal[EFTests.Address.Id];ReturnValue.Element.Property[EFTests.Address.Id];value;manual |
|
||||
| EFTests;MyContext;get_Addresses;();SyntheticGlobal[EFTests.Address.Street];ReturnValue.Element.Property[EFTests.Address.Street];value;manual |
|
||||
| EFTests;MyContext;get_PersonAddresses;();SyntheticGlobal[EFTests.Address.Id];ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];value;manual |
|
||||
| EFTests;MyContext;get_PersonAddresses;();SyntheticGlobal[EFTests.Address.Street];ReturnValue.Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];value;manual |
|
||||
| EFTests;MyContext;get_PersonAddresses;();SyntheticGlobal[EFTests.Person.Id];ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];value;manual |
|
||||
| EFTests;MyContext;get_PersonAddresses;();SyntheticGlobal[EFTests.Person.Name];ReturnValue.Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];value;manual |
|
||||
| EFTests;MyContext;get_PersonAddresses;();SyntheticGlobal[EFTests.PersonAddressMap.AddressId];ReturnValue.Element.Property[EFTests.PersonAddressMap.AddressId];value;manual |
|
||||
| EFTests;MyContext;get_PersonAddresses;();SyntheticGlobal[EFTests.PersonAddressMap.Id];ReturnValue.Element.Property[EFTests.PersonAddressMap.Id];value;manual |
|
||||
| EFTests;MyContext;get_PersonAddresses;();SyntheticGlobal[EFTests.PersonAddressMap.PersonId];ReturnValue.Element.Property[EFTests.PersonAddressMap.PersonId];value;manual |
|
||||
| EFTests;MyContext;get_Persons;();SyntheticGlobal[EFTests.Address.Id];ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];value;manual |
|
||||
| EFTests;MyContext;get_Persons;();SyntheticGlobal[EFTests.Address.Street];ReturnValue.Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];value;manual |
|
||||
| EFTests;MyContext;get_Persons;();SyntheticGlobal[EFTests.Person.Id];ReturnValue.Element.Property[EFTests.Person.Id];value;manual |
|
||||
| EFTests;MyContext;get_Persons;();SyntheticGlobal[EFTests.Person.Name];ReturnValue.Element.Property[EFTests.Person.Name];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;SaveChanges;();Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.Address.Id];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;SaveChanges;();Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.Address.Street];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;SaveChanges;();Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.AddressId];SyntheticGlobal[EFCoreTests.PersonAddressMap.AddressId];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;SaveChanges;();Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.Address.Id];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;SaveChanges;();Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.Address.Street];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;SaveChanges;();Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Id];SyntheticGlobal[EFCoreTests.PersonAddressMap.Id];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;SaveChanges;();Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.PersonId];SyntheticGlobal[EFCoreTests.PersonAddressMap.PersonId];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;SaveChanges;();Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];SyntheticGlobal[EFCoreTests.Person.Id];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;SaveChanges;();Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];SyntheticGlobal[EFCoreTests.Person.Name];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;SaveChanges;();Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.Address.Id];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;SaveChanges;();Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.Address.Street];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;SaveChanges;();Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];SyntheticGlobal[EFCoreTests.Person.Id];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;SaveChanges;();Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];SyntheticGlobal[EFCoreTests.Person.Name];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;SaveChangesAsync;();Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.Address.Id];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;SaveChangesAsync;();Argument[this].Property[EFCoreTests.MyContext.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.Address.Street];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;SaveChangesAsync;();Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.AddressId];SyntheticGlobal[EFCoreTests.PersonAddressMap.AddressId];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;SaveChangesAsync;();Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.Address.Id];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;SaveChangesAsync;();Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Address].Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.Address.Street];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;SaveChangesAsync;();Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Id];SyntheticGlobal[EFCoreTests.PersonAddressMap.Id];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;SaveChangesAsync;();Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.PersonId];SyntheticGlobal[EFCoreTests.PersonAddressMap.PersonId];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;SaveChangesAsync;();Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Id];SyntheticGlobal[EFCoreTests.Person.Id];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;SaveChangesAsync;();Argument[this].Property[EFCoreTests.MyContext.PersonAddresses].Element.Property[EFCoreTests.PersonAddressMap.Person].Property[EFCoreTests.Person.Name];SyntheticGlobal[EFCoreTests.Person.Name];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;SaveChangesAsync;();Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Id];SyntheticGlobal[EFCoreTests.Address.Id];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;SaveChangesAsync;();Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Addresses].Element.Property[EFCoreTests.Address.Street];SyntheticGlobal[EFCoreTests.Address.Street];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;SaveChangesAsync;();Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Id];SyntheticGlobal[EFCoreTests.Person.Id];value;manual |
|
||||
| Microsoft.EntityFrameworkCore;DbContext;SaveChangesAsync;();Argument[this].Property[EFCoreTests.MyContext.Persons].Element.Property[EFCoreTests.Person.Name];SyntheticGlobal[EFCoreTests.Person.Name];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChanges;();Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.Address.Id];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChanges;();Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.Address.Street];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChanges;();Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.AddressId];SyntheticGlobal[EFTests.PersonAddressMap.AddressId];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChanges;();Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];SyntheticGlobal[EFTests.Address.Id];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChanges;();Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];SyntheticGlobal[EFTests.Address.Street];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChanges;();Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Id];SyntheticGlobal[EFTests.PersonAddressMap.Id];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChanges;();Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.PersonId];SyntheticGlobal[EFTests.PersonAddressMap.PersonId];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChanges;();Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];SyntheticGlobal[EFTests.Person.Id];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChanges;();Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];SyntheticGlobal[EFTests.Person.Name];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChanges;();Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.Address.Id];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChanges;();Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.Address.Street];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChanges;();Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];SyntheticGlobal[EFTests.Person.Id];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChanges;();Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];SyntheticGlobal[EFTests.Person.Name];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChangesAsync;();Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.Address.Id];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChangesAsync;();Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.Address.Street];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChangesAsync;();Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.AddressId];SyntheticGlobal[EFTests.PersonAddressMap.AddressId];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChangesAsync;();Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];SyntheticGlobal[EFTests.Address.Id];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChangesAsync;();Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];SyntheticGlobal[EFTests.Address.Street];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChangesAsync;();Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Id];SyntheticGlobal[EFTests.PersonAddressMap.Id];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChangesAsync;();Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.PersonId];SyntheticGlobal[EFTests.PersonAddressMap.PersonId];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChangesAsync;();Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];SyntheticGlobal[EFTests.Person.Id];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChangesAsync;();Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];SyntheticGlobal[EFTests.Person.Name];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChangesAsync;();Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.Address.Id];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChangesAsync;();Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.Address.Street];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChangesAsync;();Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];SyntheticGlobal[EFTests.Person.Id];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChangesAsync;();Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];SyntheticGlobal[EFTests.Person.Name];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChangesAsync;(System.Threading.CancellationToken);Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.Address.Id];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChangesAsync;(System.Threading.CancellationToken);Argument[this].Property[EFTests.MyContext.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.Address.Street];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChangesAsync;(System.Threading.CancellationToken);Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.AddressId];SyntheticGlobal[EFTests.PersonAddressMap.AddressId];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChangesAsync;(System.Threading.CancellationToken);Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Id];SyntheticGlobal[EFTests.Address.Id];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChangesAsync;(System.Threading.CancellationToken);Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Address].Property[EFTests.Address.Street];SyntheticGlobal[EFTests.Address.Street];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChangesAsync;(System.Threading.CancellationToken);Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Id];SyntheticGlobal[EFTests.PersonAddressMap.Id];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChangesAsync;(System.Threading.CancellationToken);Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.PersonId];SyntheticGlobal[EFTests.PersonAddressMap.PersonId];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChangesAsync;(System.Threading.CancellationToken);Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Id];SyntheticGlobal[EFTests.Person.Id];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChangesAsync;(System.Threading.CancellationToken);Argument[this].Property[EFTests.MyContext.PersonAddresses].Element.Property[EFTests.PersonAddressMap.Person].Property[EFTests.Person.Name];SyntheticGlobal[EFTests.Person.Name];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChangesAsync;(System.Threading.CancellationToken);Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Id];SyntheticGlobal[EFTests.Address.Id];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChangesAsync;(System.Threading.CancellationToken);Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Addresses].Element.Property[EFTests.Address.Street];SyntheticGlobal[EFTests.Address.Street];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChangesAsync;(System.Threading.CancellationToken);Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Id];SyntheticGlobal[EFTests.Person.Id];value;manual |
|
||||
| System.Data.Entity;DbContext;SaveChangesAsync;(System.Threading.CancellationToken);Argument[this].Property[EFTests.MyContext.Persons].Element.Property[EFTests.Person.Name];SyntheticGlobal[EFTests.Person.Name];value;manual |
|
||||
sourceNode
|
||||
sinkNode
|
||||
| EntityFrameworkCore.cs:72:36:72:40 | "sql" | sql-injection |
|
||||
|
||||
@@ -10,7 +10,7 @@ class IncludeSummarizedCallable extends SummarizedCallableImplFinal {
|
||||
}
|
||||
|
||||
/** Gets a string representing the callable in semi-colon separated format for use in flow summaries. */
|
||||
final string getCallableCsv() { result = asPartialModel(this) }
|
||||
final string getCallableCsv() { result = getSignature(this) }
|
||||
|
||||
predicate relevantSummary(
|
||||
SummaryComponentStack input, SummaryComponentStack output, boolean preservesValue
|
||||
|
||||
@@ -1,24 +1,2 @@
|
||||
| NoSummaries;BaseClass;M1;(System.String);summary;df-generated |
|
||||
| NoSummaries;BaseClass;M2;(System.String);summary;df-generated |
|
||||
| NoSummaries;CollectionFlow;ReturnSimpleTypeArray;(System.Int32[]);summary;df-generated |
|
||||
| NoSummaries;CollectionFlow;ReturnSimpleTypeDictionary;(System.Collections.Generic.Dictionary<System.Int32,System.Int32>);summary;df-generated |
|
||||
| NoSummaries;CollectionFlow;ReturnSimpleTypeList;(System.Collections.Generic.List<System.Int32>);summary;df-generated |
|
||||
| NoSummaries;EquatableBound;Equals;(System.Object);summary;df-generated |
|
||||
| NoSummaries;EquatableUnBound<T>;Equals;(T);summary;df-generated |
|
||||
| NoSummaries;SimpleTypes;M1;(System.Boolean);summary;df-generated |
|
||||
| NoSummaries;SimpleTypes;M2;(System.Boolean);summary;df-generated |
|
||||
| NoSummaries;SimpleTypes;M3;(System.Int32);summary;df-generated |
|
||||
| NoSummaries;SimpleTypes;M4;(System.Int32);summary;df-generated |
|
||||
| Sinks;NewSinks;WrapFieldResponseWriteFile;();summary;df-generated |
|
||||
| Sinks;NewSinks;WrapPrivateFieldResponseWriteFile;();summary;df-generated |
|
||||
| Sinks;NewSinks;WrapPrivatePropResponseWriteFile;();summary;df-generated |
|
||||
| Sinks;NewSinks;WrapPropPrivateSetResponseWriteFile;();summary;df-generated |
|
||||
| Sinks;NewSinks;WrapPropResponseWriteFile;();summary;df-generated |
|
||||
| Sinks;NewSinks;WrapResponseWrite;(System.Object);summary;df-generated |
|
||||
| Sinks;NewSinks;WrapResponseWriteFile;(System.String);summary;df-generated |
|
||||
| Sources;NewSources;WrapConsoleReadKey;();summary;df-generated |
|
||||
| Sources;NewSources;WrapConsoleReadLine;();summary;df-generated |
|
||||
| Sources;NewSources;WrapConsoleReadLineAndProcees;(System.String);summary;df-generated |
|
||||
| Summaries;EqualsGetHashCodeNoFlow;Equals;(System.Object);summary;df-generated |
|
||||
| Summaries;EqualsGetHashCodeNoFlow;GetHashCode;();summary;df-generated |
|
||||
| Summaries;OperatorFlow;op_Increment;(Summaries.OperatorFlow);summary;df-generated |
|
||||
unexpectedModel
|
||||
expectedModel
|
||||
|
||||
@@ -3,4 +3,4 @@ extensions:
|
||||
pack: codeql/csharp-all
|
||||
extensible: neutralModel
|
||||
data:
|
||||
- [ "NoSummaries", "ManuallyModelled", "HasNeutralSummaryNoFlow", "(System.Object)", "summary", "manual"]
|
||||
- [ "Models", "ManuallyModelled", "HasNeutralSummaryNoFlow", "(System.Object)", "summary", "manual"]
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
import csharp
|
||||
import utils.modelgenerator.internal.CaptureSummaryFlowQuery
|
||||
import TestUtilities.InlineMadTest
|
||||
|
||||
module InlineMadTestConfig implements InlineMadTestConfigSig {
|
||||
string getCapturedModel(Callable c) { result = captureNoFlow(c) }
|
||||
|
||||
string getKind() { result = "neutral" }
|
||||
}
|
||||
|
||||
import InlineMadTest<InlineMadTestConfig>
|
||||
@@ -1 +0,0 @@
|
||||
utils/modelgenerator/CaptureNeutralModels.ql
|
||||
@@ -1,4 +1,2 @@
|
||||
| Sinks;NewSinks;false;WrapFieldResponseWriteFile;();;Argument[this];html-injection;df-generated |
|
||||
| Sinks;NewSinks;false;WrapPropResponseWriteFile;();;Argument[this];html-injection;df-generated |
|
||||
| Sinks;NewSinks;false;WrapResponseWrite;(System.Object);;Argument[0];html-injection;df-generated |
|
||||
| Sinks;NewSinks;false;WrapResponseWriteFile;(System.String);;Argument[0];html-injection;df-generated |
|
||||
unexpectedModel
|
||||
expectedModel
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
import csharp
|
||||
import utils.modelgenerator.internal.CaptureModels
|
||||
import TestUtilities.InlineMadTest
|
||||
|
||||
module InlineMadTestConfig implements InlineMadTestConfigSig {
|
||||
string getCapturedModel(Callable c) { result = captureSink(c) }
|
||||
|
||||
string getKind() { result = "sink" }
|
||||
}
|
||||
|
||||
import InlineMadTest<InlineMadTestConfig>
|
||||
@@ -1 +0,0 @@
|
||||
utils/modelgenerator/CaptureSinkModels.ql
|
||||
@@ -1,3 +1,2 @@
|
||||
| Sources;NewSources;false;WrapConsoleReadKey;();;ReturnValue;local;df-generated |
|
||||
| Sources;NewSources;false;WrapConsoleReadLine;();;ReturnValue;local;df-generated |
|
||||
| Sources;NewSources;false;WrapConsoleReadLineAndProcees;(System.String);;ReturnValue;local;df-generated |
|
||||
unexpectedModel
|
||||
expectedModel
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
import csharp
|
||||
import utils.modelgenerator.internal.CaptureModels
|
||||
import TestUtilities.InlineMadTest
|
||||
|
||||
module InlineMadTestConfig implements InlineMadTestConfigSig {
|
||||
string getCapturedModel(Callable c) { result = captureSource(c) }
|
||||
|
||||
string getKind() { result = "source" }
|
||||
}
|
||||
|
||||
import InlineMadTest<InlineMadTestConfig>
|
||||
@@ -1 +0,0 @@
|
||||
utils/modelgenerator/CaptureSourceModels.ql
|
||||
@@ -1,40 +1,2 @@
|
||||
| NoSummaries;PublicClassFlow;false;PublicReturn;(System.Object);;Argument[0];ReturnValue;taint;df-generated |
|
||||
| Summaries;BaseClassFlow;true;ReturnParam;(System.Object);;Argument[0];ReturnValue;taint;df-generated |
|
||||
| Summaries;BasicFlow;false;ReturnField;();;Argument[this];ReturnValue;taint;df-generated |
|
||||
| Summaries;BasicFlow;false;ReturnParam0;(System.String,System.Object);;Argument[0];ReturnValue;taint;df-generated |
|
||||
| Summaries;BasicFlow;false;ReturnParam1;(System.String,System.Object);;Argument[1];ReturnValue;taint;df-generated |
|
||||
| Summaries;BasicFlow;false;ReturnParamMultiple;(System.Object,System.Object);;Argument[0];ReturnValue;taint;df-generated |
|
||||
| Summaries;BasicFlow;false;ReturnParamMultiple;(System.Object,System.Object);;Argument[1];ReturnValue;taint;df-generated |
|
||||
| Summaries;BasicFlow;false;ReturnSubstring;(System.String);;Argument[0];ReturnValue;taint;df-generated |
|
||||
| Summaries;BasicFlow;false;ReturnThis;(System.Object);;Argument[this];ReturnValue;value;df-generated |
|
||||
| Summaries;BasicFlow;false;SetField;(System.String);;Argument[0];Argument[this];taint;df-generated |
|
||||
| Summaries;CollectionFlow;false;AddFieldToList;(System.Collections.Generic.List<System.String>);;Argument[this];Argument[0].Element;taint;df-generated |
|
||||
| Summaries;CollectionFlow;false;AddToList;(System.Collections.Generic.List<System.Object>,System.Object);;Argument[1];Argument[0].Element;taint;df-generated |
|
||||
| Summaries;CollectionFlow;false;AssignFieldToArray;(System.Object[]);;Argument[this];Argument[0].Element;taint;df-generated |
|
||||
| Summaries;CollectionFlow;false;AssignToArray;(System.Object,System.Object[]);;Argument[0];Argument[1].Element;taint;df-generated |
|
||||
| Summaries;CollectionFlow;false;ReturnArrayElement;(System.Object[]);;Argument[0].Element;ReturnValue;taint;df-generated |
|
||||
| Summaries;CollectionFlow;false;ReturnBulkTypeList;(System.Collections.Generic.List<System.Byte>);;Argument[0].Element;ReturnValue;taint;df-generated |
|
||||
| Summaries;CollectionFlow;false;ReturnComplexTypeArray;(System.String[]);;Argument[0].Element;ReturnValue;taint;df-generated |
|
||||
| Summaries;CollectionFlow;false;ReturnComplexTypeDictionary;(System.Collections.Generic.Dictionary<System.Int32,System.String>);;Argument[0].Element;ReturnValue;taint;df-generated |
|
||||
| Summaries;CollectionFlow;false;ReturnFieldInAList;();;Argument[this];ReturnValue;taint;df-generated |
|
||||
| Summaries;CollectionFlow;false;ReturnListElement;(System.Collections.Generic.List<System.Object>);;Argument[0].Element;ReturnValue;taint;df-generated |
|
||||
| Summaries;CollectionFlow;false;ReturnUntypedArray;(System.Array);;Argument[0].Element;ReturnValue;taint;df-generated |
|
||||
| Summaries;CollectionFlow;false;ReturnUntypedList;(System.Collections.IList);;Argument[0].Element;ReturnValue;taint;df-generated |
|
||||
| Summaries;DerivedClass1Flow;false;ReturnParam1;(System.String,System.String);;Argument[1];ReturnValue;taint;df-generated |
|
||||
| Summaries;DerivedClass2Flow;false;ReturnParam0;(System.String,System.Int32);;Argument[0];ReturnValue;taint;df-generated |
|
||||
| Summaries;DerivedClass2Flow;false;ReturnParam;(System.Object);;Argument[0];ReturnValue;taint;df-generated |
|
||||
| Summaries;EqualsGetHashCodeNoFlow;false;Equals;(System.String);;Argument[0];ReturnValue;taint;df-generated |
|
||||
| Summaries;GenericFlow<T>;false;AddFieldToGenericList;(System.Collections.Generic.List<T>);;Argument[this];Argument[0].Element;taint;df-generated |
|
||||
| Summaries;GenericFlow<T>;false;AddToGenericList<S>;(System.Collections.Generic.List<S>,S);;Argument[1];Argument[0].Element;taint;df-generated |
|
||||
| Summaries;GenericFlow<T>;false;ReturnFieldInGenericList;();;Argument[this];ReturnValue;taint;df-generated |
|
||||
| Summaries;GenericFlow<T>;false;ReturnGenericElement<S>;(System.Collections.Generic.List<S>);;Argument[0].Element;ReturnValue;taint;df-generated |
|
||||
| Summaries;GenericFlow<T>;false;ReturnGenericField;();;Argument[this];ReturnValue;taint;df-generated |
|
||||
| Summaries;GenericFlow<T>;false;ReturnGenericParam<S>;(S);;Argument[0];ReturnValue;taint;df-generated |
|
||||
| Summaries;GenericFlow<T>;false;SetGenericField;(T);;Argument[0];Argument[this];taint;df-generated |
|
||||
| Summaries;IEnumerableFlow;false;ReturnFieldInIEnumerable;();;Argument[this];ReturnValue;taint;df-generated |
|
||||
| Summaries;IEnumerableFlow;false;ReturnIEnumerable;(System.Collections.Generic.IEnumerable<System.String>);;Argument[0].Element;ReturnValue;taint;df-generated |
|
||||
| Summaries;IEnumerableFlow;false;ReturnIEnumerableElement;(System.Collections.Generic.IEnumerable<System.Object>);;Argument[0].Element;ReturnValue;taint;df-generated |
|
||||
| Summaries;OperatorFlow;false;OperatorFlow;(System.Object);;Argument[0];Argument[this];taint;df-generated |
|
||||
| Summaries;OperatorFlow;false;op_Addition;(Summaries.OperatorFlow,Summaries.OperatorFlow);;Argument[0];ReturnValue;taint;df-generated |
|
||||
| Summaries;Properties;false;get_Prop1;();;Argument[this];ReturnValue;taint;df-generated |
|
||||
| Summaries;Properties;false;set_Prop2;(System.String);;Argument[0];Argument[this];taint;df-generated |
|
||||
unexpectedModel
|
||||
expectedModel
|
||||
|
||||
@@ -3,10 +3,10 @@ extensions:
|
||||
pack: codeql/csharp-all
|
||||
extensible: summaryModel
|
||||
data:
|
||||
- [ "NoSummaries", "ManuallyModelled", False, "HasSummary", "(System.Object)", "", "Argument[0]", "ReturnValue", "value", "manual"]
|
||||
- [ "Models", "ManuallyModelled", False, "HasSummary", "(System.Object)", "", "Argument[0]", "ReturnValue", "value", "manual"]
|
||||
|
||||
- addsTo:
|
||||
pack: codeql/csharp-all
|
||||
extensible: neutralModel
|
||||
data:
|
||||
- [ "NoSummaries", "ManuallyModelled", "HasNeutralSummary", "(System.Object)", "summary", "manual"]
|
||||
- [ "Models", "ManuallyModelled", "HasNeutralSummary", "(System.Object)", "summary", "manual"]
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
import csharp
|
||||
import utils.modelgenerator.internal.CaptureSummaryFlowQuery
|
||||
import TestUtilities.InlineMadTest
|
||||
|
||||
module InlineMadTestConfig implements InlineMadTestConfigSig {
|
||||
string getCapturedModel(Callable c) { result = captureFlow(c) }
|
||||
|
||||
string getKind() { result = "summary" }
|
||||
}
|
||||
|
||||
import InlineMadTest<InlineMadTestConfig>
|
||||
@@ -1 +0,0 @@
|
||||
utils/modelgenerator/CaptureSummaryModels.ql
|
||||
@@ -1,174 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace NoSummaries;
|
||||
|
||||
// Single class with a method that produces a flow summary.
|
||||
// Just to prove that, if a method like this is correctly exposed, a flow summary will be captured.
|
||||
public class PublicClassFlow
|
||||
{
|
||||
public object PublicReturn(object input)
|
||||
{
|
||||
return input;
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class PublicClassNoFlow
|
||||
{
|
||||
private object PrivateReturn(object input)
|
||||
{
|
||||
return input;
|
||||
}
|
||||
|
||||
internal object InternalReturn(object input)
|
||||
{
|
||||
return input;
|
||||
}
|
||||
|
||||
private class PrivateClassNoFlow
|
||||
{
|
||||
public object ReturnParam(object input)
|
||||
{
|
||||
return input;
|
||||
}
|
||||
}
|
||||
|
||||
private class PrivateClassNestedPublicClassNoFlow
|
||||
{
|
||||
public class NestedPublicClassFlow
|
||||
{
|
||||
public object ReturnParam(object input)
|
||||
{
|
||||
return input;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class EquatableBound : IEquatable<object>
|
||||
{
|
||||
public readonly bool tainted;
|
||||
public bool Equals(object other)
|
||||
{
|
||||
return tainted;
|
||||
}
|
||||
}
|
||||
|
||||
public class EquatableUnBound<T> : IEquatable<T>
|
||||
{
|
||||
public readonly bool tainted;
|
||||
public bool Equals(T? other)
|
||||
{
|
||||
return tainted;
|
||||
}
|
||||
}
|
||||
|
||||
// No methods in this class will have generated flow summaries as
|
||||
// simple types are used.
|
||||
public class SimpleTypes
|
||||
{
|
||||
public bool M1(bool b)
|
||||
{
|
||||
return b;
|
||||
}
|
||||
|
||||
public Boolean M2(Boolean b)
|
||||
{
|
||||
return b;
|
||||
}
|
||||
|
||||
public int M3(int i)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
|
||||
public Int32 M4(Int32 i)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
public class HigherOrderParameters
|
||||
{
|
||||
public string M1(string s, Func<string, string> map)
|
||||
{
|
||||
return s;
|
||||
}
|
||||
|
||||
public object M2(Func<object, object> map, object o)
|
||||
{
|
||||
return map(o);
|
||||
}
|
||||
}
|
||||
|
||||
public abstract class BaseClass
|
||||
{
|
||||
// Negative summary.
|
||||
public virtual string M1(string s)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
// Negative summary.
|
||||
public abstract string M2(string s);
|
||||
}
|
||||
|
||||
// No methods in this class will have generated flow as
|
||||
// the simple types used in the collection are not bulk data types.
|
||||
public class CollectionFlow
|
||||
{
|
||||
public int[] ReturnSimpleTypeArray(int[] a)
|
||||
{
|
||||
return a;
|
||||
}
|
||||
|
||||
public List<int> ReturnSimpleTypeList(List<int> a)
|
||||
{
|
||||
return a;
|
||||
}
|
||||
|
||||
public Dictionary<int, int> ReturnSimpleTypeDictionary(Dictionary<int, int> a)
|
||||
{
|
||||
return a;
|
||||
}
|
||||
}
|
||||
|
||||
// A neutral model should not be created for a parameterless constructor.
|
||||
public class ParameterlessConstructor
|
||||
{
|
||||
public bool IsInitialized;
|
||||
|
||||
public ParameterlessConstructor()
|
||||
{
|
||||
IsInitialized = true;
|
||||
}
|
||||
}
|
||||
|
||||
// No models should be created, if there exist either a manual summary or neutral summary.
|
||||
public class ManuallyModelled
|
||||
{
|
||||
public object HasSummary(object o)
|
||||
{
|
||||
return o;
|
||||
}
|
||||
|
||||
public object HasNeutralSummary(object o)
|
||||
{
|
||||
return o;
|
||||
}
|
||||
|
||||
public object HasNeutralSummaryNoFlow(object o)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public class Properties
|
||||
{
|
||||
public object backingField;
|
||||
public object Prop
|
||||
{
|
||||
get { return backingField; }
|
||||
set { backingField = value; }
|
||||
}
|
||||
}
|
||||
@@ -13,6 +13,8 @@ public class NewSinks
|
||||
public string PrivateSetTaintedProp { get; private set; }
|
||||
|
||||
// New sink
|
||||
// sink=Sinks;NewSinks;false;WrapResponseWrite;(System.Object);;Argument[0];html-injection;df-generated
|
||||
// neutral=Sinks;NewSinks;WrapResponseWrite;(System.Object);summary;df-generated
|
||||
public void WrapResponseWrite(object o)
|
||||
{
|
||||
var response = new HttpResponse();
|
||||
@@ -27,6 +29,8 @@ public class NewSinks
|
||||
}
|
||||
|
||||
// New sink
|
||||
// sink=Sinks;NewSinks;false;WrapResponseWriteFile;(System.String);;Argument[0];html-injection;df-generated
|
||||
// neutral=Sinks;NewSinks;WrapResponseWriteFile;(System.String);summary;df-generated
|
||||
public void WrapResponseWriteFile(string s)
|
||||
{
|
||||
var response = new HttpResponse();
|
||||
@@ -34,6 +38,8 @@ public class NewSinks
|
||||
}
|
||||
|
||||
// New sink
|
||||
// sink=Sinks;NewSinks;false;WrapFieldResponseWriteFile;();;Argument[this];html-injection;df-generated
|
||||
// neutral=Sinks;NewSinks;WrapFieldResponseWriteFile;();summary;df-generated
|
||||
public void WrapFieldResponseWriteFile()
|
||||
{
|
||||
var response = new HttpResponse();
|
||||
@@ -41,6 +47,7 @@ public class NewSinks
|
||||
}
|
||||
|
||||
// NOT new sink as field is private
|
||||
// neutral=Sinks;NewSinks;WrapPrivateFieldResponseWriteFile;();summary;df-generated
|
||||
public void WrapPrivateFieldResponseWriteFile()
|
||||
{
|
||||
var response = new HttpResponse();
|
||||
@@ -48,6 +55,8 @@ public class NewSinks
|
||||
}
|
||||
|
||||
// New sink
|
||||
// sink=Sinks;NewSinks;false;WrapPropResponseWriteFile;();;Argument[this];html-injection;df-generated
|
||||
// neutral=Sinks;NewSinks;WrapPropResponseWriteFile;();summary;df-generated
|
||||
public void WrapPropResponseWriteFile()
|
||||
{
|
||||
var response = new HttpResponse();
|
||||
@@ -55,6 +64,7 @@ public class NewSinks
|
||||
}
|
||||
|
||||
// NOT new sink as property is private
|
||||
// neutral=Sinks;NewSinks;WrapPrivatePropResponseWriteFile;();summary;df-generated
|
||||
public void WrapPrivatePropResponseWriteFile()
|
||||
{
|
||||
var response = new HttpResponse();
|
||||
@@ -62,9 +72,10 @@ public class NewSinks
|
||||
}
|
||||
|
||||
// NOT new sink as property setter is private
|
||||
// neutral=Sinks;NewSinks;WrapPropPrivateSetResponseWriteFile;();summary;df-generated
|
||||
public void WrapPropPrivateSetResponseWriteFile()
|
||||
{
|
||||
var response = new HttpResponse();
|
||||
response.WriteFile(PrivateSetTaintedProp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,12 +5,16 @@ namespace Sources;
|
||||
public class NewSources
|
||||
{
|
||||
// New source
|
||||
// source=Sources;NewSources;false;WrapConsoleReadLine;();;ReturnValue;local;df-generated
|
||||
// neutral=Sources;NewSources;WrapConsoleReadLine;();summary;df-generated
|
||||
public string? WrapConsoleReadLine()
|
||||
{
|
||||
return Console.ReadLine();
|
||||
}
|
||||
|
||||
// New source
|
||||
// source=Sources;NewSources;false;WrapConsoleReadLineAndProcees;(System.String);;ReturnValue;local;df-generated
|
||||
// neutral=Sources;NewSources;WrapConsoleReadLineAndProcees;(System.String);summary;df-generated
|
||||
public string WrapConsoleReadLineAndProcees(string prompt)
|
||||
{
|
||||
var s = Console.ReadLine();
|
||||
@@ -24,8 +28,10 @@ public class NewSources
|
||||
}
|
||||
|
||||
// New source
|
||||
// source=Sources;NewSources;false;WrapConsoleReadKey;();;ReturnValue;local;df-generated
|
||||
// neutral=Sources;NewSources;WrapConsoleReadKey;();summary;df-generated
|
||||
public ConsoleKeyInfo WrapConsoleReadKey()
|
||||
{
|
||||
return Console.ReadKey();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,45 +3,53 @@ using System.Linq;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Summaries;
|
||||
namespace Models;
|
||||
|
||||
public class BasicFlow
|
||||
{
|
||||
// No flow summary and no negative summary either.
|
||||
// No model as destructors are excluded from model generation.
|
||||
~BasicFlow() { }
|
||||
|
||||
private string tainted;
|
||||
|
||||
// summary=Models;BasicFlow;false;ReturnThis;(System.Object);;Argument[this];ReturnValue;value;df-generated
|
||||
public BasicFlow ReturnThis(object input)
|
||||
{
|
||||
return this;
|
||||
}
|
||||
|
||||
// summary=Models;BasicFlow;false;ReturnParam0;(System.String,System.Object);;Argument[0];ReturnValue;taint;df-generated
|
||||
public string ReturnParam0(string input0, object input1)
|
||||
{
|
||||
return input0;
|
||||
}
|
||||
|
||||
// summary=Models;BasicFlow;false;ReturnParam1;(System.String,System.Object);;Argument[1];ReturnValue;taint;df-generated
|
||||
public object ReturnParam1(string input0, object input1)
|
||||
{
|
||||
return input1;
|
||||
}
|
||||
|
||||
// summary=Models;BasicFlow;false;ReturnParamMultiple;(System.Object,System.Object);;Argument[0];ReturnValue;taint;df-generated
|
||||
// summary=Models;BasicFlow;false;ReturnParamMultiple;(System.Object,System.Object);;Argument[1];ReturnValue;taint;df-generated
|
||||
public object ReturnParamMultiple(object input0, object input1)
|
||||
{
|
||||
return (System.DateTime.Now.DayOfWeek == System.DayOfWeek.Monday) ? input0 : input1;
|
||||
}
|
||||
|
||||
// summary=Models;BasicFlow;false;ReturnSubstring;(System.String);;Argument[0];ReturnValue;taint;df-generated
|
||||
public string ReturnSubstring(string s)
|
||||
{
|
||||
return s.Substring(0, 1);
|
||||
}
|
||||
|
||||
// summary=Models;BasicFlow;false;SetField;(System.String);;Argument[0];Argument[this];taint;df-generated
|
||||
public void SetField(string s)
|
||||
{
|
||||
tainted = s;
|
||||
}
|
||||
|
||||
// summary=Models;BasicFlow;false;ReturnField;();;Argument[this];ReturnValue;taint;df-generated
|
||||
public string ReturnField()
|
||||
{
|
||||
return tainted;
|
||||
@@ -52,81 +60,118 @@ public class CollectionFlow
|
||||
{
|
||||
private string tainted;
|
||||
|
||||
// summary=Models;CollectionFlow;false;ReturnArrayElement;(System.Object[]);;Argument[0].Element;ReturnValue;taint;df-generated
|
||||
public object ReturnArrayElement(object[] input)
|
||||
{
|
||||
return input[0];
|
||||
}
|
||||
|
||||
// summary=Models;CollectionFlow;false;AssignToArray;(System.Object,System.Object[]);;Argument[0];Argument[1].Element;taint;df-generated
|
||||
public void AssignToArray(object data, object[] target)
|
||||
{
|
||||
target[0] = data;
|
||||
}
|
||||
|
||||
// summary=Models;CollectionFlow;false;AssignFieldToArray;(System.Object[]);;Argument[this];Argument[0].Element;taint;df-generated
|
||||
public void AssignFieldToArray(object[] target)
|
||||
{
|
||||
target[0] = tainted;
|
||||
}
|
||||
|
||||
// summary=Models;CollectionFlow;false;ReturnListElement;(System.Collections.Generic.List<System.Object>);;Argument[0].Element;ReturnValue;taint;df-generated
|
||||
public object ReturnListElement(List<object> input)
|
||||
{
|
||||
return input[0];
|
||||
}
|
||||
|
||||
// summary=Models;CollectionFlow;false;AddToList;(System.Collections.Generic.List<System.Object>,System.Object);;Argument[1];Argument[0].Element;taint;df-generated
|
||||
public void AddToList(List<object> input, object data)
|
||||
{
|
||||
input.Add(data);
|
||||
}
|
||||
|
||||
// summary=Models;CollectionFlow;false;AddFieldToList;(System.Collections.Generic.List<System.String>);;Argument[this];Argument[0].Element;taint;df-generated
|
||||
public void AddFieldToList(List<string> input)
|
||||
{
|
||||
input.Add(tainted);
|
||||
}
|
||||
|
||||
// summary=Models;CollectionFlow;false;ReturnFieldInAList;();;Argument[this];ReturnValue;taint;df-generated
|
||||
public List<string> ReturnFieldInAList()
|
||||
{
|
||||
return new List<string> { tainted };
|
||||
}
|
||||
|
||||
// summary=Models;CollectionFlow;false;ReturnComplexTypeArray;(System.String[]);;Argument[0].Element;ReturnValue;taint;df-generated
|
||||
public string[] ReturnComplexTypeArray(string[] a)
|
||||
{
|
||||
return a;
|
||||
}
|
||||
|
||||
// summary=Models;CollectionFlow;false;ReturnBulkTypeList;(System.Collections.Generic.List<System.Byte>);;Argument[0].Element;ReturnValue;taint;df-generated
|
||||
public List<byte> ReturnBulkTypeList(List<byte> a)
|
||||
{
|
||||
return a;
|
||||
}
|
||||
|
||||
// summary=Models;CollectionFlow;false;ReturnComplexTypeDictionary;(System.Collections.Generic.Dictionary<System.Int32,System.String>);;Argument[0].Element;ReturnValue;taint;df-generated
|
||||
public Dictionary<int, string> ReturnComplexTypeDictionary(Dictionary<int, string> a)
|
||||
{
|
||||
return a;
|
||||
}
|
||||
|
||||
// summary=Models;CollectionFlow;false;ReturnUntypedArray;(System.Array);;Argument[0].Element;ReturnValue;taint;df-generated
|
||||
public Array ReturnUntypedArray(Array a)
|
||||
{
|
||||
return a;
|
||||
}
|
||||
|
||||
// summary=Models;CollectionFlow;false;ReturnUntypedList;(System.Collections.IList);;Argument[0].Element;ReturnValue;taint;df-generated
|
||||
public IList ReturnUntypedList(IList a)
|
||||
{
|
||||
return a;
|
||||
}
|
||||
|
||||
// No flow as this is collection is of simple types.
|
||||
// neutral=Models;CollectionFlow;ReturnSimpleTypeArray;(System.Int32[]);summary;df-generated
|
||||
public int[] ReturnSimpleTypeArray(int[] a)
|
||||
{
|
||||
return a;
|
||||
}
|
||||
|
||||
// No flow as this is collection is of simple types.
|
||||
// neutral=Models;CollectionFlow;ReturnSimpleTypeList;(System.Collections.Generic.List<System.Int32>);summary;df-generated
|
||||
public List<int> ReturnSimpleTypeList(List<int> a)
|
||||
{
|
||||
return a;
|
||||
}
|
||||
|
||||
// No flow as this is collection is of simple types.
|
||||
// neutral=Models;CollectionFlow;ReturnSimpleTypeDictionary;(System.Collections.Generic.Dictionary<System.Int32,System.Int32>);summary;df-generated
|
||||
public Dictionary<int, int> ReturnSimpleTypeDictionary(Dictionary<int, int> a)
|
||||
{
|
||||
return a;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public class IEnumerableFlow
|
||||
{
|
||||
private string tainted;
|
||||
|
||||
// summary=Models;IEnumerableFlow;false;ReturnIEnumerable;(System.Collections.Generic.IEnumerable<System.String>);;Argument[0].Element;ReturnValue;taint;df-generated
|
||||
public IEnumerable<string> ReturnIEnumerable(IEnumerable<string> input)
|
||||
{
|
||||
return input;
|
||||
}
|
||||
|
||||
// summary=Models;IEnumerableFlow;false;ReturnIEnumerableElement;(System.Collections.Generic.IEnumerable<System.Object>);;Argument[0].Element;ReturnValue;taint;df-generated
|
||||
public object ReturnIEnumerableElement(IEnumerable<object> input)
|
||||
{
|
||||
return input.First();
|
||||
}
|
||||
|
||||
// summary=Models;IEnumerableFlow;false;ReturnFieldInIEnumerable;();;Argument[this];ReturnValue;taint;df-generated
|
||||
public IEnumerable<string> ReturnFieldInIEnumerable()
|
||||
{
|
||||
return new List<string> { tainted };
|
||||
@@ -137,36 +182,43 @@ public class GenericFlow<T>
|
||||
{
|
||||
private T tainted;
|
||||
|
||||
// summary=Models;GenericFlow<T>;false;SetGenericField;(T);;Argument[0];Argument[this];taint;df-generated
|
||||
public void SetGenericField(T t)
|
||||
{
|
||||
tainted = t;
|
||||
}
|
||||
|
||||
// summary=Models;GenericFlow<T>;false;ReturnGenericField;();;Argument[this];ReturnValue;taint;df-generated
|
||||
public T ReturnGenericField()
|
||||
{
|
||||
return tainted;
|
||||
}
|
||||
|
||||
// summary=Models;GenericFlow<T>;false;AddFieldToGenericList;(System.Collections.Generic.List<T>);;Argument[this];Argument[0].Element;taint;df-generated
|
||||
public void AddFieldToGenericList(List<T> input)
|
||||
{
|
||||
input.Add(tainted);
|
||||
}
|
||||
|
||||
// summary=Models;GenericFlow<T>;false;ReturnFieldInGenericList;();;Argument[this];ReturnValue;taint;df-generated
|
||||
public List<T> ReturnFieldInGenericList()
|
||||
{
|
||||
return new List<T> { tainted };
|
||||
}
|
||||
|
||||
// summary=Models;GenericFlow<T>;false;ReturnGenericParam<S>;(S);;Argument[0];ReturnValue;taint;df-generated
|
||||
public S ReturnGenericParam<S>(S input)
|
||||
{
|
||||
return input;
|
||||
}
|
||||
|
||||
// summary=Models;GenericFlow<T>;false;ReturnGenericElement<S>;(System.Collections.Generic.List<S>);;Argument[0].Element;ReturnValue;taint;df-generated
|
||||
public S ReturnGenericElement<S>(List<S> input)
|
||||
{
|
||||
return input[0];
|
||||
}
|
||||
|
||||
// summary=Models;GenericFlow<T>;false;AddToGenericList<S>;(System.Collections.Generic.List<S>,S);;Argument[1];Argument[0].Element;taint;df-generated
|
||||
public void AddToGenericList<S>(List<S> input, S data)
|
||||
{
|
||||
input.Add(data);
|
||||
@@ -175,6 +227,7 @@ public class GenericFlow<T>
|
||||
|
||||
public abstract class BaseClassFlow
|
||||
{
|
||||
// summary=Models;BaseClassFlow;true;ReturnParam;(System.Object);;Argument[0];ReturnValue;taint;df-generated
|
||||
public virtual object ReturnParam(object input)
|
||||
{
|
||||
return input;
|
||||
@@ -183,6 +236,7 @@ public abstract class BaseClassFlow
|
||||
|
||||
public class DerivedClass1Flow : BaseClassFlow
|
||||
{
|
||||
// summary=Models;DerivedClass1Flow;false;ReturnParam1;(System.String,System.String);;Argument[1];ReturnValue;taint;df-generated
|
||||
public string ReturnParam1(string input0, string input1)
|
||||
{
|
||||
return input1;
|
||||
@@ -191,11 +245,13 @@ public class DerivedClass1Flow : BaseClassFlow
|
||||
|
||||
public class DerivedClass2Flow : BaseClassFlow
|
||||
{
|
||||
// summary=Models;DerivedClass2Flow;false;ReturnParam;(System.Object);;Argument[0];ReturnValue;taint;df-generated
|
||||
public override object ReturnParam(object input)
|
||||
{
|
||||
return input;
|
||||
}
|
||||
|
||||
// summary=Models;DerivedClass2Flow;false;ReturnParam0;(System.String,System.Int32);;Argument[0];ReturnValue;taint;df-generated
|
||||
public string ReturnParam0(string input0, int input1)
|
||||
{
|
||||
return input0;
|
||||
@@ -206,30 +262,35 @@ public class OperatorFlow
|
||||
{
|
||||
public readonly object Field;
|
||||
|
||||
// summary=Models;OperatorFlow;false;OperatorFlow;(System.Object);;Argument[0];Argument[this];taint;df-generated
|
||||
public OperatorFlow(object o)
|
||||
{
|
||||
Field = o;
|
||||
}
|
||||
|
||||
// Flow Summary.
|
||||
// summary=Models;OperatorFlow;false;op_Addition;(Models.OperatorFlow,Models.OperatorFlow);;Argument[0];ReturnValue;taint;df-generated
|
||||
public static OperatorFlow operator +(OperatorFlow a, OperatorFlow b)
|
||||
{
|
||||
return a;
|
||||
}
|
||||
|
||||
// No flow summary.
|
||||
// neutral=Models;OperatorFlow;op_Increment;(Models.OperatorFlow);summary;df-generated
|
||||
public static OperatorFlow operator ++(OperatorFlow a)
|
||||
{
|
||||
return new OperatorFlow(new object());
|
||||
}
|
||||
|
||||
// No flow summary as this is an implicit conversion operator.
|
||||
// No model as user defined conversion operators are excluded
|
||||
// from model generation.
|
||||
public static implicit operator OperatorFlow(string s)
|
||||
{
|
||||
return new OperatorFlow(s);
|
||||
}
|
||||
|
||||
// No flow summary as this is an explicit conversion operator.
|
||||
// No model as user defined conversion operators are excluded
|
||||
// from model generation.
|
||||
public static explicit operator OperatorFlow(string[] b)
|
||||
{
|
||||
return new OperatorFlow(b);
|
||||
@@ -242,19 +303,19 @@ public class EqualsGetHashCodeNoFlow
|
||||
public readonly bool boolTainted;
|
||||
public readonly int intTainted;
|
||||
|
||||
// No flow summary as this is an override of the Equals method.
|
||||
// neutral=Models;EqualsGetHashCodeNoFlow;Equals;(System.Object);summary;df-generated
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
return boolTainted;
|
||||
}
|
||||
|
||||
// Flow summary as this is not an override of the object Equals method.
|
||||
// summary=Models;EqualsGetHashCodeNoFlow;false;Equals;(System.String);;Argument[0];ReturnValue;taint;df-generated
|
||||
public string Equals(string s)
|
||||
{
|
||||
return s;
|
||||
}
|
||||
|
||||
// No flow summary as this is an override of the GetHashCode method.
|
||||
// neutral=Models;EqualsGetHashCodeNoFlow;GetHashCode;();summary;df-generated
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return intTainted;
|
||||
@@ -265,13 +326,167 @@ public class Properties
|
||||
{
|
||||
private string tainted;
|
||||
|
||||
// summary=Models;Properties;false;get_Prop1;();;Argument[this];ReturnValue;taint;df-generated
|
||||
public string Prop1
|
||||
{
|
||||
get { return tainted; }
|
||||
}
|
||||
|
||||
// summary=Models;Properties;false;set_Prop2;(System.String);;Argument[0];Argument[this];taint;df-generated
|
||||
public string Prop2
|
||||
{
|
||||
set { tainted = value; }
|
||||
}
|
||||
|
||||
public object backingField;
|
||||
// No model as properties with public getters and setters are excluded from
|
||||
// model generation as these are handled directly by the dataflow library.
|
||||
public object Prop
|
||||
{
|
||||
get { return backingField; }
|
||||
set { backingField = value; }
|
||||
}
|
||||
}
|
||||
|
||||
// No models as the methods are not public.
|
||||
public sealed class PublicClassNoFlow
|
||||
{
|
||||
private object PrivateReturn(object input)
|
||||
{
|
||||
return input;
|
||||
}
|
||||
|
||||
internal object InternalReturn(object input)
|
||||
{
|
||||
return input;
|
||||
}
|
||||
|
||||
private class PrivateClassNoFlow
|
||||
{
|
||||
public object ReturnParam(object input)
|
||||
{
|
||||
return input;
|
||||
}
|
||||
}
|
||||
|
||||
private class PrivateClassNestedPublicClassNoFlow
|
||||
{
|
||||
public class NestedPublicClassFlow
|
||||
{
|
||||
public object ReturnParam(object input)
|
||||
{
|
||||
return input;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class EquatableBound : IEquatable<object>
|
||||
{
|
||||
public readonly bool tainted;
|
||||
|
||||
// neutral=Models;EquatableBound;Equals;(System.Object);summary;df-generated
|
||||
public bool Equals(object other)
|
||||
{
|
||||
return tainted;
|
||||
}
|
||||
}
|
||||
|
||||
public class EquatableUnBound<T> : IEquatable<T>
|
||||
{
|
||||
public readonly bool tainted;
|
||||
|
||||
// neutral=Models;EquatableUnBound<T>;Equals;(T);summary;df-generated
|
||||
public bool Equals(T? other)
|
||||
{
|
||||
return tainted;
|
||||
}
|
||||
}
|
||||
|
||||
// No methods in this class will have generated flow summaries as
|
||||
// simple types are used.
|
||||
public class SimpleTypes
|
||||
{
|
||||
// neutral=Models;SimpleTypes;M1;(System.Boolean);summary;df-generated
|
||||
public bool M1(bool b)
|
||||
{
|
||||
return b;
|
||||
}
|
||||
|
||||
// neutral=Models;SimpleTypes;M2;(System.Boolean);summary;df-generated
|
||||
public Boolean M2(Boolean b)
|
||||
{
|
||||
return b;
|
||||
}
|
||||
|
||||
// neutral=Models;SimpleTypes;M3;(System.Int32);summary;df-generated
|
||||
public int M3(int i)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
|
||||
// neutral=Models;SimpleTypes;M4;(System.Int32);summary;df-generated
|
||||
public Int32 M4(Int32 i)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
// No models as higher order methods are excluded
|
||||
// from model generation.
|
||||
public class HigherOrderParameters
|
||||
{
|
||||
public string M1(string s, Func<string, string> map)
|
||||
{
|
||||
return s;
|
||||
}
|
||||
|
||||
public object M2(Func<object, object> map, object o)
|
||||
{
|
||||
return map(o);
|
||||
}
|
||||
}
|
||||
|
||||
public abstract class BaseClass
|
||||
{
|
||||
// neutral=Models;BaseClass;M1;(System.String);summary;df-generated
|
||||
public virtual string M1(string s)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
// neutral=Models;BaseClass;M2;(System.String);summary;df-generated
|
||||
public abstract string M2(string s);
|
||||
}
|
||||
|
||||
// No models as manually modelled methods are excluded from
|
||||
// model generation.
|
||||
public class ManuallyModelled
|
||||
{
|
||||
public object HasSummary(object o)
|
||||
{
|
||||
return o;
|
||||
}
|
||||
|
||||
public object HasNeutralSummary(object o)
|
||||
{
|
||||
return o;
|
||||
}
|
||||
|
||||
public object HasNeutralSummaryNoFlow(object o)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public class ParameterlessConstructor
|
||||
{
|
||||
public bool IsInitialized;
|
||||
|
||||
// No model as parameterless constructors
|
||||
// are excluded from model generation.
|
||||
public ParameterlessConstructor()
|
||||
{
|
||||
IsInitialized = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,162 +1,2 @@
|
||||
| Summaries;IGrouping<TKey,TElement>;true;get_Key;();;Argument[this].SyntheticField[ArgType0];ReturnValue;value;tb-generated |
|
||||
| Summaries;IOrderedEnumerable<TElement>;true;CreateOrderedEnumerable<TKey>;(System.Func<TElement,TKey>,System.Collections.Generic.IComparer<TKey>,System.Boolean);;Argument[this].Element;Argument[0].Parameter[0];value;tb-generated |
|
||||
| Summaries;IOrderedEnumerable<TElement>;true;CreateOrderedEnumerable<TKey>;(System.Func<TElement,TKey>,System.Collections.Generic.IComparer<TKey>,System.Boolean);;Argument[this].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Aggregate<TSource,TAccumulate,TResult>;(System.Collections.Generic.IEnumerable<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>,System.Func<TAccumulate,TResult>);;Argument[0].Element;Argument[2].Parameter[1];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Aggregate<TSource,TAccumulate,TResult>;(System.Collections.Generic.IEnumerable<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>,System.Func<TAccumulate,TResult>);;Argument[1];Argument[2].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Aggregate<TSource,TAccumulate,TResult>;(System.Collections.Generic.IEnumerable<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>,System.Func<TAccumulate,TResult>);;Argument[1];Argument[3].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Aggregate<TSource,TAccumulate,TResult>;(System.Collections.Generic.IEnumerable<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>,System.Func<TAccumulate,TResult>);;Argument[2].ReturnValue;Argument[2].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Aggregate<TSource,TAccumulate,TResult>;(System.Collections.Generic.IEnumerable<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>,System.Func<TAccumulate,TResult>);;Argument[2].ReturnValue;Argument[3].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Aggregate<TSource,TAccumulate,TResult>;(System.Collections.Generic.IEnumerable<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>,System.Func<TAccumulate,TResult>);;Argument[3].ReturnValue;ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Aggregate<TSource,TAccumulate>;(System.Collections.Generic.IEnumerable<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>);;Argument[0].Element;Argument[2].Parameter[1];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Aggregate<TSource,TAccumulate>;(System.Collections.Generic.IEnumerable<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>);;Argument[1];Argument[2].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Aggregate<TSource,TAccumulate>;(System.Collections.Generic.IEnumerable<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>);;Argument[1];ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Aggregate<TSource,TAccumulate>;(System.Collections.Generic.IEnumerable<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>);;Argument[2].ReturnValue;Argument[2].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Aggregate<TSource,TAccumulate>;(System.Collections.Generic.IEnumerable<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>);;Argument[2].ReturnValue;ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Aggregate<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TSource,TSource>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Aggregate<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TSource,TSource>);;Argument[0].Element;Argument[1].Parameter[1];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Aggregate<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TSource,TSource>);;Argument[0].Element;ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Aggregate<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TSource,TSource>);;Argument[1].ReturnValue;Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Aggregate<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TSource,TSource>);;Argument[1].ReturnValue;Argument[1].Parameter[1];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Aggregate<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TSource,TSource>);;Argument[1].ReturnValue;ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;All<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Any<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Append<TSource>;(System.Collections.Generic.IEnumerable<TSource>,TSource);;Argument[0].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Append<TSource>;(System.Collections.Generic.IEnumerable<TSource>,TSource);;Argument[1];ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;AsEnumerable<TSource>;(System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Average<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Decimal>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Concat<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Concat<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Argument[1].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Count<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;DefaultIfEmpty<TSource>;(System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;DefaultIfEmpty<TSource>;(System.Collections.Generic.IEnumerable<TSource>,TSource);;Argument[0].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;DefaultIfEmpty<TSource>;(System.Collections.Generic.IEnumerable<TSource>,TSource);;Argument[1];ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Distinct<TSource>;(System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;DistinctBy<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;DistinctBy<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;ElementAt<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Int32);;Argument[0].Element;ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;ElementAtOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Int32);;Argument[0].Element;ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;First<TSource>;(System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;First<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;First<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;FirstOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;FirstOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;FirstOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;FirstOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>,TSource);;Argument[0].Element;ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;FirstOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>,TSource);;Argument[1];ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Intersect<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Intersect<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Argument[1].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;IntersectBy<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TKey>,System.Func<TSource,TKey>);;Argument[0].Element;Argument[2].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;IntersectBy<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TKey>,System.Func<TSource,TKey>);;Argument[0].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Join<TOuter,TInner,TKey,TResult>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Join<TOuter,TInner,TKey,TResult>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>);;Argument[0].Element;Argument[4].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Join<TOuter,TInner,TKey,TResult>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>);;Argument[1].Element;Argument[3].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Join<TOuter,TInner,TKey,TResult>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>);;Argument[1].Element;Argument[4].Parameter[1];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Join<TOuter,TInner,TKey,TResult>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>);;Argument[4].ReturnValue;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Last<TSource>;(System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Last<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Last<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;LastOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;LastOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;LastOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;LastOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>,TSource);;Argument[0].Element;ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;LastOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>,TSource);;Argument[1];ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;LongCount<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Max<TSource,TResult>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Max<TSource,TResult>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TResult>);;Argument[1].ReturnValue;ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Max<TSource>;(System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Max<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Decimal>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;MaxBy<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;MaxBy<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Min<TSource,TResult>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Min<TSource,TResult>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TResult>);;Argument[1].ReturnValue;ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Min<TSource>;(System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;MinBy<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;MinBy<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;OrderBy<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;OrderBy<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;OrderByDescending<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;OrderByDescending<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Prepend<TSource>;(System.Collections.Generic.IEnumerable<TSource>,TSource);;Argument[0].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Prepend<TSource>;(System.Collections.Generic.IEnumerable<TSource>,TSource);;Argument[1];ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Repeat<TResult>;(TResult,System.Int32);;Argument[0];ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Reverse<TSource>;(System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Select<TSource,TResult>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Select<TSource,TResult>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TResult>);;Argument[1].ReturnValue;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;SelectMany<TSource,TCollection,TResult>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Collections.Generic.IEnumerable<TCollection>>,System.Func<TSource,TCollection,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;SelectMany<TSource,TCollection,TResult>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Collections.Generic.IEnumerable<TCollection>>,System.Func<TSource,TCollection,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;SelectMany<TSource,TCollection,TResult>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Collections.Generic.IEnumerable<TCollection>>,System.Func<TSource,TCollection,TResult>);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;SelectMany<TSource,TCollection,TResult>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Collections.Generic.IEnumerable<TCollection>>,System.Func<TSource,TCollection,TResult>);;Argument[2].ReturnValue;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;SelectMany<TSource,TResult>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Collections.Generic.IEnumerable<TResult>>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;SelectMany<TSource,TResult>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Collections.Generic.IEnumerable<TResult>>);;Argument[1].ReturnValue.Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Single<TSource>;(System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Single<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Single<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;SingleOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;SingleOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;SingleOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;SingleOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>,TSource);;Argument[0].Element;ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;SingleOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>,TSource);;Argument[1];ReturnValue;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Skip<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Int32);;Argument[0].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;SkipLast<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Int32);;Argument[0].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;SkipWhile<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;SkipWhile<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Take<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Int32);;Argument[0].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;TakeLast<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Int32);;Argument[0].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;TakeWhile<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;TakeWhile<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;ThenBy<TSource,TKey>;(Summaries.IOrderedEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;ThenBy<TSource,TKey>;(Summaries.IOrderedEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;ThenByDescending<TSource,TKey>;(Summaries.IOrderedEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;ThenByDescending<TSource,TKey>;(Summaries.IOrderedEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;ToHashSet<TSource>;(System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;ToList<TSource>;(System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Union<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Union<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Argument[1].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;UnionBy<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;Argument[2].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;UnionBy<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;UnionBy<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[1].Element;Argument[2].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;UnionBy<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[1].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Where<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Where<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Zip<TFirst,TSecond,TResult>;(System.Collections.Generic.IEnumerable<TFirst>,System.Collections.Generic.IEnumerable<TSecond>,System.Func<TFirst,TSecond,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Zip<TFirst,TSecond,TResult>;(System.Collections.Generic.IEnumerable<TFirst>,System.Collections.Generic.IEnumerable<TSecond>,System.Func<TFirst,TSecond,TResult>);;Argument[1].Element;Argument[2].Parameter[1];value;tb-generated |
|
||||
| Summaries;SystemLinqEnumerable;false;Zip<TFirst,TSecond,TResult>;(System.Collections.Generic.IEnumerable<TFirst>,System.Collections.Generic.IEnumerable<TSecond>,System.Func<TFirst,TSecond,TResult>);;Argument[2].ReturnValue;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;TypeBasedCollection<T>;false;Add;(T);;Argument[0];Argument[this].Element;value;tb-generated |
|
||||
| Summaries;TypeBasedCollection<T>;false;AddMany;(System.Collections.Generic.IEnumerable<T>);;Argument[0].Element;Argument[this].Element;value;tb-generated |
|
||||
| Summaries;TypeBasedCollection<T>;false;First;();;Argument[this].Element;ReturnValue;value;tb-generated |
|
||||
| Summaries;TypeBasedCollection<T>;false;GetMany;();;Argument[this].Element;ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;TypeBasedComplex<T>;false;AddMany;(System.Collections.Generic.IEnumerable<T>);;Argument[0].Element;Argument[this].SyntheticField[ArgType0];value;tb-generated |
|
||||
| Summaries;TypeBasedComplex<T>;false;Apply;(System.Func<T,System.Int32>);;Argument[this].SyntheticField[ArgType0];Argument[0].Parameter[0];value;tb-generated |
|
||||
| Summaries;TypeBasedComplex<T>;false;Apply<S>;(System.Func<T,S>);;Argument[0].ReturnValue;ReturnValue;value;tb-generated |
|
||||
| Summaries;TypeBasedComplex<T>;false;Apply<S>;(System.Func<T,S>);;Argument[this].SyntheticField[ArgType0];Argument[0].Parameter[0];value;tb-generated |
|
||||
| Summaries;TypeBasedComplex<T>;false;Apply<T1,T2>;(T1,System.Func<T1,T2>);;Argument[0];Argument[1].Parameter[0];value;tb-generated |
|
||||
| Summaries;TypeBasedComplex<T>;false;Apply<T1,T2>;(T1,System.Func<T1,T2>);;Argument[1].ReturnValue;ReturnValue;value;tb-generated |
|
||||
| Summaries;TypeBasedComplex<T>;false;FlatMap;(System.Func<T,System.Collections.Generic.IEnumerable<T>>);;Argument[0].ReturnValue.Element;Argument[0].Parameter[0];value;tb-generated |
|
||||
| Summaries;TypeBasedComplex<T>;false;FlatMap;(System.Func<T,System.Collections.Generic.IEnumerable<T>>);;Argument[0].ReturnValue.Element;Argument[this].SyntheticField[ArgType0];value;tb-generated |
|
||||
| Summaries;TypeBasedComplex<T>;false;FlatMap;(System.Func<T,System.Collections.Generic.IEnumerable<T>>);;Argument[0].ReturnValue.Element;ReturnValue.SyntheticField[ArgType0];value;tb-generated |
|
||||
| Summaries;TypeBasedComplex<T>;false;FlatMap;(System.Func<T,System.Collections.Generic.IEnumerable<T>>);;Argument[this].SyntheticField[ArgType0];Argument[0].Parameter[0];value;tb-generated |
|
||||
| Summaries;TypeBasedComplex<T>;false;FlatMap;(System.Func<T,System.Collections.Generic.IEnumerable<T>>);;Argument[this].SyntheticField[ArgType0];ReturnValue.SyntheticField[ArgType0];value;tb-generated |
|
||||
| Summaries;TypeBasedComplex<T>;false;FlatMap<S>;(System.Func<T,System.Collections.Generic.IEnumerable<S>>);;Argument[0].ReturnValue.Element;ReturnValue.SyntheticField[ArgType0];value;tb-generated |
|
||||
| Summaries;TypeBasedComplex<T>;false;FlatMap<S>;(System.Func<T,System.Collections.Generic.IEnumerable<S>>);;Argument[this].SyntheticField[ArgType0];Argument[0].Parameter[0];value;tb-generated |
|
||||
| Summaries;TypeBasedComplex<T>;false;GetMany;();;Argument[this].SyntheticField[ArgType0];ReturnValue.Element;value;tb-generated |
|
||||
| Summaries;TypeBasedComplex<T>;false;Map<S>;(System.Func<T,S>);;Argument[0].ReturnValue;ReturnValue;value;tb-generated |
|
||||
| Summaries;TypeBasedComplex<T>;false;Map<S>;(System.Func<T,S>);;Argument[this].SyntheticField[ArgType0];Argument[0].Parameter[0];value;tb-generated |
|
||||
| Summaries;TypeBasedComplex<T>;false;MapComplex<S>;(System.Func<T,S>);;Argument[0].ReturnValue;ReturnValue.SyntheticField[ArgType0];value;tb-generated |
|
||||
| Summaries;TypeBasedComplex<T>;false;MapComplex<S>;(System.Func<T,S>);;Argument[this].SyntheticField[ArgType0];Argument[0].Parameter[0];value;tb-generated |
|
||||
| Summaries;TypeBasedComplex<T>;false;Return;(System.Func<T,Summaries.TypeBasedComplex<T>>);;Argument[0].ReturnValue.SyntheticField[ArgType0];Argument[0].Parameter[0];value;tb-generated |
|
||||
| Summaries;TypeBasedComplex<T>;false;Return;(System.Func<T,Summaries.TypeBasedComplex<T>>);;Argument[0].ReturnValue.SyntheticField[ArgType0];Argument[this].SyntheticField[ArgType0];value;tb-generated |
|
||||
| Summaries;TypeBasedComplex<T>;false;Return;(System.Func<T,Summaries.TypeBasedComplex<T>>);;Argument[0].ReturnValue.SyntheticField[ArgType0];ReturnValue.SyntheticField[ArgType0];value;tb-generated |
|
||||
| Summaries;TypeBasedComplex<T>;false;Return;(System.Func<T,Summaries.TypeBasedComplex<T>>);;Argument[this].SyntheticField[ArgType0];Argument[0].Parameter[0];value;tb-generated |
|
||||
| Summaries;TypeBasedComplex<T>;false;Return;(System.Func<T,Summaries.TypeBasedComplex<T>>);;Argument[this].SyntheticField[ArgType0];ReturnValue.SyntheticField[ArgType0];value;tb-generated |
|
||||
| Summaries;TypeBasedComplex<T>;false;Set;(System.Int32,System.Func<System.Int32,T>);;Argument[1].ReturnValue;Argument[this].SyntheticField[ArgType0];value;tb-generated |
|
||||
| Summaries;TypeBasedNoCollection<T>;false;Get;();;Argument[this].SyntheticField[ArgType0];ReturnValue;value;tb-generated |
|
||||
| Summaries;TypeBasedNoCollection<T>;false;Set;(T);;Argument[0];Argument[this].SyntheticField[ArgType0];value;tb-generated |
|
||||
| Summaries;TypeBasedSimple<T>;false;Get;();;Argument[this].SyntheticField[ArgType0];ReturnValue;value;tb-generated |
|
||||
| Summaries;TypeBasedSimple<T>;false;Get;(System.Object);;Argument[this].SyntheticField[ArgType0];ReturnValue;value;tb-generated |
|
||||
| Summaries;TypeBasedSimple<T>;false;Id;(T);;Argument[0];Argument[this].SyntheticField[ArgType0];value;tb-generated |
|
||||
| Summaries;TypeBasedSimple<T>;false;Id;(T);;Argument[0];ReturnValue;value;tb-generated |
|
||||
| Summaries;TypeBasedSimple<T>;false;Id;(T);;Argument[this].SyntheticField[ArgType0];ReturnValue;value;tb-generated |
|
||||
| Summaries;TypeBasedSimple<T>;false;Id<S>;(S);;Argument[0];ReturnValue;value;tb-generated |
|
||||
| Summaries;TypeBasedSimple<T>;false;Set;(System.Int32,T);;Argument[1];Argument[this].SyntheticField[ArgType0];value;tb-generated |
|
||||
| Summaries;TypeBasedSimple<T>;false;Set;(T);;Argument[0];Argument[this].SyntheticField[ArgType0];value;tb-generated |
|
||||
| Summaries;TypeBasedSimple<T>;false;TypeBasedSimple;(T);;Argument[0];Argument[this].SyntheticField[ArgType0];value;tb-generated |
|
||||
unexpectedModel
|
||||
expectedModel
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
import csharp
|
||||
import TestUtilities.InlineMadTest
|
||||
import utils.modelgenerator.internal.CaptureTypeBasedSummaryModels
|
||||
|
||||
module InlineMadTestConfig implements InlineMadTestConfigSig {
|
||||
string getCapturedModel(Callable c) { result = captureFlow(c) }
|
||||
|
||||
string getKind() { result = "summary" }
|
||||
}
|
||||
|
||||
import InlineMadTest<InlineMadTestConfig>
|
||||
@@ -1 +0,0 @@
|
||||
utils/modelgenerator/CaptureTypeBasedSummaryModels.ql
|
||||
@@ -5,75 +5,119 @@ using System.Collections.Generic;
|
||||
|
||||
namespace Summaries;
|
||||
|
||||
public class TypeBasedSimple<T> {
|
||||
|
||||
public T Prop {
|
||||
public class TypeBasedSimple<T>
|
||||
{
|
||||
|
||||
public T Prop
|
||||
{
|
||||
get { throw null; }
|
||||
set { throw null; }
|
||||
}
|
||||
|
||||
public TypeBasedSimple(T t) { throw null; }
|
||||
// summary=Summaries;TypeBasedSimple<T>;false;TypeBasedSimple;(T);;Argument[0];Argument[this].SyntheticField[ArgType0];value;tb-generated
|
||||
public TypeBasedSimple(T t) { throw null; }
|
||||
|
||||
// summary=Summaries;TypeBasedSimple<T>;false;Get;();;Argument[this].SyntheticField[ArgType0];ReturnValue;value;tb-generated
|
||||
public T Get() { throw null; }
|
||||
|
||||
// summary=Summaries;TypeBasedSimple<T>;false;Get;(System.Object);;Argument[this].SyntheticField[ArgType0];ReturnValue;value;tb-generated
|
||||
public T Get(object x) { throw null; }
|
||||
|
||||
// summary=Summaries;TypeBasedSimple<T>;false;Id;(T);;Argument[0];Argument[this].SyntheticField[ArgType0];value;tb-generated
|
||||
// summary=Summaries;TypeBasedSimple<T>;false;Id;(T);;Argument[0];ReturnValue;value;tb-generated
|
||||
// summary=Summaries;TypeBasedSimple<T>;false;Id;(T);;Argument[this].SyntheticField[ArgType0];ReturnValue;value;tb-generated
|
||||
public T Id(T x) { throw null; }
|
||||
|
||||
// summary=Summaries;TypeBasedSimple<T>;false;Id<S>;(S);;Argument[0];ReturnValue;value;tb-generated
|
||||
public S Id<S>(S x) { throw null; }
|
||||
|
||||
// summary=Summaries;TypeBasedSimple<T>;false;Set;(T);;Argument[0];Argument[this].SyntheticField[ArgType0];value;tb-generated
|
||||
public void Set(T x) { throw null; }
|
||||
|
||||
// summary=Summaries;TypeBasedSimple<T>;false;Set;(System.Int32,T);;Argument[1];Argument[this].SyntheticField[ArgType0];value;tb-generated
|
||||
public void Set(int x, T y) { throw null; }
|
||||
|
||||
public void Set<S>(S x) { throw null; } // No summary as S is unrelated to T
|
||||
// No summary as S is unrelated to T
|
||||
public void Set<S>(S x) { throw null; }
|
||||
}
|
||||
|
||||
public class TypeBasedComplex<T> {
|
||||
|
||||
public class TypeBasedComplex<T>
|
||||
{
|
||||
// summary=Summaries;TypeBasedComplex<T>;false;AddMany;(System.Collections.Generic.IEnumerable<T>);;Argument[0].Element;Argument[this].SyntheticField[ArgType0];value;tb-generated
|
||||
public void AddMany(IEnumerable<T> xs) { throw null; }
|
||||
|
||||
// summary=Summaries;TypeBasedComplex<T>;false;Apply;(System.Func<T,System.Int32>);;Argument[this].SyntheticField[ArgType0];Argument[0].Parameter[0];value;tb-generated
|
||||
public int Apply(Func<T, int> f) { throw null; }
|
||||
|
||||
// summary=Summaries;TypeBasedComplex<T>;false;Apply<S>;(System.Func<T,S>);;Argument[0].ReturnValue;ReturnValue;value;tb-generated
|
||||
// summary=Summaries;TypeBasedComplex<T>;false;Apply<S>;(System.Func<T,S>);;Argument[this].SyntheticField[ArgType0];Argument[0].Parameter[0];value;tb-generated
|
||||
public S Apply<S>(Func<T, S> f) { throw null; }
|
||||
|
||||
public T2 Apply<T1,T2>(T1 x, Func<T1, T2> f) { throw null; }
|
||||
// summary=Summaries;TypeBasedComplex<T>;false;Apply<T1,T2>;(T1,System.Func<T1,T2>);;Argument[0];Argument[1].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;TypeBasedComplex<T>;false;Apply<T1,T2>;(T1,System.Func<T1,T2>);;Argument[1].ReturnValue;ReturnValue;value;tb-generated
|
||||
public T2 Apply<T1, T2>(T1 x, Func<T1, T2> f) { throw null; }
|
||||
|
||||
// summary=Summaries;TypeBasedComplex<T>;false;FlatMap;(System.Func<T,System.Collections.Generic.IEnumerable<T>>);;Argument[0].ReturnValue.Element;Argument[0].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;TypeBasedComplex<T>;false;FlatMap;(System.Func<T,System.Collections.Generic.IEnumerable<T>>);;Argument[0].ReturnValue.Element;Argument[this].SyntheticField[ArgType0];value;tb-generated
|
||||
// summary=Summaries;TypeBasedComplex<T>;false;FlatMap;(System.Func<T,System.Collections.Generic.IEnumerable<T>>);;Argument[0].ReturnValue.Element;ReturnValue.SyntheticField[ArgType0];value;tb-generated
|
||||
// summary=Summaries;TypeBasedComplex<T>;false;FlatMap;(System.Func<T,System.Collections.Generic.IEnumerable<T>>);;Argument[this].SyntheticField[ArgType0];Argument[0].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;TypeBasedComplex<T>;false;FlatMap;(System.Func<T,System.Collections.Generic.IEnumerable<T>>);;Argument[this].SyntheticField[ArgType0];ReturnValue.SyntheticField[ArgType0];value;tb-generated
|
||||
public TypeBasedComplex<T> FlatMap(Func<T, IEnumerable<T>> f) { throw null; }
|
||||
|
||||
// summary=Summaries;TypeBasedComplex<T>;false;FlatMap<S>;(System.Func<T,System.Collections.Generic.IEnumerable<S>>);;Argument[0].ReturnValue.Element;ReturnValue.SyntheticField[ArgType0];value;tb-generated
|
||||
// summary=Summaries;TypeBasedComplex<T>;false;FlatMap<S>;(System.Func<T,System.Collections.Generic.IEnumerable<S>>);;Argument[this].SyntheticField[ArgType0];Argument[0].Parameter[0];value;tb-generated
|
||||
public TypeBasedComplex<S> FlatMap<S>(Func<T, IEnumerable<S>> f) { throw null; }
|
||||
|
||||
// summary=Summaries;TypeBasedComplex<T>;false;GetMany;();;Argument[this].SyntheticField[ArgType0];ReturnValue.Element;value;tb-generated
|
||||
public IList<T> GetMany() { throw null; }
|
||||
|
||||
// summary=Summaries;TypeBasedComplex<T>;false;Map<S>;(System.Func<T,S>);;Argument[0].ReturnValue;ReturnValue;value;tb-generated
|
||||
// summary=Summaries;TypeBasedComplex<T>;false;Map<S>;(System.Func<T,S>);;Argument[this].SyntheticField[ArgType0];Argument[0].Parameter[0];value;tb-generated
|
||||
public S Map<S>(Func<T, S> f) { throw null; }
|
||||
|
||||
// summary=Summaries;TypeBasedComplex<T>;false;MapComplex<S>;(System.Func<T,S>);;Argument[0].ReturnValue;ReturnValue.SyntheticField[ArgType0];value;tb-generated
|
||||
// summary=Summaries;TypeBasedComplex<T>;false;MapComplex<S>;(System.Func<T,S>);;Argument[this].SyntheticField[ArgType0];Argument[0].Parameter[0];value;tb-generated
|
||||
public TypeBasedComplex<S> MapComplex<S>(Func<T, S> f) { throw null; }
|
||||
|
||||
// summary=Summaries;TypeBasedComplex<T>;false;Return;(System.Func<T,Summaries.TypeBasedComplex<T>>);;Argument[0].ReturnValue.SyntheticField[ArgType0];Argument[0].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;TypeBasedComplex<T>;false;Return;(System.Func<T,Summaries.TypeBasedComplex<T>>);;Argument[0].ReturnValue.SyntheticField[ArgType0];Argument[this].SyntheticField[ArgType0];value;tb-generated
|
||||
// summary=Summaries;TypeBasedComplex<T>;false;Return;(System.Func<T,Summaries.TypeBasedComplex<T>>);;Argument[0].ReturnValue.SyntheticField[ArgType0];ReturnValue.SyntheticField[ArgType0];value;tb-generated
|
||||
// summary=Summaries;TypeBasedComplex<T>;false;Return;(System.Func<T,Summaries.TypeBasedComplex<T>>);;Argument[this].SyntheticField[ArgType0];Argument[0].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;TypeBasedComplex<T>;false;Return;(System.Func<T,Summaries.TypeBasedComplex<T>>);;Argument[this].SyntheticField[ArgType0];ReturnValue.SyntheticField[ArgType0];value;tb-generated
|
||||
public TypeBasedComplex<T> Return(Func<T, TypeBasedComplex<T>> f) { throw null; }
|
||||
|
||||
public void Set(int x, Func<int, T> f) { throw null;}
|
||||
|
||||
// summary=Summaries;TypeBasedComplex<T>;false;Set;(System.Int32,System.Func<System.Int32,T>);;Argument[1].ReturnValue;Argument[this].SyntheticField[ArgType0];value;tb-generated
|
||||
public void Set(int x, Func<int, T> f) { throw null; }
|
||||
}
|
||||
|
||||
// It is assumed that this is a collection with elements of type T.
|
||||
public class TypeBasedCollection<T> : IEnumerable<T> {
|
||||
public class TypeBasedCollection<T> : IEnumerable<T>
|
||||
{
|
||||
IEnumerator<T> IEnumerable<T>.GetEnumerator() { throw null; }
|
||||
IEnumerator IEnumerable.GetEnumerator() { throw null; }
|
||||
|
||||
// summary=Summaries;TypeBasedCollection<T>;false;Add;(T);;Argument[0];Argument[this].Element;value;tb-generated
|
||||
public void Add(T x) { throw null; }
|
||||
|
||||
// summary=Summaries;TypeBasedCollection<T>;false;AddMany;(System.Collections.Generic.IEnumerable<T>);;Argument[0].Element;Argument[this].Element;value;tb-generated
|
||||
public void AddMany(IEnumerable<T> x) { throw null; }
|
||||
|
||||
// summary=Summaries;TypeBasedCollection<T>;false;First;();;Argument[this].Element;ReturnValue;value;tb-generated
|
||||
public T First() { throw null; }
|
||||
|
||||
// summary=Summaries;TypeBasedCollection<T>;false;GetMany;();;Argument[this].Element;ReturnValue.Element;value;tb-generated
|
||||
public ICollection<T> GetMany() { throw null; }
|
||||
}
|
||||
|
||||
// It is assumed that this is NOT a collection with elements of type T.
|
||||
public class TypeBasedNoCollection<T> : IEnumerable {
|
||||
public class TypeBasedNoCollection<T> : IEnumerable
|
||||
{
|
||||
IEnumerator IEnumerable.GetEnumerator() { throw null; }
|
||||
|
||||
// summary=Summaries;TypeBasedNoCollection<T>;false;Get;();;Argument[this].SyntheticField[ArgType0];ReturnValue;value;tb-generated
|
||||
public T Get() { throw null; }
|
||||
|
||||
// summary=Summaries;TypeBasedNoCollection<T>;false;Set;(T);;Argument[0];Argument[this].SyntheticField[ArgType0];value;tb-generated
|
||||
public void Set(T x) { throw null; }
|
||||
}
|
||||
|
||||
@@ -85,108 +129,307 @@ public class TypeBasedNoCollection<T> : IEnumerable {
|
||||
* In some cases we will not be able correctly generate a summary based purely on the
|
||||
* type information.
|
||||
*/
|
||||
public static class SystemLinqEnumerable {
|
||||
|
||||
public static class SystemLinqEnumerable
|
||||
{
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Aggregate<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TSource,TSource>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Aggregate<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TSource,TSource>);;Argument[0].Element;Argument[1].Parameter[1];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Aggregate<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TSource,TSource>);;Argument[0].Element;ReturnValue;value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Aggregate<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TSource,TSource>);;Argument[1].ReturnValue;Argument[1].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Aggregate<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TSource,TSource>);;Argument[1].ReturnValue;Argument[1].Parameter[1];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Aggregate<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TSource,TSource>);;Argument[1].ReturnValue;ReturnValue;value;tb-generated
|
||||
public static TSource Aggregate<TSource>(this IEnumerable<TSource> source, Func<TSource, TSource, TSource> func) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Aggregate<TSource,TAccumulate>;(System.Collections.Generic.IEnumerable<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>);;Argument[0].Element;Argument[2].Parameter[1];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Aggregate<TSource,TAccumulate>;(System.Collections.Generic.IEnumerable<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>);;Argument[1];Argument[2].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Aggregate<TSource,TAccumulate>;(System.Collections.Generic.IEnumerable<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>);;Argument[1];ReturnValue;value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Aggregate<TSource,TAccumulate>;(System.Collections.Generic.IEnumerable<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>);;Argument[2].ReturnValue;Argument[2].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Aggregate<TSource,TAccumulate>;(System.Collections.Generic.IEnumerable<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>);;Argument[2].ReturnValue;ReturnValue;value;tb-generated
|
||||
public static TAccumulate Aggregate<TSource, TAccumulate>(this IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> func) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Aggregate<TSource,TAccumulate,TResult>;(System.Collections.Generic.IEnumerable<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>,System.Func<TAccumulate,TResult>);;Argument[0].Element;Argument[2].Parameter[1];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Aggregate<TSource,TAccumulate,TResult>;(System.Collections.Generic.IEnumerable<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>,System.Func<TAccumulate,TResult>);;Argument[1];Argument[2].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Aggregate<TSource,TAccumulate,TResult>;(System.Collections.Generic.IEnumerable<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>,System.Func<TAccumulate,TResult>);;Argument[1];Argument[3].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Aggregate<TSource,TAccumulate,TResult>;(System.Collections.Generic.IEnumerable<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>,System.Func<TAccumulate,TResult>);;Argument[2].ReturnValue;Argument[2].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Aggregate<TSource,TAccumulate,TResult>;(System.Collections.Generic.IEnumerable<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>,System.Func<TAccumulate,TResult>);;Argument[2].ReturnValue;Argument[3].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Aggregate<TSource,TAccumulate,TResult>;(System.Collections.Generic.IEnumerable<TSource>,TAccumulate,System.Func<TAccumulate,TSource,TAccumulate>,System.Func<TAccumulate,TResult>);;Argument[3].ReturnValue;ReturnValue;value;tb-generated
|
||||
public static TResult Aggregate<TSource, TAccumulate, TResult>(this IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> func, Func<TAccumulate, TResult> resultSelector) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;All<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated
|
||||
public static bool All<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) { throw null; }
|
||||
public static bool Any<TSource>(this IEnumerable<TSource> source) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Any<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated
|
||||
public static bool Any<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Append<TSource>;(System.Collections.Generic.IEnumerable<TSource>,TSource);;Argument[0].Element;ReturnValue.Element;value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Append<TSource>;(System.Collections.Generic.IEnumerable<TSource>,TSource);;Argument[1];ReturnValue.Element;value;tb-generated
|
||||
public static IEnumerable<TSource> Append<TSource>(this IEnumerable<TSource> source, TSource element) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;AsEnumerable<TSource>;(System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue.Element;value;tb-generated
|
||||
public static IEnumerable<TSource> AsEnumerable<TSource>(this IEnumerable<TSource> source) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Average<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Decimal>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated
|
||||
public static decimal Average<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal> selector) { throw null; }
|
||||
|
||||
// Summary will not be derivables based on type information.
|
||||
// public static IEnumerable<TResult> Cast<TResult>(this IEnumerable source) { throw null; }
|
||||
public static IEnumerable<TSource[]> Chunk<TSource>(this IEnumerable<TSource> source, int size) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Concat<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue.Element;value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Concat<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Argument[1].Element;ReturnValue.Element;value;tb-generated
|
||||
public static IEnumerable<TSource> Concat<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second) { throw null; }
|
||||
|
||||
public static bool Contains<TSource>(this IEnumerable<TSource> source, TSource value) { throw null; }
|
||||
|
||||
public static int Count<TSource>(this IEnumerable<TSource> source) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Count<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated
|
||||
public static int Count<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;DefaultIfEmpty<TSource>;(System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue.Element;value;tb-generated
|
||||
public static IEnumerable<TSource?> DefaultIfEmpty<TSource>(this IEnumerable<TSource> source) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;DefaultIfEmpty<TSource>;(System.Collections.Generic.IEnumerable<TSource>,TSource);;Argument[0].Element;ReturnValue.Element;value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;DefaultIfEmpty<TSource>;(System.Collections.Generic.IEnumerable<TSource>,TSource);;Argument[1];ReturnValue.Element;value;tb-generated
|
||||
public static IEnumerable<TSource> DefaultIfEmpty<TSource>(this IEnumerable<TSource> source, TSource defaultValue) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;DistinctBy<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;DistinctBy<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;ReturnValue.Element;value;tb-generated
|
||||
public static IEnumerable<TSource> DistinctBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Distinct<TSource>;(System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue.Element;value;tb-generated
|
||||
public static IEnumerable<TSource> Distinct<TSource>(this IEnumerable<TSource> source) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;ElementAtOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Int32);;Argument[0].Element;ReturnValue;value;tb-generated
|
||||
public static TSource? ElementAtOrDefault<TSource>(this IEnumerable<TSource> source, int index) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;ElementAt<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Int32);;Argument[0].Element;ReturnValue;value;tb-generated
|
||||
public static TSource ElementAt<TSource>(this IEnumerable<TSource> source, int index) { throw null; }
|
||||
|
||||
public static IEnumerable<TResult> Empty<TResult>() { throw null; }
|
||||
|
||||
// These summaries will not be derivable based on type information.
|
||||
// public static IEnumerable<TSource> ExceptBy<TSource, TKey>(this IEnumerable<TSource> first, IEnumerable<TKey> second, Func<TSource, TKey> keySelector) { throw null; }
|
||||
// public static IEnumerable<TSource> Except<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;FirstOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue;value;tb-generated
|
||||
public static TSource? FirstOrDefault<TSource>(this IEnumerable<TSource> source) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;FirstOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>,TSource);;Argument[0].Element;ReturnValue;value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;FirstOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>,TSource);;Argument[1];ReturnValue;value;tb-generated
|
||||
public static TSource FirstOrDefault<TSource>(this IEnumerable<TSource> source, TSource defaultValue) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;FirstOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;FirstOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;ReturnValue;value;tb-generated
|
||||
public static TSource? FirstOrDefault<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) { throw null; }
|
||||
|
||||
// Summary will not be correctly derivable based on type information.
|
||||
// public static TSource FirstOrDefault<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate, TSource defaultValue) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;First<TSource>;(System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue;value;tb-generated
|
||||
public static TSource First<TSource>(this IEnumerable<TSource> source) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;First<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;First<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;ReturnValue;value;tb-generated
|
||||
public static TSource First<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) { throw null; }
|
||||
|
||||
// Missing summary for Argument[0].Element -> Argument[2].Parameter[1].Element and similar problem for GroupJoin (issue with generator)
|
||||
// public static IEnumerable<TResult> GroupBy<TSource, TKey, TResult>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TKey, IEnumerable<TSource>, TResult> resultSelector) { throw null; }
|
||||
// public static IEnumerable<TResult> GroupJoin<TOuter, TInner, TKey, TResult>(this IEnumerable<TOuter> outer, IEnumerable<TInner> inner, Func<TOuter, TKey> outerKeySelector, Func<TInner, TKey> innerKeySelector, Func<TOuter, IEnumerable<TInner>, TResult> resultSelector) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;IntersectBy<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TKey>,System.Func<TSource,TKey>);;Argument[0].Element;Argument[2].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;IntersectBy<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TKey>,System.Func<TSource,TKey>);;Argument[0].Element;ReturnValue.Element;value;tb-generated
|
||||
public static IEnumerable<TSource> IntersectBy<TSource, TKey>(this IEnumerable<TSource> first, IEnumerable<TKey> second, Func<TSource, TKey> keySelector) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Intersect<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue.Element;value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Intersect<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Argument[1].Element;ReturnValue.Element;value;tb-generated
|
||||
public static IEnumerable<TSource> Intersect<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Join<TOuter,TInner,TKey,TResult>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Join<TOuter,TInner,TKey,TResult>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>);;Argument[0].Element;Argument[4].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Join<TOuter,TInner,TKey,TResult>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>);;Argument[1].Element;Argument[3].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Join<TOuter,TInner,TKey,TResult>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>);;Argument[1].Element;Argument[4].Parameter[1];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Join<TOuter,TInner,TKey,TResult>;(System.Collections.Generic.IEnumerable<TOuter>,System.Collections.Generic.IEnumerable<TInner>,System.Func<TOuter,TKey>,System.Func<TInner,TKey>,System.Func<TOuter,TInner,TResult>);;Argument[4].ReturnValue;ReturnValue.Element;value;tb-generated
|
||||
public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>(this IEnumerable<TOuter> outer, IEnumerable<TInner> inner, Func<TOuter, TKey> outerKeySelector, Func<TInner, TKey> innerKeySelector, Func<TOuter, TInner, TResult> resultSelector) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;LastOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue;value;tb-generated
|
||||
public static TSource? LastOrDefault<TSource>(this IEnumerable<TSource> source) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;LastOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>,TSource);;Argument[0].Element;ReturnValue;value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;LastOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>,TSource);;Argument[1];ReturnValue;value;tb-generated
|
||||
public static TSource LastOrDefault<TSource>(this IEnumerable<TSource> source, TSource defaultValue) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;LastOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;LastOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;ReturnValue;value;tb-generated
|
||||
public static TSource? LastOrDefault<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) { throw null; }
|
||||
|
||||
// Summary will not be correctly derivable based on type information (same problem as for FirstOrDefault)
|
||||
// public static TSource LastOrDefault<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate, TSource defaultValue) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Last<TSource>;(System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue;value;tb-generated
|
||||
public static TSource Last<TSource>(this IEnumerable<TSource> source) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Last<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Last<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;ReturnValue;value;tb-generated
|
||||
public static TSource Last<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;LongCount<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated
|
||||
public static long LongCount<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;MaxBy<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;MaxBy<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;ReturnValue;value;tb-generated
|
||||
public static TSource? MaxBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Max<TSource>;(System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue;value;tb-generated
|
||||
public static TSource? Max<TSource>(this IEnumerable<TSource> source) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Max<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Decimal>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated
|
||||
public static decimal Max<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal> selector) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Max<TSource,TResult>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Max<TSource,TResult>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TResult>);;Argument[1].ReturnValue;ReturnValue;value;tb-generated
|
||||
public static TResult? Max<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> selector) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;MinBy<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;MinBy<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;ReturnValue;value;tb-generated
|
||||
public static TSource? MinBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Min<TSource>;(System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue;value;tb-generated
|
||||
public static TSource? Min<TSource>(this IEnumerable<TSource> source) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Min<TSource,TResult>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Min<TSource,TResult>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TResult>);;Argument[1].ReturnValue;ReturnValue;value;tb-generated
|
||||
public static TResult? Min<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> selector) { throw null; }
|
||||
|
||||
// These summaries will not be derivable based on type information.
|
||||
// public static IEnumerable<TResult> OfType<TResult>(this IEnumerable source) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;OrderByDescending<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;OrderByDescending<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;ReturnValue.Element;value;tb-generated
|
||||
public static IOrderedEnumerable<TSource> OrderByDescending<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;OrderBy<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;OrderBy<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;ReturnValue.Element;value;tb-generated
|
||||
public static IOrderedEnumerable<TSource> OrderBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Prepend<TSource>;(System.Collections.Generic.IEnumerable<TSource>,TSource);;Argument[0].Element;ReturnValue.Element;value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Prepend<TSource>;(System.Collections.Generic.IEnumerable<TSource>,TSource);;Argument[1];ReturnValue.Element;value;tb-generated
|
||||
public static IEnumerable<TSource> Prepend<TSource>(this IEnumerable<TSource> source, TSource element) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Repeat<TResult>;(TResult,System.Int32);;Argument[0];ReturnValue.Element;value;tb-generated
|
||||
public static IEnumerable<TResult> Repeat<TResult>(TResult element, int count) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Reverse<TSource>;(System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue.Element;value;tb-generated
|
||||
public static IEnumerable<TSource> Reverse<TSource>(this IEnumerable<TSource> source) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;SelectMany<TSource,TResult>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Collections.Generic.IEnumerable<TResult>>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;SelectMany<TSource,TResult>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Collections.Generic.IEnumerable<TResult>>);;Argument[1].ReturnValue.Element;ReturnValue.Element;value;tb-generated
|
||||
public static IEnumerable<TResult> SelectMany<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, IEnumerable<TResult>> selector) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;SelectMany<TSource,TCollection,TResult>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Collections.Generic.IEnumerable<TCollection>>,System.Func<TSource,TCollection,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;SelectMany<TSource,TCollection,TResult>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Collections.Generic.IEnumerable<TCollection>>,System.Func<TSource,TCollection,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;SelectMany<TSource,TCollection,TResult>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Collections.Generic.IEnumerable<TCollection>>,System.Func<TSource,TCollection,TResult>);;Argument[1].ReturnValue.Element;Argument[2].Parameter[1];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;SelectMany<TSource,TCollection,TResult>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Collections.Generic.IEnumerable<TCollection>>,System.Func<TSource,TCollection,TResult>);;Argument[2].ReturnValue;ReturnValue.Element;value;tb-generated
|
||||
public static IEnumerable<TResult> SelectMany<TSource, TCollection, TResult>(this IEnumerable<TSource> source, Func<TSource, IEnumerable<TCollection>> collectionSelector, Func<TSource, TCollection, TResult> resultSelector) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Select<TSource,TResult>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TResult>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Select<TSource,TResult>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TResult>);;Argument[1].ReturnValue;ReturnValue.Element;value;tb-generated
|
||||
public static IEnumerable<TResult> Select<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> selector) { throw null; }
|
||||
|
||||
public static bool SequenceEqual<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;SingleOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue;value;tb-generated
|
||||
public static TSource? SingleOrDefault<TSource>(this IEnumerable<TSource> source) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;SingleOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>,TSource);;Argument[0].Element;ReturnValue;value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;SingleOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>,TSource);;Argument[1];ReturnValue;value;tb-generated
|
||||
public static TSource SingleOrDefault<TSource>(this IEnumerable<TSource> source, TSource defaultValue) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;SingleOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;SingleOrDefault<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;ReturnValue;value;tb-generated
|
||||
public static TSource? SingleOrDefault<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) { throw null; }
|
||||
|
||||
// Summary will not be correctly derivable based on type information (same problem as for FirstOrDefault)
|
||||
// public static TSource SingleOrDefault<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate, TSource defaultValue) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Single<TSource>;(System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue;value;tb-generated
|
||||
public static TSource Single<TSource>(this IEnumerable<TSource> source) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Single<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Single<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;ReturnValue;value;tb-generated
|
||||
public static TSource Single<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;SkipLast<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Int32);;Argument[0].Element;ReturnValue.Element;value;tb-generated
|
||||
public static IEnumerable<TSource> SkipLast<TSource>(this IEnumerable<TSource> source, int count) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;SkipWhile<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;SkipWhile<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;ReturnValue.Element;value;tb-generated
|
||||
public static IEnumerable<TSource> SkipWhile<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Skip<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Int32);;Argument[0].Element;ReturnValue.Element;value;tb-generated
|
||||
public static IEnumerable<TSource> Skip<TSource>(this IEnumerable<TSource> source, int count) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;TakeLast<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Int32);;Argument[0].Element;ReturnValue.Element;value;tb-generated
|
||||
public static IEnumerable<TSource> TakeLast<TSource>(this IEnumerable<TSource> source, int count) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;TakeWhile<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;TakeWhile<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;ReturnValue.Element;value;tb-generated
|
||||
public static IEnumerable<TSource> TakeWhile<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Take<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Int32);;Argument[0].Element;ReturnValue.Element;value;tb-generated
|
||||
public static IEnumerable<TSource> Take<TSource>(this IEnumerable<TSource> source, int count) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;ThenByDescending<TSource,TKey>;(Summaries.IOrderedEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;ThenByDescending<TSource,TKey>;(Summaries.IOrderedEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;ReturnValue.Element;value;tb-generated
|
||||
public static IOrderedEnumerable<TSource> ThenByDescending<TSource, TKey>(this IOrderedEnumerable<TSource> source, Func<TSource, TKey> keySelector) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;ThenBy<TSource,TKey>;(Summaries.IOrderedEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;ThenBy<TSource,TKey>;(Summaries.IOrderedEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;ReturnValue.Element;value;tb-generated
|
||||
public static IOrderedEnumerable<TSource> ThenBy<TSource, TKey>(this IOrderedEnumerable<TSource> source, Func<TSource, TKey> keySelector) { throw null; }
|
||||
|
||||
// Missing summary for Argument[0].Element -> ReturnValue.Element (issue with generator)
|
||||
// public static TSource[] ToArray<TSource>(this IEnumerable<TSource> source) { throw null; }
|
||||
// Summaries related to dictionaries is not generated correctly as dictionaries are not identified as collections of keys and values (issue with generator).
|
||||
// public static Dictionary<TKey, TSource> ToDictionary<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector) where TKey : notnull { throw null; }
|
||||
// public static Dictionary<TKey, TElement> ToDictionary<TSource, TKey, TElement>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector) where TKey : notnull { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;ToHashSet<TSource>;(System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue.Element;value;tb-generated
|
||||
public static HashSet<TSource> ToHashSet<TSource>(this IEnumerable<TSource> source) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;ToList<TSource>;(System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue.Element;value;tb-generated
|
||||
public static List<TSource> ToList<TSource>(this IEnumerable<TSource> source) { throw null; }
|
||||
|
||||
// Type to complicated to be handled by the generator (issue with generator).
|
||||
// public static ILookup<TKey, TSource> ToLookup<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector) { throw null; }
|
||||
// public static ILookup<TKey, TElement> ToLookup<TSource, TKey, TElement>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;UnionBy<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;Argument[2].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;UnionBy<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[0].Element;ReturnValue.Element;value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;UnionBy<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[1].Element;Argument[2].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;UnionBy<TSource,TKey>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TKey>);;Argument[1].Element;ReturnValue.Element;value;tb-generated
|
||||
public static IEnumerable<TSource> UnionBy<TSource, TKey>(this IEnumerable<TSource> first, IEnumerable<TSource> second, Func<TSource, TKey> keySelector) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Union<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Argument[0].Element;ReturnValue.Element;value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Union<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Collections.Generic.IEnumerable<TSource>);;Argument[1].Element;ReturnValue.Element;value;tb-generated
|
||||
public static IEnumerable<TSource> Union<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Where<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;Argument[1].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Where<TSource>;(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,System.Boolean>);;Argument[0].Element;ReturnValue.Element;value;tb-generated
|
||||
public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) { throw null; }
|
||||
|
||||
// Type to complicated to be handled by the generator (issue with generator).
|
||||
// public static IEnumerable<(TFirst First, TSecond Second)> Zip<TFirst, TSecond>(this IEnumerable<TFirst> first, IEnumerable<TSecond> second) { throw null; }
|
||||
// public static IEnumerable<(TFirst First, TSecond Second, TThird Third)> Zip<TFirst, TSecond, TThird>(this IEnumerable<TFirst> first, IEnumerable<TSecond> second, IEnumerable<TThird> third) { throw null; }
|
||||
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Zip<TFirst,TSecond,TResult>;(System.Collections.Generic.IEnumerable<TFirst>,System.Collections.Generic.IEnumerable<TSecond>,System.Func<TFirst,TSecond,TResult>);;Argument[0].Element;Argument[2].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Zip<TFirst,TSecond,TResult>;(System.Collections.Generic.IEnumerable<TFirst>,System.Collections.Generic.IEnumerable<TSecond>,System.Func<TFirst,TSecond,TResult>);;Argument[1].Element;Argument[2].Parameter[1];value;tb-generated
|
||||
// summary=Summaries;SystemLinqEnumerable;false;Zip<TFirst,TSecond,TResult>;(System.Collections.Generic.IEnumerable<TFirst>,System.Collections.Generic.IEnumerable<TSecond>,System.Func<TFirst,TSecond,TResult>);;Argument[2].ReturnValue;ReturnValue.Element;value;tb-generated
|
||||
public static IEnumerable<TResult> Zip<TFirst, TSecond, TResult>(this IEnumerable<TFirst> first, IEnumerable<TSecond> second, Func<TFirst, TSecond, TResult> resultSelector) { throw null; }
|
||||
}
|
||||
|
||||
public interface IGrouping<out TKey, out TElement> : IEnumerable<TElement>, IEnumerable {
|
||||
public interface IGrouping<out TKey, out TElement> : IEnumerable<TElement>, IEnumerable
|
||||
{
|
||||
// summary=Summaries;IGrouping<TKey,TElement>;true;get_Key;();;Argument[this].SyntheticField[ArgType0];ReturnValue;value;tb-generated
|
||||
TKey Key { get; }
|
||||
}
|
||||
|
||||
@@ -195,7 +438,10 @@ public interface IGrouping<out TKey, out TElement> : IEnumerable<TElement>, IEnu
|
||||
// bool Contains(TKey key);
|
||||
// }
|
||||
|
||||
public interface IOrderedEnumerable<out TElement> : IEnumerable<TElement>, IEnumerable {
|
||||
public interface IOrderedEnumerable<out TElement> : IEnumerable<TElement>, IEnumerable
|
||||
{
|
||||
// summary=Summaries;IOrderedEnumerable<TElement>;true;CreateOrderedEnumerable<TKey>;(System.Func<TElement,TKey>,System.Collections.Generic.IComparer<TKey>,System.Boolean);;Argument[this].Element;Argument[0].Parameter[0];value;tb-generated
|
||||
// summary=Summaries;IOrderedEnumerable<TElement>;true;CreateOrderedEnumerable<TKey>;(System.Func<TElement,TKey>,System.Collections.Generic.IComparer<TKey>,System.Boolean);;Argument[this].Element;ReturnValue.Element;value;tb-generated
|
||||
IOrderedEnumerable<TElement> CreateOrderedEnumerable<TKey>(Func<TElement, TKey> keySelector, IComparer<TKey>? comparer, bool descending);
|
||||
}
|
||||
|
||||
|
||||
@@ -408,7 +408,7 @@ Exercise 4
|
||||
Further reading
|
||||
---------------
|
||||
|
||||
- ":ref:`Exploring data flow with path queries <exploring-data-flow-with-path-queries>`"
|
||||
- `Exploring data flow with path queries <https://docs.github.com/en/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/exploring-data-flow-with-path-queries>`__ in the GitHub documentation.
|
||||
|
||||
|
||||
.. include:: ../reusables/cpp-further-reading.rst
|
||||
|
||||
@@ -380,7 +380,7 @@ Exercise 4
|
||||
Further reading
|
||||
---------------
|
||||
|
||||
- ":ref:`Exploring data flow with path queries <exploring-data-flow-with-path-queries>`"
|
||||
- `Exploring data flow with path queries <https://docs.github.com/en/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/exploring-data-flow-with-path-queries>`__ in the GitHub documentation.
|
||||
|
||||
|
||||
.. include:: ../reusables/cpp-further-reading.rst
|
||||
|
||||
@@ -541,7 +541,7 @@ This can be adapted from the ``SystemUriFlow`` class:
|
||||
Further reading
|
||||
---------------
|
||||
|
||||
- ":ref:`Exploring data flow with path queries <exploring-data-flow-with-path-queries>`"
|
||||
- `Exploring data flow with path queries <https://docs.github.com/en/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/exploring-data-flow-with-path-queries>`__ in the GitHub documentation.
|
||||
|
||||
|
||||
.. include:: ../reusables/csharp-further-reading.rst
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
Analyzing data flow in Java and Kotlin
|
||||
======================================
|
||||
|
||||
You can use CodeQL to track the flow of data through a Java/Kotlin program to its use.
|
||||
You can use CodeQL to track the flow of data through a Java/Kotlin program to its use.
|
||||
|
||||
.. include:: ../reusables/kotlin-beta-note.rst
|
||||
|
||||
@@ -171,7 +171,7 @@ Global data flow tracks data flow throughout the entire program, and is therefor
|
||||
.. pull-quote:: Note
|
||||
|
||||
.. include:: ../reusables/path-problem.rst
|
||||
|
||||
|
||||
Using global data flow
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@@ -362,7 +362,7 @@ Exercise 4
|
||||
Further reading
|
||||
---------------
|
||||
|
||||
- ":ref:`Exploring data flow with path queries <exploring-data-flow-with-path-queries>`"
|
||||
- `Exploring data flow with path queries <https://docs.github.com/en/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/exploring-data-flow-with-path-queries>`__ in the GitHub documentation.
|
||||
|
||||
|
||||
.. include:: ../reusables/java-further-reading.rst
|
||||
|
||||
@@ -16,7 +16,7 @@ For a more general introduction to modeling data flow, see ":ref:`About data flo
|
||||
Data flow nodes
|
||||
---------------
|
||||
|
||||
Both local and global data flow, as well as taint tracking, work on a representation of the program known as the :ref:`data flow graph <data-flow-graph>`.
|
||||
Both local and global data flow, as well as taint tracking, work on a representation of the program known as the :ref:`data flow graph <data-flow-graph>`.
|
||||
Nodes on the data flow flow graph may also correspond to nodes on the abstract syntax tree, but they are not the same.
|
||||
While AST nodes belong to class ``ASTNode`` and its subclasses, data flow nodes belong to class ``DataFlow::Node`` and its subclasses:
|
||||
|
||||
@@ -557,8 +557,8 @@ Exercise 4
|
||||
Further reading
|
||||
---------------
|
||||
|
||||
- ":ref:`Exploring data flow with path queries <exploring-data-flow-with-path-queries>`"
|
||||
- `Exploring data flow with path queries <https://docs.github.com/en/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/exploring-data-flow-with-path-queries>`__ in the GitHub documentation.
|
||||
|
||||
|
||||
.. include:: ../reusables/java-further-reading.rst
|
||||
.. include:: ../reusables/codeql-ref-tools-further-reading.rst
|
||||
.. include:: ../reusables/codeql-ref-tools-further-reading.rst
|
||||
|
||||
@@ -359,7 +359,7 @@ This data flow configuration tracks data flow from environment variables to open
|
||||
Further reading
|
||||
---------------
|
||||
|
||||
- ":ref:`Exploring data flow with path queries <exploring-data-flow-with-path-queries>`"
|
||||
- `Exploring data flow with path queries <https://docs.github.com/en/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/exploring-data-flow-with-path-queries>`__ in the GitHub documentation.
|
||||
|
||||
|
||||
.. include:: ../reusables/python-further-reading.rst
|
||||
|
||||
@@ -111,7 +111,7 @@ This query finds the filename argument passed in each call to ``File.open``:
|
||||
|
||||
import codeql.ruby.DataFlow
|
||||
import codeql.ruby.ApiGraphs
|
||||
|
||||
|
||||
from DataFlow::CallNode call
|
||||
where call = API::getTopLevelMember("File").getAMethodCall("open")
|
||||
select call.getArgument(0)
|
||||
@@ -126,7 +126,7 @@ So we use local data flow to find all expressions that flow into the argument:
|
||||
|
||||
import codeql.ruby.DataFlow
|
||||
import codeql.ruby.ApiGraphs
|
||||
|
||||
|
||||
from DataFlow::CallNode call, DataFlow::ExprNode expr
|
||||
where
|
||||
call = API::getTopLevelMember("File").getAMethodCall("open") and
|
||||
@@ -143,7 +143,7 @@ We can update the query to specify that ``expr`` is an instance of a ``LocalSour
|
||||
|
||||
import codeql.ruby.DataFlow
|
||||
import codeql.ruby.ApiGraphs
|
||||
|
||||
|
||||
from DataFlow::CallNode call, DataFlow::ExprNode expr
|
||||
where
|
||||
call = API::getTopLevelMember("File").getAMethodCall("open") and
|
||||
@@ -158,7 +158,7 @@ That would allow us to use the member predicate ``flowsTo`` on ``LocalSourceNode
|
||||
|
||||
import codeql.ruby.DataFlow
|
||||
import codeql.ruby.ApiGraphs
|
||||
|
||||
|
||||
from DataFlow::CallNode call, DataFlow::ExprNode expr
|
||||
where
|
||||
call = API::getTopLevelMember("File").getAMethodCall("open") and
|
||||
@@ -171,7 +171,7 @@ As an alternative, we can ask more directly that ``expr`` is a local source of t
|
||||
|
||||
import codeql.ruby.DataFlow
|
||||
import codeql.ruby.ApiGraphs
|
||||
|
||||
|
||||
from DataFlow::CallNode call, DataFlow::ExprNode expr
|
||||
where
|
||||
call = API::getTopLevelMember("File").getAMethodCall("open") and
|
||||
@@ -190,7 +190,7 @@ This query finds instances where a parameter is used as the name when opening a
|
||||
|
||||
import codeql.ruby.DataFlow
|
||||
import codeql.ruby.ApiGraphs
|
||||
|
||||
|
||||
from DataFlow::CallNode call, DataFlow::ParameterNode p
|
||||
where
|
||||
call = API::getTopLevelMember("File").getAMethodCall("open") and
|
||||
@@ -206,7 +206,7 @@ This query finds calls to ``File.open`` where the file name is derived from a pa
|
||||
import codeql.ruby.DataFlow
|
||||
import codeql.ruby.TaintTracking
|
||||
import codeql.ruby.ApiGraphs
|
||||
|
||||
|
||||
from DataFlow::CallNode call, DataFlow::ParameterNode p
|
||||
where
|
||||
call = API::getTopLevelMember("File").getAMethodCall("open") and
|
||||
@@ -327,17 +327,17 @@ The following global taint-tracking query finds path arguments in filesystem acc
|
||||
import codeql.ruby.TaintTracking
|
||||
import codeql.ruby.Concepts
|
||||
import codeql.ruby.dataflow.RemoteFlowSources
|
||||
|
||||
|
||||
module RemoteToFileConfiguration implements DataFlow::ConfigSig {
|
||||
predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource }
|
||||
|
||||
|
||||
predicate isSink(DataFlow::Node sink) {
|
||||
sink = any(FileSystemAccess fa).getAPathArgument()
|
||||
}
|
||||
}
|
||||
|
||||
module RemoteToFileFlow = TaintTracking::Global<RemoteToFileConfiguration>;
|
||||
|
||||
|
||||
from DataFlow::Node input, DataFlow::Node fileAccess
|
||||
where RemoteToFileFlow::flow(input, fileAccess)
|
||||
select fileAccess, "This file access uses data from $@.", input, "user-controllable input."
|
||||
@@ -352,7 +352,7 @@ The following global data-flow query finds calls to ``File.open`` where the file
|
||||
import codeql.ruby.DataFlow
|
||||
import codeql.ruby.controlflow.CfgNodes
|
||||
import codeql.ruby.ApiGraphs
|
||||
|
||||
|
||||
module EnvironmentToFileConfiguration implements DataFlow::ConfigSig {
|
||||
predicate isSource(DataFlow::Node source) {
|
||||
exists(ExprNodes::ConstantReadAccessCfgNode env |
|
||||
@@ -367,7 +367,7 @@ The following global data-flow query finds calls to ``File.open`` where the file
|
||||
}
|
||||
|
||||
module EnvironmentToFileFlow = DataFlow::Global<EnvironmentToFileConfiguration>;
|
||||
|
||||
|
||||
from DataFlow::Node environment, DataFlow::Node fileOpen
|
||||
where EnvironmentToFileFlow::flow(environment, fileOpen)
|
||||
select fileOpen, "This call to 'File.open' uses data from $@.", environment,
|
||||
@@ -376,7 +376,7 @@ The following global data-flow query finds calls to ``File.open`` where the file
|
||||
Further reading
|
||||
---------------
|
||||
|
||||
- ":ref:`Exploring data flow with path queries <exploring-data-flow-with-path-queries>`"
|
||||
- `Exploring data flow with path queries <https://docs.github.com/en/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/exploring-data-flow-with-path-queries>`__ in the GitHub documentation.
|
||||
|
||||
|
||||
.. include:: ../reusables/ruby-further-reading.rst
|
||||
|
||||
@@ -34,7 +34,7 @@ The ``Node`` class has a number of useful subclasses, such as ``ExprNode`` for e
|
||||
Expr asExpr() { ... }
|
||||
|
||||
/**
|
||||
* Gets the control flow node that corresponds to this data flow node.
|
||||
* Gets the control flow node that corresponds to this data flow node.
|
||||
*/
|
||||
ControlFlowNode getCfgNode() { ... }
|
||||
|
||||
@@ -284,7 +284,7 @@ The following global taint-tracking query finds places where a value from a remo
|
||||
Further reading
|
||||
---------------
|
||||
|
||||
- ":ref:`Exploring data flow with path queries <exploring-data-flow-with-path-queries>`"
|
||||
- `Exploring data flow with path queries <https://docs.github.com/en/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/exploring-data-flow-with-path-queries>`__ in the GitHub documentation.
|
||||
|
||||
|
||||
.. include:: ../reusables/swift-further-reading.rst
|
||||
|
||||
@@ -16,7 +16,8 @@ This article contains reference material about how to define custom models for s
|
||||
|
||||
The best way to create your own models is using the CodeQL model editor in the CodeQL extension for Visual Studio Code. The model editor automatically guides you through the process of defining models, displaying the properties you need to define and the options available. You can save the resulting models as data extension files in CodeQL model packs and use them without worrying about the syntax.
|
||||
|
||||
For more information, see ":ref:`Using the CodeQL model editor <using-the-codeql-model-editor>`."
|
||||
For more information, see `Using the CodeQL model editor <https://docs.github.com/en/code-security/codeql-for-vs-code/using-the-advanced-functionality-of-the-codeql-for-vs-code-extension/using-the-codeql-model-editor>`__ in the GitHub documentation.
|
||||
|
||||
|
||||
About data extensions
|
||||
---------------------
|
||||
|
||||
@@ -254,8 +254,8 @@ Troubleshooting
|
||||
Further reading
|
||||
---------------
|
||||
|
||||
- ":ref:`Exploring data flow with path queries <exploring-data-flow-with-path-queries>`"
|
||||
- `Exploring data flow with path queries <https://docs.github.com/en/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/exploring-data-flow-with-path-queries>`__ in the GitHub documentation.
|
||||
|
||||
|
||||
.. include:: ../reusables/javascript-further-reading.rst
|
||||
.. include:: ../reusables/codeql-ref-tools-further-reading.rst
|
||||
.. include:: ../reusables/codeql-ref-tools-further-reading.rst
|
||||
|
||||
@@ -405,7 +405,7 @@ string may be an absolute path and whether it may contain ``..`` components.
|
||||
Further reading
|
||||
---------------
|
||||
|
||||
- ":ref:`Exploring data flow with path queries <exploring-data-flow-with-path-queries>`"
|
||||
- `Exploring data flow with path queries <https://docs.github.com/en/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/exploring-data-flow-with-path-queries>`__ in the GitHub documentation.
|
||||
|
||||
|
||||
.. include:: ../reusables/javascript-further-reading.rst
|
||||
|
||||
@@ -61,7 +61,7 @@ The DIL format may change without warning between CLI releases.
|
||||
When you specify the ``--dump-dil`` option for ``codeql query compile``, CodeQL
|
||||
prints DIL to standard output for the queries it compiles. You can also
|
||||
view results in DIL format when you run queries in VS Code.
|
||||
For more information, see ":ref:`Analyzing your projects <viewing-query-results>`" in the CodeQL for VS Code help.
|
||||
For more information, see `Running CodeQL queries <https://docs.github.com/en/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/running-codeql-queries#understanding-your-query-results>`__ in the GitHub documentation.
|
||||
|
||||
.. _extractor:
|
||||
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
#
|
||||
# The Sphinx config values used in the CodeQL documentation that is published
|
||||
# at codeql.github.com/docs
|
||||
#
|
||||
#
|
||||
# Note that not all possible configuration values are present in this file.
|
||||
#
|
||||
# All configuration values have a default; values that are commented out
|
||||
# serve to show the default.
|
||||
#
|
||||
# For details of all possible config values,
|
||||
# For details of all possible config values,
|
||||
# see https://www.sphinx-doc.org/en/master/usage/configuration.html
|
||||
#
|
||||
# -- GENERAL CONFIG VALUES ------------------------------------------------
|
||||
@@ -53,7 +53,7 @@ import sphinx as sphinx_mod
|
||||
|
||||
|
||||
def setup(sphinx):
|
||||
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||||
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||||
from qllexer import QLLexer
|
||||
sphinx.add_lexer("ql", QLLexer() if sphinx_mod.version_info[0] <= 3 else QLLexer)
|
||||
|
||||
@@ -86,7 +86,7 @@ html_theme = 'alabaster'
|
||||
|
||||
# HTML theme options used to customize the look and feel of the docs.
|
||||
html_theme_options = {'font_size': '16px',
|
||||
'body_text': '#333',
|
||||
'body_text': '#333',
|
||||
'link': '#2F1695',
|
||||
'link_hover': '#2F1695',
|
||||
'show_powered_by': False,
|
||||
@@ -106,4 +106,4 @@ html_extra_path = ['index.html']
|
||||
html_favicon = 'images/site/favicon.ico'
|
||||
|
||||
# Exclude these paths from being built by Sphinx
|
||||
exclude_patterns = ['vale*', '_static', '_templates', 'reusables', 'images', 'support', 'ql-training', 'query-help', '_build', '*.py*', 'README.rst']
|
||||
exclude_patterns = ['vale*', '_static', '_templates', 'reusables', 'images', 'support', 'ql-training', 'query-help', '_build', '*.py*', 'README.rst', 'codeql-for-visual-studio-code']
|
||||
|
||||
@@ -6,7 +6,6 @@ CodeQL documentation
|
||||
:maxdepth: 3
|
||||
|
||||
codeql-overview/index
|
||||
codeql-for-visual-studio-code/index
|
||||
writing-codeql-queries/index
|
||||
codeql-language-guides/index
|
||||
ql-language-reference/index
|
||||
|
||||
@@ -3,6 +3,5 @@
|
||||
Note
|
||||
|
||||
You can use the CodeQL template (beta) in `GitHub Codespaces <https://github.com/codespaces/new?template_repository=github/codespaces-codeql>`__ to try out the QL concepts and programming-language-agnostic examples in these tutorials. The template includes a guided introduction to working with QL, and makes it easy to get started.
|
||||
|
||||
When you're ready to run CodeQL queries on actual codebases, you will need to install the CodeQL extension in Visual Studio Code. For instructions, see ":ref:`Setting up CodeQL in Visual Studio Code <setting-up-codeql-in-visual-studio-code>`."
|
||||
|
||||
|
||||
When you're ready to run CodeQL queries on actual codebases, you will need to install the CodeQL extension in Visual Studio Code. For instructions, see `Installing CodeQL for Visual Studio Code <https://docs.github.com/en/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/installing-codeql-for-vs-code>`__ in the GitHub documentation.
|
||||
|
||||
@@ -1 +1 @@
|
||||
For information about installing the CodeQL extension for Visual Studio code, see ":ref:`Setting up CodeQL in Visual Studio Code <setting-up-codeql-in-visual-studio-code>`."
|
||||
For information about installing the CodeQL extension for Visual Studio code, see `Installing CodeQL for Visual Studio Code <https://docs.github.com/en/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/installing-codeql-for-vs-code>`__ in the GitHub documentation.
|
||||
|
||||
@@ -26,7 +26,7 @@ Basic query structure
|
||||
.. code-block:: ql
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* Query metadata
|
||||
*
|
||||
*/
|
||||
@@ -39,18 +39,18 @@ Basic query structure
|
||||
where /* ... logical formula ... */
|
||||
select /* ... expressions ... */
|
||||
|
||||
The following sections describe the information that is typically included in a query file for alerts. Path queries are discussed in more detail in ":doc:`Creating path queries <creating-path-queries>`."
|
||||
The following sections describe the information that is typically included in a query file for alerts. Path queries are discussed in more detail in ":doc:`Creating path queries <creating-path-queries>`."
|
||||
|
||||
Query metadata
|
||||
==============
|
||||
|
||||
Query metadata is used to identify your custom queries when they are added to the GitHub repository or used in your analysis. Metadata provides information about the query's purpose, and also specifies how to interpret and display the query results. For a full list of metadata properties, see ":doc:`Metadata for CodeQL queries <metadata-for-codeql-queries>`." The exact metadata requirement depends on how you are going to run your query:
|
||||
|
||||
- If you are contributing a query to the GitHub repository, please read the `query metadata style guide <https://github.com/github/codeql/blob/main/docs/query-metadata-style-guide.md>`__.
|
||||
- If you are contributing a query to the GitHub repository, please read the `query metadata style guide <https://github.com/github/codeql/blob/main/docs/query-metadata-style-guide.md>`__.
|
||||
- If you are analyzing a database using the `CodeQL CLI <https://docs.github.com/en/code-security/codeql-cli>`__, your query metadata must contain ``@kind``.
|
||||
- If you are running a query with the CodeQL extension for VS Code, metadata is not mandatory. However, if you want your results to be displayed as either an 'alert' or a 'path', you must specify the correct ``@kind`` property, as explained below. For more information, see ":ref:`Analyzing your projects <analyzing-your-projects>`" in the CodeQL for VS Code help.
|
||||
- If you are running a query with the CodeQL extension for VS Code, metadata is not mandatory. However, if you want your results to be displayed as either an 'alert' or a 'path', you must specify the correct ``@kind`` property, as explained below. For more information, see `Running CodeQL queries <https://docs.github.com/en/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/running-codeql-queries>`__ in the GitHub documentation.
|
||||
|
||||
.. pull-quote::
|
||||
.. pull-quote::
|
||||
|
||||
Note
|
||||
|
||||
@@ -66,8 +66,8 @@ Query metadata is used to identify your custom queries when they are added to th
|
||||
Import statements
|
||||
=================
|
||||
|
||||
Each query generally contains one or more ``import`` statements, which define the :ref:`libraries <library-modules>` or :ref:`modules <modules>` to import into the query. Libraries and modules provide a way of grouping together related :ref:`types <types>`, :ref:`predicates <predicates>`, and other modules. The contents of each library or module that you import can then be accessed by the query.
|
||||
Our `open source repository on GitHub <https://github.com/github/codeql>`__ contains the standard CodeQL libraries for each supported language.
|
||||
Each query generally contains one or more ``import`` statements, which define the :ref:`libraries <library-modules>` or :ref:`modules <modules>` to import into the query. Libraries and modules provide a way of grouping together related :ref:`types <types>`, :ref:`predicates <predicates>`, and other modules. The contents of each library or module that you import can then be accessed by the query.
|
||||
Our `open source repository on GitHub <https://github.com/github/codeql>`__ contains the standard CodeQL libraries for each supported language.
|
||||
|
||||
When writing your own alert queries, you would typically import the standard library for the language of the project that you are querying. For more information about importing the standard CodeQL libraries, see the CodeQL library guides:
|
||||
|
||||
@@ -87,33 +87,33 @@ You can explore the contents of all the standard libraries in the `CodeQL librar
|
||||
Optional CodeQL classes and predicates
|
||||
--------------------------------------
|
||||
|
||||
You can customize your analysis by defining your own predicates and classes in the query. For further information, see :ref:`Defining a predicate <defining-a-predicate>` and :ref:`Defining a class <defining-a-class>`.
|
||||
You can customize your analysis by defining your own predicates and classes in the query. For further information, see :ref:`Defining a predicate <defining-a-predicate>` and :ref:`Defining a class <defining-a-class>`.
|
||||
|
||||
From clause
|
||||
===========
|
||||
|
||||
The ``from`` clause declares the variables that are used in the query. Each declaration must be of the form ``<type> <variable name>``.
|
||||
The ``from`` clause declares the variables that are used in the query. Each declaration must be of the form ``<type> <variable name>``.
|
||||
For more information on the available :ref:`types <types>`, and to learn how to define your own types using :ref:`classes <classes>`, see the :ref:`QL language reference <ql-language-reference>`.
|
||||
|
||||
Where clause
|
||||
============
|
||||
|
||||
The ``where`` clause defines the logical conditions to apply to the variables declared in the ``from`` clause to generate your results. This clause uses :ref:`aggregations <aggregations>`, :ref:`predicates <predicates>`, and logical :ref:`formulas <formulas>` to limit the variables of interest to a smaller set, which meet the defined conditions.
|
||||
The ``where`` clause defines the logical conditions to apply to the variables declared in the ``from`` clause to generate your results. This clause uses :ref:`aggregations <aggregations>`, :ref:`predicates <predicates>`, and logical :ref:`formulas <formulas>` to limit the variables of interest to a smaller set, which meet the defined conditions.
|
||||
The CodeQL libraries group commonly used predicates for specific languages and frameworks. You can also define your own predicates in the body of the query file or in your own custom modules, as described above.
|
||||
|
||||
Select clause
|
||||
=============
|
||||
|
||||
The ``select`` clause specifies the results to display for the variables that meet the conditions defined in the ``where`` clause. The valid structure for the select clause is defined by the ``@kind`` property specified in the metadata.
|
||||
The ``select`` clause specifies the results to display for the variables that meet the conditions defined in the ``where`` clause. The valid structure for the select clause is defined by the ``@kind`` property specified in the metadata.
|
||||
|
||||
Select clauses for alert queries (``@kind problem``) consist of two 'columns', with the following structure::
|
||||
|
||||
select element, string
|
||||
|
||||
- ``element``: a code element that is identified by the query, which defines where the alert is displayed.
|
||||
- ``string``: a message, which can also include links and placeholders, explaining why the alert was generated.
|
||||
- ``string``: a message, which can also include links and placeholders, explaining why the alert was generated.
|
||||
|
||||
You can modify the alert message defined in the final column of the ``select`` statement to give more detail about the alert or path found by the query using links and placeholders. For more information, see ":doc:`Defining the results of a query <defining-the-results-of-a-query>`."
|
||||
You can modify the alert message defined in the final column of the ``select`` statement to give more detail about the alert or path found by the query using links and placeholders. For more information, see ":doc:`Defining the results of a query <defining-the-results-of-a-query>`."
|
||||
|
||||
Select clauses for path queries (``@kind path-problem``) are crafted to display both an alert and the source and sink of an associated path graph. For more information, see ":doc:`Creating path queries <creating-path-queries>`."
|
||||
|
||||
@@ -140,4 +140,4 @@ Query contributions to the open source GitHub repository may also have an accomp
|
||||
Query help files
|
||||
****************
|
||||
|
||||
When you write a custom query, we also recommend that you write a query help file to explain the purpose of the query to other users. For more information, see the `Query help style guide <https://github.com/github/codeql/blob/main/docs/query-help-style-guide.md>`__ on GitHub, and the ":doc:`Query help files <query-help-files>`."
|
||||
When you write a custom query, we also recommend that you write a query help file to explain the purpose of the query to other users. For more information, see the `Query help style guide <https://github.com/github/codeql/blob/main/docs/query-help-style-guide.md>`__ on GitHub, and the ":doc:`Query help files <query-help-files>`."
|
||||
|
||||
@@ -85,4 +85,4 @@ These flow steps are modeled in the taint-tracking library using predicates that
|
||||
Further reading
|
||||
***************
|
||||
|
||||
- ":ref:`Exploring data flow with path queries <exploring-data-flow-with-path-queries>`"
|
||||
- `Exploring data flow with path queries <https://docs.github.com/en/code-security/codeql-for-vs-code/getting-started-with-codeql-for-vs-code/exploring-data-flow-with-path-queries>`__ in the GitHub documentation.
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user