@@ -38,18 +38,6 @@ predicate happensInLoop(LoopingCall loop, DataFlow::CallNode e) {
3838 loop .getLoopBlock ( ) .asCallableAstNode ( ) = e .asExpr ( ) .getScope ( )
3939}
4040
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-
5341// The ActiveRecord instance is used to potentially control the loop
5442predicate usedInLoopControlGuard ( ActiveRecordInstance ar , DataFlow:: Node guard ) {
5543 TaintTracking:: localTaint ( ar , guard ) and
7361 not isArrayConstant ( loop .getReceiver ( ) .asExpr ( ) , _) and
7462 // Disregard cases where the looping is influenced by the query result
7563 not usedInLoopControlGuard ( call , _) and
76- // Only report the inner most loop
77- happensInInnermostLoop ( loop , call ) and
64+ happensInLoop ( loop , call ) and
7865 // Only report calls that are likely to be expensive
7966 call instanceof ActiveRecordModelFinderCall and
8067 not call .getMethodName ( ) in [ "new" , "create" ]
0 commit comments