Skip to content

Commit 54fea1a

Browse files
author
Esben Sparre Andreasen
committed
JS: support "xyz:nomunge" YUI compressor directives
1 parent 26a248b commit 54fea1a

File tree

4 files changed

+16
-0
lines changed

4 files changed

+16
-0
lines changed

change-notes/1.19/analysis-javascript.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
| Server-side URL redirect | More results | This rule now recognizes redirection calls in more cases. |
5252
| Unbound event handler receiver | Fewer false-positive results | This rule now recognizes additional ways class methods can be bound. |
5353
| Uncontrolled data used in remote request | More results | This rule now recognizes additional kinds of requests. |
54+
| Unknown directive | Fewer false positives results | This rule now recognizes YUI compressor directives. |
5455
| Unused import | Fewer false-positive results | This rule no longer flags imports used by the `transform-react-jsx` Babel plugin. |
5556
| Unused variable, import, function or class | Fewer false-positive results | This rule now flags fewer variables that may be used by `eval` calls. |
5657
| Unused variable, import, function or class | Fewer results | This rule now flags import statements with multiple unused imports once. |

javascript/ql/src/semmle/javascript/Stmt.qll

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,12 @@ class NgInjectDirective extends KnownDirective {
224224
NgInjectDirective() { getDirectiveText().regexpMatch("ng(No)?Inject") }
225225
}
226226

227+
/** A YUI compressor directive. */
228+
class YuiDirective extends KnownDirective {
229+
YuiDirective() {
230+
getDirectiveText().regexpMatch("([a-z0-9_]+:nomunge, ?)*([a-z0-9_]+:nomunge)")
231+
}
232+
}
227233

228234
/** A SystemJS `deps` directive. */
229235
class SystemJSDepsDirective extends KnownDirective {

javascript/ql/test/query-tests/Expressions/UnknownDirective/UnknownDirective.expected

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,5 @@
1313
| UnknownDirective.js:14:5:14:14 | "use bar"; | Unknown directive: 'use bar'. |
1414
| UnknownDirective.js:38:5:38:17 | "[0, 0, 0];"; | Unknown directive: '[0, 0, 0];'. |
1515
| UnknownDirective.js:39:5:39:65 | "[0, 0, ... , 0];"; | Unknown directive: '[0, 0, 0, 0, 0, 0, 0 ... (truncated)'. |
16+
| UnknownDirective.js:45:5:45:15 | ":nomunge"; | Unknown directive: ':nomunge'. |
17+
| UnknownDirective.js:46:5:46:30 | "foo(), ... munge"; | Unknown directive: 'foo(), bar, baz:nomu ... (truncated)'. |

javascript/ql/test/query-tests/Expressions/UnknownDirective/UnknownDirective.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,10 @@ function data() {
3838
"[0, 0, 0];"; // NOT OK
3939
"[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];"; // NOT OK
4040
}
41+
42+
function yui() {
43+
"foo:nomunge"; // OK
44+
"bar:nomunge, baz:nomunge,qux:nomunge"; // OK
45+
":nomunge"; // NOT OK
46+
"foo(), bar, baz:nomunge"; // NOT OK
47+
}

0 commit comments

Comments
 (0)