@@ -38,18 +38,6 @@ predicate happensInLoop(LoopingCall loop, DataFlow::CallNode e) {
38
38
loop .getLoopBlock ( ) .asCallableAstNode ( ) = e .asExpr ( ) .getScope ( )
39
39
}
40
40
41
- predicate happensInOuterLoop ( LoopingCall outerLoop , DataFlow:: CallNode e ) {
42
- exists ( LoopingCall innerLoop |
43
- happensInLoop ( outerLoop , innerLoop ) and
44
- happensInLoop ( innerLoop , e )
45
- )
46
- }
47
-
48
- predicate happensInInnermostLoop ( LoopingCall loop , DataFlow:: CallNode e ) {
49
- happensInLoop ( loop , e ) and
50
- not happensInOuterLoop ( loop , e )
51
- }
52
-
53
41
// The ActiveRecord instance is used to potentially control the loop
54
42
predicate usedInLoopControlGuard ( ActiveRecordInstance ar , DataFlow:: Node guard ) {
55
43
TaintTracking:: localTaint ( ar , guard ) and
73
61
not isArrayConstant ( loop .getReceiver ( ) .asExpr ( ) , _) and
74
62
// Disregard cases where the looping is influenced by the query result
75
63
not usedInLoopControlGuard ( call , _) and
76
- // Only report the inner most loop
77
- happensInInnermostLoop ( loop , call ) and
64
+ happensInLoop ( loop , call ) and
78
65
// Only report calls that are likely to be expensive
79
66
call instanceof ActiveRecordModelFinderCall and
80
67
not call .getMethodName ( ) in [ "new" , "create" ]
0 commit comments