Skip to content

Commit 5974248

Browse files
authored
Merge pull request #8893 from hvitved/ruby/simplify-fetch-summary
Ruby: Simplify flow summary for `fetch`
2 parents 2d05ea3 + 3b7fe06 commit 5974248

File tree

2 files changed

+4
-55
lines changed

2 files changed

+4
-55
lines changed

ruby/ql/lib/codeql/ruby/frameworks/core/Array.qll

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -741,19 +741,14 @@ module Array {
741741

742742
override predicate propagatesFlowExt(string input, string output, boolean preservesValue) {
743743
(
744-
input = "Argument[self].ArrayElement[?]" and
745-
output = ["ReturnValue", "Argument[self].ArrayElement[?]"]
746-
or
747-
exists(ArrayIndex j | input = "Argument[self].ArrayElement[" + j + "]" |
748-
j = i and output = "ReturnValue"
749-
or
750-
j != i and output = "Argument[self].ArrayElement[" + j + "]"
751-
)
744+
input = "Argument[self].ArrayElement[?," + i + "]" and
745+
output = "ReturnValue"
752746
or
753747
input = "Argument[0]" and
754748
output = "Argument[block].Parameter[0]"
755749
or
756-
input = "Argument[1]" and output = "ReturnValue"
750+
input = "Argument[1]" and
751+
output = "ReturnValue"
757752
) and
758753
preservesValue = true
759754
}

ruby/ql/test/library-tests/dataflow/array-flow/array-flow.expected

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -821,18 +821,10 @@ edges
821821
| array_flow.rb:466:19:466:30 | call to source : | array_flow.rb:471:9:471:9 | a [array element 3] : |
822822
| array_flow.rb:466:19:466:30 | call to source : | array_flow.rb:473:9:473:9 | a [array element 3] : |
823823
| array_flow.rb:466:19:466:30 | call to source : | array_flow.rb:473:9:473:9 | a [array element 3] : |
824-
| array_flow.rb:466:19:466:30 | call to source : | array_flow.rb:475:9:475:9 | a [array element 3] : |
825-
| array_flow.rb:466:19:466:30 | call to source : | array_flow.rb:475:9:475:9 | a [array element 3] : |
826824
| array_flow.rb:466:19:466:30 | call to source : | array_flow.rb:477:9:477:9 | a [array element 3] : |
827825
| array_flow.rb:466:19:466:30 | call to source : | array_flow.rb:477:9:477:9 | a [array element 3] : |
828826
| array_flow.rb:466:33:466:44 | call to source : | array_flow.rb:467:9:467:9 | a [array element 4] : |
829827
| array_flow.rb:466:33:466:44 | call to source : | array_flow.rb:467:9:467:9 | a [array element 4] : |
830-
| array_flow.rb:466:33:466:44 | call to source : | array_flow.rb:471:9:471:9 | a [array element 4] : |
831-
| array_flow.rb:466:33:466:44 | call to source : | array_flow.rb:471:9:471:9 | a [array element 4] : |
832-
| array_flow.rb:466:33:466:44 | call to source : | array_flow.rb:473:9:473:9 | a [array element 4] : |
833-
| array_flow.rb:466:33:466:44 | call to source : | array_flow.rb:473:9:473:9 | a [array element 4] : |
834-
| array_flow.rb:466:33:466:44 | call to source : | array_flow.rb:475:9:475:9 | a [array element 4] : |
835-
| array_flow.rb:466:33:466:44 | call to source : | array_flow.rb:475:9:475:9 | a [array element 4] : |
836828
| array_flow.rb:466:33:466:44 | call to source : | array_flow.rb:477:9:477:9 | a [array element 4] : |
837829
| array_flow.rb:466:33:466:44 | call to source : | array_flow.rb:477:9:477:9 | a [array element 4] : |
838830
| array_flow.rb:467:9:467:9 | a [array element 3] : | array_flow.rb:467:9:469:7 | call to fetch : |
@@ -845,38 +837,16 @@ edges
845837
| array_flow.rb:467:17:467:28 | call to source : | array_flow.rb:467:35:467:35 | x : |
846838
| array_flow.rb:467:35:467:35 | x : | array_flow.rb:468:14:468:14 | x |
847839
| array_flow.rb:467:35:467:35 | x : | array_flow.rb:468:14:468:14 | x |
848-
| array_flow.rb:471:9:471:9 | [post] a [array element 4] : | array_flow.rb:473:9:473:9 | a [array element 4] : |
849-
| array_flow.rb:471:9:471:9 | [post] a [array element 4] : | array_flow.rb:473:9:473:9 | a [array element 4] : |
850-
| array_flow.rb:471:9:471:9 | [post] a [array element 4] : | array_flow.rb:475:9:475:9 | a [array element 4] : |
851-
| array_flow.rb:471:9:471:9 | [post] a [array element 4] : | array_flow.rb:475:9:475:9 | a [array element 4] : |
852-
| array_flow.rb:471:9:471:9 | [post] a [array element 4] : | array_flow.rb:477:9:477:9 | a [array element 4] : |
853-
| array_flow.rb:471:9:471:9 | [post] a [array element 4] : | array_flow.rb:477:9:477:9 | a [array element 4] : |
854840
| array_flow.rb:471:9:471:9 | a [array element 3] : | array_flow.rb:471:9:471:18 | call to fetch : |
855841
| array_flow.rb:471:9:471:9 | a [array element 3] : | array_flow.rb:471:9:471:18 | call to fetch : |
856-
| array_flow.rb:471:9:471:9 | a [array element 4] : | array_flow.rb:471:9:471:9 | [post] a [array element 4] : |
857-
| array_flow.rb:471:9:471:9 | a [array element 4] : | array_flow.rb:471:9:471:9 | [post] a [array element 4] : |
858842
| array_flow.rb:471:9:471:18 | call to fetch : | array_flow.rb:472:10:472:10 | b |
859843
| array_flow.rb:471:9:471:18 | call to fetch : | array_flow.rb:472:10:472:10 | b |
860-
| array_flow.rb:473:9:473:9 | [post] a [array element 4] : | array_flow.rb:475:9:475:9 | a [array element 4] : |
861-
| array_flow.rb:473:9:473:9 | [post] a [array element 4] : | array_flow.rb:475:9:475:9 | a [array element 4] : |
862-
| array_flow.rb:473:9:473:9 | [post] a [array element 4] : | array_flow.rb:477:9:477:9 | a [array element 4] : |
863-
| array_flow.rb:473:9:473:9 | [post] a [array element 4] : | array_flow.rb:477:9:477:9 | a [array element 4] : |
864844
| array_flow.rb:473:9:473:9 | a [array element 3] : | array_flow.rb:473:9:473:32 | call to fetch : |
865845
| array_flow.rb:473:9:473:9 | a [array element 3] : | array_flow.rb:473:9:473:32 | call to fetch : |
866-
| array_flow.rb:473:9:473:9 | a [array element 4] : | array_flow.rb:473:9:473:9 | [post] a [array element 4] : |
867-
| array_flow.rb:473:9:473:9 | a [array element 4] : | array_flow.rb:473:9:473:9 | [post] a [array element 4] : |
868846
| array_flow.rb:473:9:473:32 | call to fetch : | array_flow.rb:474:10:474:10 | b |
869847
| array_flow.rb:473:9:473:32 | call to fetch : | array_flow.rb:474:10:474:10 | b |
870848
| array_flow.rb:473:20:473:31 | call to source : | array_flow.rb:473:9:473:32 | call to fetch : |
871849
| array_flow.rb:473:20:473:31 | call to source : | array_flow.rb:473:9:473:32 | call to fetch : |
872-
| array_flow.rb:475:9:475:9 | [post] a [array element 3] : | array_flow.rb:477:9:477:9 | a [array element 3] : |
873-
| array_flow.rb:475:9:475:9 | [post] a [array element 3] : | array_flow.rb:477:9:477:9 | a [array element 3] : |
874-
| array_flow.rb:475:9:475:9 | [post] a [array element 4] : | array_flow.rb:477:9:477:9 | a [array element 4] : |
875-
| array_flow.rb:475:9:475:9 | [post] a [array element 4] : | array_flow.rb:477:9:477:9 | a [array element 4] : |
876-
| array_flow.rb:475:9:475:9 | a [array element 3] : | array_flow.rb:475:9:475:9 | [post] a [array element 3] : |
877-
| array_flow.rb:475:9:475:9 | a [array element 3] : | array_flow.rb:475:9:475:9 | [post] a [array element 3] : |
878-
| array_flow.rb:475:9:475:9 | a [array element 4] : | array_flow.rb:475:9:475:9 | [post] a [array element 4] : |
879-
| array_flow.rb:475:9:475:9 | a [array element 4] : | array_flow.rb:475:9:475:9 | [post] a [array element 4] : |
880850
| array_flow.rb:475:9:475:34 | call to fetch : | array_flow.rb:476:10:476:10 | b |
881851
| array_flow.rb:475:9:475:34 | call to fetch : | array_flow.rb:476:10:476:10 | b |
882852
| array_flow.rb:475:22:475:33 | call to source : | array_flow.rb:475:9:475:34 | call to fetch : |
@@ -4346,36 +4316,20 @@ nodes
43464316
| array_flow.rb:468:14:468:14 | x | semmle.label | x |
43474317
| array_flow.rb:470:10:470:10 | b | semmle.label | b |
43484318
| array_flow.rb:470:10:470:10 | b | semmle.label | b |
4349-
| array_flow.rb:471:9:471:9 | [post] a [array element 4] : | semmle.label | [post] a [array element 4] : |
4350-
| array_flow.rb:471:9:471:9 | [post] a [array element 4] : | semmle.label | [post] a [array element 4] : |
43514319
| array_flow.rb:471:9:471:9 | a [array element 3] : | semmle.label | a [array element 3] : |
43524320
| array_flow.rb:471:9:471:9 | a [array element 3] : | semmle.label | a [array element 3] : |
4353-
| array_flow.rb:471:9:471:9 | a [array element 4] : | semmle.label | a [array element 4] : |
4354-
| array_flow.rb:471:9:471:9 | a [array element 4] : | semmle.label | a [array element 4] : |
43554321
| array_flow.rb:471:9:471:18 | call to fetch : | semmle.label | call to fetch : |
43564322
| array_flow.rb:471:9:471:18 | call to fetch : | semmle.label | call to fetch : |
43574323
| array_flow.rb:472:10:472:10 | b | semmle.label | b |
43584324
| array_flow.rb:472:10:472:10 | b | semmle.label | b |
4359-
| array_flow.rb:473:9:473:9 | [post] a [array element 4] : | semmle.label | [post] a [array element 4] : |
4360-
| array_flow.rb:473:9:473:9 | [post] a [array element 4] : | semmle.label | [post] a [array element 4] : |
43614325
| array_flow.rb:473:9:473:9 | a [array element 3] : | semmle.label | a [array element 3] : |
43624326
| array_flow.rb:473:9:473:9 | a [array element 3] : | semmle.label | a [array element 3] : |
4363-
| array_flow.rb:473:9:473:9 | a [array element 4] : | semmle.label | a [array element 4] : |
4364-
| array_flow.rb:473:9:473:9 | a [array element 4] : | semmle.label | a [array element 4] : |
43654327
| array_flow.rb:473:9:473:32 | call to fetch : | semmle.label | call to fetch : |
43664328
| array_flow.rb:473:9:473:32 | call to fetch : | semmle.label | call to fetch : |
43674329
| array_flow.rb:473:20:473:31 | call to source : | semmle.label | call to source : |
43684330
| array_flow.rb:473:20:473:31 | call to source : | semmle.label | call to source : |
43694331
| array_flow.rb:474:10:474:10 | b | semmle.label | b |
43704332
| array_flow.rb:474:10:474:10 | b | semmle.label | b |
4371-
| array_flow.rb:475:9:475:9 | [post] a [array element 3] : | semmle.label | [post] a [array element 3] : |
4372-
| array_flow.rb:475:9:475:9 | [post] a [array element 3] : | semmle.label | [post] a [array element 3] : |
4373-
| array_flow.rb:475:9:475:9 | [post] a [array element 4] : | semmle.label | [post] a [array element 4] : |
4374-
| array_flow.rb:475:9:475:9 | [post] a [array element 4] : | semmle.label | [post] a [array element 4] : |
4375-
| array_flow.rb:475:9:475:9 | a [array element 3] : | semmle.label | a [array element 3] : |
4376-
| array_flow.rb:475:9:475:9 | a [array element 3] : | semmle.label | a [array element 3] : |
4377-
| array_flow.rb:475:9:475:9 | a [array element 4] : | semmle.label | a [array element 4] : |
4378-
| array_flow.rb:475:9:475:9 | a [array element 4] : | semmle.label | a [array element 4] : |
43794333
| array_flow.rb:475:9:475:34 | call to fetch : | semmle.label | call to fetch : |
43804334
| array_flow.rb:475:9:475:34 | call to fetch : | semmle.label | call to fetch : |
43814335
| array_flow.rb:475:22:475:33 | call to source : | semmle.label | call to source : |

0 commit comments

Comments
 (0)