@@ -7,15 +7,46 @@ import ruby
77
88query predicate nodes ( Module node , string key , string value ) {
99 key = "semmle.label" and value = node .toString ( )
10+ or
11+ key = "semmle.order" and
12+ value =
13+ any ( int i |
14+ node =
15+ rank [ i ] ( Module m , Location l |
16+ l = m .getLocation ( )
17+ |
18+ m
19+ order by
20+ l .getFile ( ) .getBaseName ( ) , l .getFile ( ) .getAbsolutePath ( ) , l .getStartLine ( ) ,
21+ l .getStartColumn ( ) , l .getEndLine ( ) , l .getEndColumn ( ) , m .toString ( )
22+ )
23+ ) .toString ( )
24+ }
25+
26+ Module getATarget ( Module source , string value ) {
27+ result = source .getSuperClass ( ) and value = "super"
28+ or
29+ result = source .getAPrependedModule ( ) and value = "prepend"
30+ or
31+ result = source .getAnIncludedModule ( ) and value = "include"
1032}
1133
1234query predicate edges ( Module source , Module target , string key , string value ) {
1335 key = "semmle.label" and
14- (
15- target = source .getSuperClass ( ) and value = "super"
16- or
17- target = source .getAPrependedModule ( ) and value = "prepend"
18- or
19- target = source .getAnIncludedModule ( ) and value = "include"
20- )
36+ target = getATarget ( source , value )
37+ or
38+ key = "semmle.order" and
39+ value =
40+ any ( int i |
41+ target =
42+ rank [ i ] ( Module t , Location l |
43+ t = getATarget ( source , _) and
44+ l = t .getLocation ( )
45+ |
46+ t
47+ order by
48+ l .getFile ( ) .getBaseName ( ) , l .getFile ( ) .getAbsolutePath ( ) , l .getStartLine ( ) ,
49+ l .getStartColumn ( ) , l .getEndLine ( ) , l .getEndColumn ( ) , t .toString ( )
50+ )
51+ ) .toString ( )
2152}
0 commit comments