Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 5ba6baf

Browse files
Use occursInRegex more ccnsistently throughout
1 parent f5809a7 commit 5ba6baf

1 file changed

Lines changed: 17 additions & 27 deletions

File tree

java/ql/lib/semmle/code/java/regex/RegexTreeView.qll

Lines changed: 17 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -246,9 +246,7 @@ class RegExpQuantifier extends RegExpTerm, TRegExpQuantifier {
246246

247247
override RegExpTerm getChild(int i) {
248248
i = 0 and
249-
result.getRegex() = re and
250-
result.getStart() = start and
251-
result.getEnd() = part_end
249+
result.occursInRegex(re, start, part_end)
252250
}
253251

254252
/** Holds if this term may match an unlimited number of times. */
@@ -396,9 +394,9 @@ private RegExpTerm seqChild(Regex re, int start, int end, int i) {
396394
)
397395
or
398396
i > 0 and
399-
exists(int itemStart | itemStart = seqChildEnd(re, start, end, i - 1) |
400-
re.item(itemStart, result.getEnd()) and
401-
result.occursInRegex(re, itemStart, _)
397+
exists(int itemStart, int itemEnd | itemStart = seqChildEnd(re, start, end, i - 1) |
398+
re.item(itemStart, itemEnd) and
399+
result.occursInRegex(re, itemStart, itemEnd)
402400
)
403401
)
404402
}
@@ -417,20 +415,17 @@ class RegExpAlt extends RegExpTerm, TRegExpAlt {
417415

418416
override RegExpTerm getChild(int i) {
419417
i = 0 and
420-
result.getRegex() = re and
421-
result.getStart() = start and
422418
exists(int part_end |
423419
re.alternationOption(start, end, start, part_end) and
424-
result.getEnd() = part_end
420+
result.occursInRegex(re, start, part_end)
425421
)
426422
or
427423
i > 0 and
428-
result.getRegex() = re and
429-
exists(int part_start |
424+
exists(int part_start, int part_end |
430425
part_start = this.getChild(i - 1).getEnd() + 1 // allow for the |
431426
|
432-
result.getStart() = part_start and
433-
re.alternationOption(start, end, part_start, result.getEnd())
427+
re.alternationOption(start, end, part_start, part_end) and
428+
result.occursInRegex(re, part_start, part_end)
434429
)
435430
}
436431

@@ -651,9 +646,9 @@ class RegExpCharacterClass extends RegExpTerm, TRegExpCharacterClass {
651646
)
652647
or
653648
i > 0 and
654-
exists(int itemStart | itemStart = this.getChild(i - 1).getEnd() |
655-
result.occursInRegex(re, itemStart, _) and
656-
re.charSetChild(start, itemStart, result.getEnd())
649+
exists(int itemStart, int itemEnd | itemStart = this.getChild(i - 1).getEnd() |
650+
result.occursInRegex(re, itemStart, itemEnd) and
651+
re.charSetChild(start, itemStart, itemEnd)
657652
)
658653
}
659654

@@ -686,14 +681,10 @@ class RegExpCharacterRange extends RegExpTerm, TRegExpCharacterRange {
686681

687682
override RegExpTerm getChild(int i) {
688683
i = 0 and
689-
result.getRegex() = re and
690-
result.getStart() = start and
691-
result.getEnd() = lower_end
684+
result.occursInRegex(re, start, lower_end)
692685
or
693686
i = 1 and
694-
result.getRegex() = re and
695-
result.getStart() = upper_start and
696-
result.getEnd() = end
687+
result.occursInRegex(re, upper_start, end)
697688
}
698689

699690
override string getPrimaryQLClass() { result = "RegExpCharacterRange" }
@@ -816,9 +807,10 @@ class RegExpGroup extends RegExpTerm, TRegExpGroup {
816807
string getName() { result = re.getGroupName(start, end) }
817808

818809
override RegExpTerm getChild(int i) {
819-
result.getRegex() = re and
820810
i = 0 and
821-
re.groupContents(start, end, result.getStart(), result.getEnd())
811+
exists(int in_start, int in_end | re.groupContents(start, end, in_start, in_end) |
812+
result.occursInRegex(re, in_start, in_end)
813+
)
822814
}
823815

824816
override string getPrimaryQLClass() { result = "RegExpGroup" }
@@ -946,9 +938,7 @@ class RegExpSubPattern extends RegExpZeroWidthMatch {
946938
/** Gets the lookahead term. */
947939
RegExpTerm getOperand() {
948940
exists(int in_start, int in_end | re.groupContents(start, end, in_start, in_end) |
949-
result.getRegex() = re and
950-
result.getStart() = in_start and
951-
result.getEnd() = in_end
941+
result.occursInRegex(re, in_start, in_end)
952942
)
953943
}
954944
}

0 commit comments

Comments
 (0)