@@ -45,6 +45,49 @@ private predicate looksLikeExterns(TopLevel tl) {
45
45
)
46
46
}
47
47
48
+ /**
49
+ * Holds if `f` contains generated or minified code.
50
+ */
51
+ predicate isGeneratedCodeFile ( File f ) { isGenerated ( f .getATopLevel ( ) ) }
52
+
53
+ /**
54
+ * Holds if `f` contains test code.
55
+ */
56
+ predicate isTestFile ( File f ) {
57
+ exists ( Test t | t .getFile ( ) = f )
58
+ or
59
+ exists ( string stemExt | stemExt = "test" or stemExt = "spec" |
60
+ f = getTestFile ( any ( File orig ) , stemExt )
61
+ )
62
+ or
63
+ f .getAbsolutePath ( ) .regexpMatch ( ".*/__(mocks|tests)__/.*" )
64
+ }
65
+
66
+ /**
67
+ * Holds if `f` contains externs declarations.
68
+ */
69
+ predicate isExternsFile ( File f ) {
70
+ ( f .getATopLevel ( ) .isExterns ( ) or looksLikeExterns ( f .getATopLevel ( ) ) )
71
+ }
72
+
73
+ /**
74
+ * Holds if `f` contains library code.
75
+ */
76
+ predicate isLibaryFile ( File f ) { f .getATopLevel ( ) instanceof FrameworkLibraryInstance }
77
+
78
+ /**
79
+ * Holds if `f` contains template code.
80
+ */
81
+ predicate isTemplateFile ( File f ) {
82
+ exists ( JSParseError err | maybeCausedByTemplate ( err ) | f = err .getFile ( ) )
83
+ or
84
+ // Polymer templates
85
+ exists ( HTML:: Element elt | elt .getName ( ) = "template" |
86
+ f = elt .getFile ( ) and
87
+ not f .getExtension ( ) = "vue"
88
+ )
89
+ }
90
+
48
91
/**
49
92
* Holds if `f` is classified as belonging to `category`.
50
93
*
@@ -55,33 +98,15 @@ private predicate looksLikeExterns(TopLevel tl) {
55
98
* - `"library"`: `f` contains library code;
56
99
* - `"template"`: `f` contains template code.
57
100
*/
101
+ pragma [ inline]
58
102
predicate classify ( File f , string category ) {
59
- isGenerated ( f .getATopLevel ( ) ) and category = "generated"
60
- or
61
- (
62
- exists ( Test t | t .getFile ( ) = f )
63
- or
64
- exists ( string stemExt | stemExt = "test" or stemExt = "spec" |
65
- f = getTestFile ( any ( File orig ) , stemExt )
66
- )
67
- or
68
- f .getAbsolutePath ( ) .regexpMatch ( ".*/__(mocks|tests)__/.*" )
69
- ) and
70
- category = "test"
103
+ isGeneratedCodeFile ( f ) and category = "generated"
71
104
or
72
- ( f .getATopLevel ( ) .isExterns ( ) or looksLikeExterns ( f .getATopLevel ( ) ) ) and
73
- category = "externs"
105
+ isTestFile ( f ) and category = "test"
74
106
or
75
- f . getATopLevel ( ) instanceof FrameworkLibraryInstance and category = "library "
107
+ isExternsFile ( f ) and category = "externs "
76
108
or
77
- exists ( JSParseError err | maybeCausedByTemplate ( err ) |
78
- f = err .getFile ( ) and category = "template"
79
- )
109
+ isLibaryFile ( f ) and category = "library"
80
110
or
81
- // Polymer templates
82
- exists ( HTML:: Element elt | elt .getName ( ) = "template" |
83
- f = elt .getFile ( ) and
84
- category = "template" and
85
- not f .getExtension ( ) = "vue"
86
- )
111
+ isTemplateFile ( f ) and category = "template"
87
112
}
0 commit comments