diff --git a/javascript/ql/src/filters/ClassifyFiles.qll b/javascript/ql/src/filters/ClassifyFiles.qll
index e59b13943b7..8e8831d45b2 100644
--- a/javascript/ql/src/filters/ClassifyFiles.qll
+++ b/javascript/ql/src/filters/ClassifyFiles.qll
@@ -80,6 +80,8 @@ predicate classify(File f, string category) {
or
// Polymer templates
exists(HTML::Element elt | elt.getName() = "template" |
- f = elt.getFile() and category = "template"
+ f = elt.getFile() and
+ category = "template" and
+ not f.getExtension() = "vue"
)
}
diff --git a/javascript/ql/src/semmle/javascript/GeneratedCode.qll b/javascript/ql/src/semmle/javascript/GeneratedCode.qll
index e2f8e81d3c9..8ff3f3967a8 100644
--- a/javascript/ql/src/semmle/javascript/GeneratedCode.qll
+++ b/javascript/ql/src/semmle/javascript/GeneratedCode.qll
@@ -164,7 +164,10 @@ private int countStartingHtmlElements(File f, int l) {
/**
* Holds if the base name of `f` is a number followed by a single extension.
*/
-predicate isGeneratedFileName(File f) { f.getStem().regexpMatch("[0-9]+") }
+predicate isGeneratedFileName(File f) {
+ f.getStem().regexpMatch("[0-9]+") and
+ not f.getExtension() = "vue"
+}
/**
* Holds if `tl` looks like it contains generated code.
diff --git a/javascript/ql/test/query-tests/filters/ClassifyFiles/MyComponent.vue b/javascript/ql/test/query-tests/filters/ClassifyFiles/MyComponent.vue
new file mode 100644
index 00000000000..d6696449ddd
--- /dev/null
+++ b/javascript/ql/test/query-tests/filters/ClassifyFiles/MyComponent.vue
@@ -0,0 +1,6 @@
+
+ hey
+
+