@@ -15,14 +15,14 @@ private predicate isUninteresting(DataFlow::MethodNode c) {
15
15
c .getLocation ( ) .getFile ( ) instanceof TestFile
16
16
}
17
17
18
- private predicate fileStep ( Folder folder , File file , int n ) {
19
- n = 0 and folder .getAFile ( ) = file
18
+ private predicate gemFileStep ( Gem :: GemSpec gem , Folder folder , int n ) {
19
+ n = 0 and folder .getAFile ( ) = gem . ( File )
20
20
or
21
- exists ( int m | fileStep ( folder . getAFolder ( ) , file , m ) | n = m + 1 )
22
- }
23
-
24
- private predicate gemFileStep ( Gem :: GemSpec gem , File file , int n ) {
25
- fileStep ( any ( Folder f | f . getAFile ( ) = gem . ( File ) ) , file , n )
21
+ exists ( Folder parent , int m |
22
+ gemFileStep ( gem , parent , m ) and
23
+ parent . getAFolder ( ) = folder and
24
+ n = m + 1
25
+ )
26
26
}
27
27
28
28
/**
@@ -40,11 +40,13 @@ class Endpoint extends DataFlow::MethodNode {
40
40
*/
41
41
bindingset [ this ]
42
42
string getNamespace ( ) {
43
- // The nearest gemspec to this endpoint, if one exists
44
- result = min ( Gem:: GemSpec g , int n | gemFileStep ( g , this .getFile ( ) , n ) | g order by n ) .getName ( )
45
- or
46
- not exists ( Gem:: GemSpec g ) and
47
- result = ""
43
+ exists ( Folder folder | folder = this .getFile ( ) .getParentContainer ( ) |
44
+ // The nearest gemspec to this endpoint, if one exists
45
+ result = min ( Gem:: GemSpec g , int n | gemFileStep ( g , folder , n ) | g order by n ) .getName ( )
46
+ or
47
+ not exists ( Gem:: GemSpec g | gemFileStep ( g , folder , _) ) and
48
+ result = ""
49
+ )
48
50
}
49
51
50
52
/**
0 commit comments