Repository: vuejs/eslint-plugin-vue
Pull request #1484 (2021-05-02 11:41:27)

Make an exception for some SVG attributes in vue/attribute-hyphenation
Closes issue #1483 


Patch:
diff --git a/docs/.vuepress/components/eslint-code-block.vue b/docs/.vuepress/components/eslint-code-block.vue
index 00b69482..381d9985 100644
--- a/docs/.vuepress/components/eslint-code-block.vue
+++ b/docs/.vuepress/components/eslint-code-block.vue
@@ -122,15 +122,12 @@ export default {
 
   async mounted() {
     // Load linter.
-    const [
-      { default: Linter },
-      { default: coreRules },
-      { parseForESLint }
-    ] = await Promise.all([
-      import('eslint4b/dist/linter'),
-      import('eslint4b/dist/core-rules'),
-      import('espree').then(() => import('vue-eslint-parser'))
-    ])
+    const [{ default: Linter }, { default: coreRules }, { parseForESLint }] =
+      await Promise.all([
+        import('eslint4b/dist/linter'),
+        import('eslint4b/dist/core-rules'),
+        import('espree').then(() => import('vue-eslint-parser'))
+      ])
 
     const linter = (this.linter = new Linter())
 
diff --git a/docs/rules/README.md b/docs/rules/README.md
index e34e4ca2..9717d49a 100644
--- a/docs/rules/README.md
+++ b/docs/rules/README.md
@@ -157,7 +157,7 @@ Enforce all the rules in this category, as well as all higher priority rules, wi
 | [vue/no-multiple-slot-args](./no-multiple-slot-args.md) | disallow to pass multiple arguments to scoped slots |  |
 | [vue/no-v-html](./no-v-html.md) | disallow use of v-html to prevent XSS attack |  |
 | [vue/order-in-components](./order-in-components.md) | enforce order of properties in components | :wrench: |
-| [vue/this-in-template](./this-in-template.md) | disallow usage of `this` in template |  |
+| [vue/this-in-template](./this-in-template.md) | disallow usage of `this` in template | :wrench: |
 
 ## Priority A: Essential (Error Prevention) <badge text="for Vue.js 2.x" vertical="middle" type="warn">for Vue.js 2.x</badge>
 
@@ -267,7 +267,7 @@ Enforce all the rules in this category, as well as all higher priority rules, wi
 | [vue/no-multiple-slot-args](./no-multiple-slot-args.md) | disallow to pass multiple arguments to scoped slots |  |
 | [vue/no-v-html](./no-v-html.md) | disallow use of v-html to prevent XSS attack |  |
 | [vue/order-in-components](./order-in-components.md) | enforce order of properties in components | :wrench: |
-| [vue/this-in-template](./this-in-template.md) | disallow usage of `this` in template |  |
+| [vue/this-in-template](./this-in-template.md) | disallow usage of `this` in template | :wrench: |
 
 ## Uncategorized
 
diff --git a/docs/rules/attribute-hyphenation.md b/docs/rules/attribute-hyphenation.md
index cc639183..2aa8a39e 100644
--- a/docs/rules/attribute-hyphenation.md
+++ b/docs/rules/attribute-hyphenation.md
@@ -40,10 +40,11 @@ This rule enforces using hyphenated attribute names on custom components in Vue
 }
 ```
 
-Default casing is set to `always` with `['data-', 'aria-', 'slot-scope']` set to be ignored
+Default casing is set to `always`. By default the following attributes are ignored: `data-`, `aria-`, `slot-scope`,
+and all the [SVG attributes](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute) with either an upper case letter or an hyphen.
 
 - `"always"` (default) ... Use hyphenated name.
-- `"never"` ... Don't use hyphenated name except `data-`, `aria-` and `slot-scope`.
+- `"never"` ... Don't use hyphenated name except the ones that are ignored.
 - `"ignore"` ... Array of ignored names
 
 ### `"always"`
@@ -66,7 +67,7 @@ It errors on upper case letters.
 
 ### `"never"`
 
-It errors on hyphens except `data-`, `aria-` and `slot-scope`.
+It errors on hyphens except on the attributes in the ignored attributes list.
 
 <eslint-code-block fix :rules="{'vue/attribute-hyphenation': ['error', 'never']}">
 
diff --git a/docs/rules/html-button-has-type.md b/docs/rules/html-button-has-type.md
index 5974f72d..24f997e6 100644
--- a/docs/rules/html-button-has-type.md
+++ b/docs/rules/html-button-has-type.md
@@ -48,13 +48,13 @@ This rule aims to warn if no type or an invalid type is used on a button type at
 
 - `button` ... `<button type="button"></button>`
   - `true` (default) ... allow value `button`.
-  - `false"` ... disallow value `button`.
+  - `false` ... disallow value `button`.
 - `submit` ... `<button type="submit"></button>`
   - `true` (default) ... allow value `submit`.
-  - `false"` ... disallow value `submit`.
+  - `false` ... disallow value `submit`.
 - `reset` ... `<button type="reset"></button>`
   - `true` (default) ... allow value `reset`.
-  - `false"` ... disallow value `reset`.
+  - `false` ... disallow value `reset`.
 
 ## :rocket: Version
 
diff --git a/docs/rules/no-template-target-blank.md b/docs/rules/no-template-target-blank.md
index 411b1c9c..f53289e3 100644
--- a/docs/rules/no-template-target-blank.md
+++ b/docs/rules/no-template-target-blank.md
@@ -22,7 +22,7 @@ This rule disallows using `target="_blank"` attribute without `rel="noopener nor
 
   <!-- ✗ BAD -->
   <a href="http://example.com" target="_blank" >link</a>
-</temlate>
+</template>
 ```
 
 </eslint-code-block>
@@ -52,7 +52,7 @@ This rule disallows using `target="_blank"` attribute without `rel="noopener nor
 
   <!-- ✗ BAD -->
   <a href="http://example.com" target="_blank" rel="noopener">link</a>
-</temlate>
+</template>
 ```
 
 </eslint-code-block>
@@ -68,7 +68,7 @@ This rule disallows using `target="_blank"` attribute without `rel="noopener nor
 
   <!-- ✗ BAD -->
   <a href="http://example.com" target="_blank" >link</a>
-</temlate>
+</template>
 ```
 
 </eslint-code-block>
@@ -84,7 +84,7 @@ This rule disallows using `target="_blank"` attribute without `rel="noopener nor
 
   <!-- ✗ BAD -->
   <a :href="link" target="_blank">link</a>
-</temlate>
+</template>
 ```
 
 </eslint-code-block>
@@ -100,7 +100,7 @@ This rule disallows using `target="_blank"` attribute without `rel="noopener nor
 
   <!-- ✗ BAD -->
   <a href="http://example.com" target="_blank" >link</a>
-</temlate>
+</template>
 ```
 
 </eslint-code-block>
diff --git a/docs/rules/sort-keys.md b/docs/rules/sort-keys.md
index cb8836f3..b573e4ea 100644
--- a/docs/rules/sort-keys.md
+++ b/docs/rules/sort-keys.md
@@ -15,7 +15,7 @@ This rule is almost the same rule as core [sort-keys] rule but it will not error
 
 ```json
 {
-    "sort-keys": ["error", "asc", {
+    "vue/sort-keys": ["error", "asc", {
         "caseSensitive": true,
         "ignoreChildrenOf": ["model"],
         "ignoreGrandchildrenOf": ["computed", "directives", "inject", "props", "watch"],
diff --git a/docs/rules/this-in-template.md b/docs/rules/this-in-template.md
index 7924ad3b..f193e7e3 100644
--- a/docs/rules/this-in-template.md
+++ b/docs/rules/this-in-template.md
@@ -10,12 +10,13 @@ since: v3.13.0
 > disallow usage of `this` in template
 
 - :gear: This rule is included in `"plugin:vue/vue3-recommended"` and `"plugin:vue/recommended"`.
+- :wrench: The `--fix` option on the [command line](https://eslint.org/docs/user-guide/command-line-interface#fixing-problems) can automatically fix some of the problems reported by this rule.
 
 ## :book: Rule Details
 
 This rule aims at preventing usage of `this` in Vue templates.
 
-<eslint-code-block :rules="{'vue/this-in-template': ['error']}">
+<eslint-code-block fix :rules="{'vue/this-in-template': ['error']}">
 
 ```vue
 <template>
@@ -45,7 +46,7 @@ This rule aims at preventing usage of `this` in Vue templates.
 
 ### `"always"`
 
-<eslint-code-block :rules="{'vue/this-in-template': ['error', 'always']}">
+<eslint-code-block fix :rules="{'vue/this-in-template': ['error', 'always']}">
 
 ```vue
 <template>
diff --git a/lib/rules/attribute-hyphenation.js b/lib/rules/attribute-hyphenation.js
index cba9dc24..ec5a3a9a 100644
--- a/lib/rules/attribute-hyphenation.js
+++ b/lib/rules/attribute-hyphenation.js
@@ -6,6 +6,7 @@
 
 const utils = require('../utils')
 const casing = require('../utils/casing')
+const svgAttributes = require('../utils/svg-attributes-weird-case.json')
 
 // ------------------------------------------------------------------------------
 // Rule Definition
@@ -51,7 +52,9 @@ module.exports = {
     const option = context.options[0]
     const optionsPayload = context.options[1]
     const useHyphenated = option !== 'never'
-    let ignoredAttributes = ['data-', 'aria-', 'slot-scope']
+    let ignoredAttributes = ['data-', 'aria-', 'slot-scope'].concat(
+      svgAttributes
+    )
 
     if (optionsPayload && optionsPayload.ignore) {
       ignoredAttributes = ignoredAttributes.concat(optionsPayload.ignore)
diff --git a/lib/rules/attributes-order.js b/lib/rules/attributes-order.js
index 8f2917dd..5af387db 100644
--- a/lib/rules/attributes-order.js
+++ b/lib/rules/attributes-order.js
@@ -271,10 +271,8 @@ function create(context) {
         return
       }
 
-      let {
-        attr: previousNode,
-        position: previousPosition
-      } = attributeAndPositions[0]
+      let { attr: previousNode, position: previousPosition } =
+        attributeAndPositions[0]
       for (let index = 1; index < attributeAndPositions.length; index++) {
         const { attr, position } = attributeAndPositions[index]
 
diff --git a/lib/rules/component-definition-name-casing.js b/lib/rules/component-definition-name-casing.js
index 1f2e59a8..8e192df5 100644
--- a/lib/rules/component-definition-name-casing.js
+++ b/lib/rules/component-definition-name-casing.js
@@ -18,8 +18,7 @@ module.exports = {
     docs: {
       description: 'enforce specific casing for component definition name',
       categories: ['vue3-strongly-recommended', 'strongly-recommended'],
-      url:
-        'https://eslint.vuejs.org/rules/component-definition-name-casing.html'
+      url: 'https://eslint.vuejs.org/rules/component-definition-name-casing.html'
     },
     fixable: 'code', // or "code" or "whitespace"
     schema: [
diff --git a/lib/rules/component-name-in-template-casing.js b/lib/rules/component-name-in-template-casing.js
index dffca0c8..b2f60a63 100644
--- a/lib/rules/component-name-in-template-casing.js
+++ b/lib/rules/component-name-in-template-casing.js
@@ -30,8 +30,7 @@ module.exports = {
       description:
         'enforce specific casing for the component naming style in template',
       categories: undefined,
-      url:
-        'https://eslint.vuejs.org/rules/component-name-in-template-casing.html'
+      url: 'https://eslint.vuejs.org/rules/component-name-in-template-casing.html'
     },
     fixable: 'code',
     schema: [
diff --git a/lib/rules/experimental-script-setup-vars.js b/lib/rules/experimental-script-setup-vars.js
index b209376d..d215a27b 100644
--- a/lib/rules/experimental-script-setup-vars.js
+++ b/lib/rules/experimental-script-setup-vars.js
@@ -161,8 +161,9 @@ function parseSetup(code, espree, eslintScope) {
     fallback: AST.getFallbackKeys
   })
 
-  const variables = /** @type {Variable[]} */ (result.globalScope.childScopes[0]
-    .variables)
+  const variables = /** @type {Variable[]} */ (
+    result.globalScope.childScopes[0].variables
+  )
 
   return variables.map((v) => v.name)
 }
diff --git a/lib/rules/html-self-closing.js b/lib/rules/html-self-closing.js
index b54c2067..ed4a3dca 100644
--- a/lib/rules/html-self-closing.js
+++ b/lib/rules/html-self-closing.js
@@ -164,7 +164,8 @@ module.exports = {
                 name: node.rawName
               },
               fix(fixer) {
-                const tokens = context.parserServices.getTemplateBodyTokenStore()
+                const tokens =
+                  context.parserServices.getTemplateBodyTokenStore()
                 const close = tokens.getLastToken(node.startTag)
                 if (close.type !== 'HTMLTagClose') {
                   return null
@@ -188,7 +189,8 @@ module.exports = {
                 name: node.rawName
               },
               fix(fixer) {
-                const tokens = context.parserServices.getTemplateBodyTokenStore()
+                const tokens =
+                  context.parserServices.getTemplateBodyTokenStore()
                 const close = tokens.getLastToken(node.startTag)
                 if (close.type !== 'HTMLSelfClosingTagClose') {
                   return null
diff --git a/lib/rules/max-attributes-per-line.js b/lib/rules/max-attributes-per-line.js
index d50a78d6..c21604a6 100644
--- a/lib/rules/max-attributes-per-line.js
+++ b/lib/rules/max-attributes-per-line.js
@@ -177,12 +177,11 @@ module.exports = {
 
             // Find the closest token before the current prop
             // that is not a white space
-            const prevToken = /** @type {Token} */ (template.getTokenBefore(
-              prop,
-              {
+            const prevToken = /** @type {Token} */ (
+              template.getTokenBefore(prop, {
                 filter: (token) => token.type !== 'HTMLWhitespace'
-              }
-            ))
+              })
+            )
 
             /** @type {Range} */
             const range = [prevToken.range[1], prop.range[0]]
diff --git a/lib/rules/max-len.js b/lib/rules/max-len.js
index 6de8f895..773b6264 100644
--- a/lib/rules/max-len.js
+++ b/lib/rules/max-len.js
@@ -209,8 +209,7 @@ module.exports = {
       OPTIONS_SCHEMA
     ],
     messages: {
-      max:
-        'This line has a length of {{lineLength}}. Maximum allowed is {{maxLength}}.',
+      max: 'This line has a length of {{lineLength}}. Maximum allowed is {{maxLength}}.',
       maxComment:
         'This line has a comment length of {{lineLength}}. Maximum allowed is {{maxCommentLength}}.'
     }
diff --git a/lib/rules/multiline-html-element-content-newline.js b/lib/rules/multiline-html-element-content-newline.js
index 49a675c4..fa24dd25 100644
--- a/lib/rules/multiline-html-element-content-newline.js
+++ b/lib/rules/multiline-html-element-content-newline.js
@@ -72,8 +72,7 @@ module.exports = {
       description:
         'require a line break before and after the contents of a multiline element',
       categories: ['vue3-strongly-recommended', 'strongly-recommended'],
-      url:
-        'https://eslint.vuejs.org/rules/multiline-html-element-content-newline.html'
+      url: 'https://eslint.vuejs.org/rules/multiline-html-element-content-newline.html'
     },
     fixable: 'whitespace',
     schema: [
@@ -179,14 +178,12 @@ module.exports = {
           return
         }
 
-        const contentFirst = /** @type {Token} */ (template.getTokenAfter(
-          element.startTag,
-          getTokenOption
-        ))
-        const contentLast = /** @type {Token} */ (template.getTokenBefore(
-          element.endTag,
-          getTokenOption
-        ))
+        const contentFirst = /** @type {Token} */ (
+          template.getTokenAfter(element.startTag, getTokenOption)
+        )
+        const contentLast = /** @type {Token} */ (
+          template.getTokenBefore(element.endTag, getTokenOption)
+        )
 
         const beforeLineBreaks =
           contentFirst.loc.start.line - element.startTag.loc.end.line
diff --git a/lib/rules/new-line-between-multi-line-property.js b/lib/rules/new-line-between-multi-line-property.js
index c1be3618..f0e3aa55 100644
--- a/lib/rules/new-line-between-multi-line-property.js
+++ b/lib/rules/new-line-between-multi-line-property.js
@@ -55,8 +55,7 @@ module.exports = {
       description:
         'enforce new lines between multi-line properties in Vue components',
       categories: undefined,
-      url:
-        'https://eslint.vuejs.org/rules/new-line-between-multi-line-property.html'
+      url: 'https://eslint.vuejs.org/rules/new-line-between-multi-line-property.html'
     },
     fixable: 'whitespace', // or "code" or "whitespace"
     schema: [
diff --git a/lib/rules/no-deprecated-data-object-declaration.js b/lib/rules/no-deprecated-data-object-declaration.js
index 37d280ef..017e46ec 100644
--- a/lib/rules/no-deprecated-data-object-declaration.js
+++ b/lib/rules/no-deprecated-data-object-declaration.js
@@ -52,8 +52,7 @@ module.exports = {
       description:
         'disallow using deprecated object declaration on data (in Vue.js 3.0.0+)',
       categories: ['vue3-essential'],
-      url:
-        'https://eslint.vuejs.org/rules/no-deprecated-data-object-declaration.html'
+      url: 'https://eslint.vuejs.org/rules/no-deprecated-data-object-declaration.html'
     },
     fixable: 'code',
     schema: [],
diff --git a/lib/rules/no-deprecated-destroyed-lifecycle.js b/lib/rules/no-deprecated-destroyed-lifecycle.js
index c3556084..6176daa9 100644
--- a/lib/rules/no-deprecated-destroyed-lifecycle.js
+++ b/lib/rules/no-deprecated-destroyed-lifecycle.js
@@ -21,8 +21,7 @@ module.exports = {
       description:
         'disallow using deprecated `destroyed` and `beforeDestroy` lifecycle hooks (in Vue.js 3.0.0+)',
       categories: ['vue3-essential'],
-      url:
-        'https://eslint.vuejs.org/rules/no-deprecated-destroyed-lifecycle.html'
+      url: 'https://eslint.vuejs.org/rules/no-deprecated-destroyed-lifecycle.html'
     },
     fixable: null,
     schema: [],
diff --git a/lib/rules/no-deprecated-dollar-listeners-api.js b/lib/rules/no-deprecated-dollar-listeners-api.js
index 97d98359..64c175be 100644
--- a/lib/rules/no-deprecated-dollar-listeners-api.js
+++ b/lib/rules/no-deprecated-dollar-listeners-api.js
@@ -20,8 +20,7 @@ module.exports = {
     docs: {
       description: 'disallow using deprecated `$listeners` (in Vue.js 3.0.0+)',
       categories: ['vue3-essential'],
-      url:
-        'https://eslint.vuejs.org/rules/no-deprecated-dollar-listeners-api.html'
+      url: 'https://eslint.vuejs.org/rules/no-deprecated-dollar-listeners-api.html'
     },
     fixable: null,
     schema: [],
diff --git a/lib/rules/no-deprecated-dollar-scopedslots-api.js b/lib/rules/no-deprecated-dollar-scopedslots-api.js
index bdfa0f84..eaa9b332 100644
--- a/lib/rules/no-deprecated-dollar-scopedslots-api.js
+++ b/lib/rules/no-deprecated-dollar-scopedslots-api.js
@@ -21,8 +21,7 @@ module.exports = {
       description:
         'disallow using deprecated `$scopedSlots` (in Vue.js 3.0.0+)',
       categories: ['vue3-essential'],
-      url:
-        'https://eslint.vuejs.org/rules/no-deprecated-dollar-scopedslots-api.html'
+      url: 'https://eslint.vuejs.org/rules/no-deprecated-dollar-scopedslots-api.html'
     },
     fixable: 'code',
     schema: [],
diff --git a/lib/rules/no-deprecated-functional-template.js b/lib/rules/no-deprecated-functional-template.js
index e489841b..7624ddc5 100644
--- a/lib/rules/no-deprecated-functional-template.js
+++ b/lib/rules/no-deprecated-functional-template.js
@@ -21,8 +21,7 @@ module.exports = {
       description:
         'disallow using deprecated the `functional` template (in Vue.js 3.0.0+)',
       categories: ['vue3-essential'],
-      url:
-        'https://eslint.vuejs.org/rules/no-deprecated-functional-template.html'
+      url: 'https://eslint.vuejs.org/rules/no-deprecated-functional-template.html'
     },
     fixable: null,
     schema: [],
diff --git a/lib/rules/no-deprecated-props-default-this.js b/lib/rules/no-deprecated-props-default-this.js
index 926476c1..b194e791 100644
--- a/lib/rules/no-deprecated-props-default-this.js
+++ b/lib/rules/no-deprecated-props-default-this.js
@@ -20,8 +20,7 @@ module.exports = {
     docs: {
       description: 'disallow props default function `this` access',
       categories: ['vue3-essential'],
-      url:
-        'https://eslint.vuejs.org/rules/no-deprecated-props-default-this.html'
+      url: 'https://eslint.vuejs.org/rules/no-deprecated-props-default-this.html'
     },
     fixable: null,
     schema: [],
diff --git a/lib/rules/no-deprecated-scope-attribute.js b/lib/rules/no-deprecated-scope-attribute.js
index e7e22c3d..dcb5d627 100644
--- a/lib/rules/no-deprecated-scope-attribute.js
+++ b/lib/rules/no-deprecated-scope-attribute.js
@@ -23,9 +23,8 @@ module.exports = {
   },
   /** @param {RuleContext} context */
   create(context) {
-    const templateBodyVisitor = scopeAttribute.createTemplateBodyVisitor(
-      context
-    )
+    const templateBodyVisitor =
+      scopeAttribute.createTemplateBodyVisitor(context)
     return utils.defineTemplateBodyVisitor(context, templateBodyVisitor)
   }
 }
diff --git a/lib/rules/no-deprecated-slot-scope-attribute.js b/lib/rules/no-deprecated-slot-scope-attribute.js
index 793b1ed6..c3a08b8e 100644
--- a/lib/rules/no-deprecated-slot-scope-attribute.js
+++ b/lib/rules/no-deprecated-slot-scope-attribute.js
@@ -14,8 +14,7 @@ module.exports = {
       description:
         'disallow deprecated `slot-scope` attribute (in Vue.js 2.6.0+)',
       categories: ['vue3-essential'],
-      url:
-        'https://eslint.vuejs.org/rules/no-deprecated-slot-scope-attribute.html'
+      url: 'https://eslint.vuejs.org/rules/no-deprecated-slot-scope-attribute.html'
     },
     fixable: 'code',
     schema: [],
diff --git a/lib/rules/no-deprecated-v-on-native-modifier.js b/lib/rules/no-deprecated-v-on-native-modifier.js
index 4f60210b..a37875d6 100644
--- a/lib/rules/no-deprecated-v-on-native-modifier.js
+++ b/lib/rules/no-deprecated-v-on-native-modifier.js
@@ -21,8 +21,7 @@ module.exports = {
       description:
         'disallow using deprecated `.native` modifiers (in Vue.js 3.0.0+)',
       categories: ['vue3-essential'],
-      url:
-        'https://eslint.vuejs.org/rules/no-deprecated-v-on-native-modifier.html'
+      url: 'https://eslint.vuejs.org/rules/no-deprecated-v-on-native-modifier.html'
     },
     fixable: null,
     schema: [],
diff --git a/lib/rules/no-deprecated-v-on-number-modifiers.js b/lib/rules/no-deprecated-v-on-number-modifiers.js
index 24341580..a7e91a09 100644
--- a/lib/rules/no-deprecated-v-on-number-modifiers.js
+++ b/lib/rules/no-deprecated-v-on-number-modifiers.js
@@ -22,8 +22,7 @@ module.exports = {
       description:
         'disallow using deprecated number (keycode) modifiers (in Vue.js 3.0.0+)',
       categories: ['vue3-essential'],
-      url:
-        'https://eslint.vuejs.org/rules/no-deprecated-v-on-number-modifiers.html'
+      url: 'https://eslint.vuejs.org/rules/no-deprecated-v-on-number-modifiers.html'
     },
     fixable: 'code',
     schema: [],
diff --git a/lib/rules/no-deprecated-vue-config-keycodes.js b/lib/rules/no-deprecated-vue-config-keycodes.js
index 4db268e4..c251e954 100644
--- a/lib/rules/no-deprecated-vue-config-keycodes.js
+++ b/lib/rules/no-deprecated-vue-config-keycodes.js
@@ -17,8 +17,7 @@ module.exports = {
       description:
         'disallow using deprecated `Vue.config.keyCodes` (in Vue.js 3.0.0+)',
       categories: ['vue3-essential'],
-      url:
-        'https://eslint.vuejs.org/rules/no-deprecated-vue-config-keycodes.html'
+      url: 'https://eslint.vuejs.org/rules/no-deprecated-vue-config-keycodes.html'
     },
     fixable: null,
     schema: [],
diff --git a/lib/rules/no-extra-parens.js b/lib/rules/no-extra-parens.js
index 3f202fa9..20c25938 100644
--- a/lib/rules/no-extra-parens.js
+++ b/lib/rules/no-extra-parens.js
@@ -176,7 +176,8 @@ function createForVueSyntax(context) {
   }
 
   return {
-    "VAttribute[directive=true][key.name.name='bind'] > VExpressionContainer": verify,
+    "VAttribute[directive=true][key.name.name='bind'] > VExpressionContainer":
+      verify,
     'VElement > VExpressionContainer': verify
   }
 }
diff --git a/lib/rules/no-irregular-whitespace.js b/lib/rules/no-irregular-whitespace.js
index 7c05083b..1cfbd612 100644
--- a/lib/rules/no-irregular-whitespace.js
+++ b/lib/rules/no-irregular-whitespace.js
@@ -15,8 +15,10 @@ const utils = require('../utils')
 // Constants
 // ------------------------------------------------------------------------------
 
-const ALL_IRREGULARS = /[\f\v\u0085\ufeff\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u202f\u205f\u3000\u2028\u2029]/u
-const IRREGULAR_WHITESPACE = /[\f\v\u0085\ufeff\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u202f\u205f\u3000]+/gmu
+const ALL_IRREGULARS =
+  /[\f\v\u0085\ufeff\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u202f\u205f\u3000\u2028\u2029]/u
+const IRREGULAR_WHITESPACE =
+  /[\f\v\u0085\ufeff\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u202f\u205f\u3000]+/gmu
 const IRREGULAR_LINE_TERMINATORS = /[\u2028\u2029]/gmu
 
 // ------------------------------------------------------------------------------
@@ -195,7 +197,8 @@ module.exports = {
     const bodyVisitor = utils.defineTemplateBodyVisitor(context, {
       ...(skipHTMLAttributeValues
         ? {
-            'VAttribute[directive=false] > VLiteral': removeInvalidNodeErrorsInHTMLAttributeValue
+            'VAttribute[directive=false] > VLiteral':
+              removeInvalidNodeErrorsInHTMLAttributeValue
           }
         : {}),
       ...(skipHTMLTextContents
diff --git a/lib/rules/no-potential-component-option-typo.js b/lib/rules/no-potential-component-option-typo.js
index cf3b33cd..ddd6f386 100644
--- a/lib/rules/no-potential-component-option-typo.js
+++ b/lib/rules/no-potential-component-option-typo.js
@@ -17,8 +17,7 @@ module.exports = {
       description: 'disallow a potential typo in your component property',
       categories: undefined,
       recommended: false,
-      url:
-        'https://eslint.vuejs.org/rules/no-potential-component-option-typo.html'
+      url: 'https://eslint.vuejs.org/rules/no-potential-component-option-typo.html'
     },
     fixable: null,
     schema: [
diff --git a/lib/rules/no-restricted-v-bind.js b/lib/rules/no-restricted-v-bind.js
index 02ac6e39..d15bb4ca 100644
--- a/lib/rules/no-restricted-v-bind.js
+++ b/lib/rules/no-restricted-v-bind.js
@@ -137,9 +137,8 @@ module.exports = {
   /** @param {RuleContext} context */
   create(context) {
     /** @type {ParsedOption[]} */
-    const options = (context.options.length === 0
-      ? DEFAULT_OPTIONS
-      : context.options
+    const options = (
+      context.options.length === 0 ? DEFAULT_OPTIONS : context.options
     ).map(parseOption)
 
     return utils.defineTemplateBodyVisitor(context, {
diff --git a/lib/rules/no-side-effects-in-computed-properties.js b/lib/rules/no-side-effects-in-computed-properties.js
index 7c0639b9..54ededbd 100644
--- a/lib/rules/no-side-effects-in-computed-properties.js
+++ b/lib/rules/no-side-effects-in-computed-properties.js
@@ -21,8 +21,7 @@ module.exports = {
     docs: {
       description: 'disallow side effects in computed properties',
       categories: ['vue3-essential', 'essential'],
-      url:
-        'https://eslint.vuejs.org/rules/no-side-effects-in-computed-properties.html'
+      url: 'https://eslint.vuejs.org/rules/no-side-effects-in-computed-properties.html'
     },
     fixable: null,
     schema: []
@@ -104,9 +103,9 @@ module.exports = {
           }
           const targetBody = scopeStack.body
 
-          const computedProperty = /** @type {ComponentComputedProperty[]} */ (computedPropertiesMap.get(
-            vueNode
-          )).find((cp) => {
+          const computedProperty = /** @type {ComponentComputedProperty[]} */ (
+            computedPropertiesMap.get(vueNode)
+          ).find((cp) => {
             return (
               cp.value &&
               node.loc.start.line >= cp.value.loc.start.line &&
diff --git a/lib/rules/no-spaces-around-equal-signs-in-attribute.js b/lib/rules/no-spaces-around-equal-signs-in-attribute.js
index 8357fbf3..31c29058 100644
--- a/lib/rules/no-spaces-around-equal-signs-in-attribute.js
+++ b/lib/rules/no-spaces-around-equal-signs-in-attribute.js
@@ -20,8 +20,7 @@ module.exports = {
     docs: {
       description: 'disallow spaces around equal signs in attribute',
       categories: ['vue3-strongly-recommended', 'strongly-recommended'],
-      url:
-        'https://eslint.vuejs.org/rules/no-spaces-around-equal-signs-in-attribute.html'
+      url: 'https://eslint.vuejs.org/rules/no-spaces-around-equal-signs-in-attribute.html'
     },
     fixable: 'whitespace',
     schema: []
diff --git a/lib/rules/no-useless-mustaches.js b/lib/rules/no-useless-mustaches.js
index 845c42f9..8e5a6cee 100644
--- a/lib/rules/no-useless-mustaches.js
+++ b/lib/rules/no-useless-mustaches.js
@@ -19,9 +19,10 @@ function stripQuotesForHTML(text) {
     return text.slice(1, -1)
   }
 
-  const re = /^(?:&(?:quot|apos|#\d+|#x[\da-f]+);|["'`])([\s\S]*)(?:&(?:quot|apos|#\d+|#x[\da-f]+);|["'`])$/u.exec(
-    text
-  )
+  const re =
+    /^(?:&(?:quot|apos|#\d+|#x[\da-f]+);|["'`])([\s\S]*)(?:&(?:quot|apos|#\d+|#x[\da-f]+);|["'`])$/u.exec(
+      text
+    )
   if (!re) {
     return null
   }
diff --git a/lib/rules/no-useless-v-bind.js b/lib/rules/no-useless-v-bind.js
index 5d4dc006..749a292e 100644
--- a/lib/rules/no-useless-v-bind.js
+++ b/lib/rules/no-useless-v-bind.js
@@ -145,7 +145,8 @@ module.exports = {
     }
 
     return utils.defineTemplateBodyVisitor(context, {
-      "VAttribute[directive=true][key.name.name='bind'][key.argument!=null]": verify
+      "VAttribute[directive=true][key.name.name='bind'][key.argument!=null]":
+        verify
     })
   }
 }
diff --git a/lib/rules/require-explicit-emits.js b/lib/rules/require-explicit-emits.js
index ec356364..79742825 100644
--- a/lib/rules/require-explicit-emits.js
+++ b/lib/rules/require-explicit-emits.js
@@ -387,10 +387,9 @@ function buildSuggest(object, emits, nameNode, context) {
     const sourceCode = context.getSourceCode()
     const emitsOptionValue = emitsOption.value
     if (emitsOptionValue.type === 'ArrayExpression') {
-      const leftBracket = /** @type {Token} */ (sourceCode.getFirstToken(
-        emitsOptionValue,
-        isLeftBracket
-      ))
+      const leftBracket = /** @type {Token} */ (
+        sourceCode.getFirstToken(emitsOptionValue, isLeftBracket)
+      )
       return [
         {
           messageId: 'addOneOption',
@@ -406,10 +405,9 @@ function buildSuggest(object, emits, nameNode, context) {
         }
       ]
     } else if (emitsOptionValue.type === 'ObjectExpression') {
-      const leftBrace = /** @type {Token} */ (sourceCode.getFirstToken(
-        emitsOptionValue,
-        isLeftBrace
-      ))
+      const leftBrace = /** @type {Token} */ (
+        sourceCode.getFirstToken(emitsOptionValue, isLeftBrace)
+      )
       return [
         {
           messageId: 'addOneOption',
@@ -451,14 +449,12 @@ function buildSuggest(object, emits, nameNode, context) {
             `,\nemits: ['${nameNode.value}']`
           )
         } else {
-          const objectLeftBrace = /** @type {Token} */ (sourceCode.getFirstToken(
-            object,
-            isLeftBrace
-          ))
-          const objectRightBrace = /** @type {Token} */ (sourceCode.getLastToken(
-            object,
-            isRightBrace
-          ))
+          const objectLeftBrace = /** @type {Token} */ (
+            sourceCode.getFirstToken(object, isLeftBrace)
+          )
+          const objectRightBrace = /** @type {Token} */ (
+            sourceCode.getLastToken(object, isRightBrace)
+          )
           return fixer.insertTextAfter(
             objectLeftBrace,
             `\nemits: ['${nameNode.value}']${
@@ -488,14 +484,12 @@ function buildSuggest(object, emits, nameNode, context) {
             `,\nemits: {'${nameNode.value}': null}`
           )
         } else {
-          const objectLeftBrace = /** @type {Token} */ (sourceCode.getFirstToken(
-            object,
-            isLeftBrace
-          ))
-          const objectRightBrace = /** @type {Token} */ (sourceCode.getLastToken(
-            object,
-            isRightBrace
-          ))
+          const objectLeftBrace = /** @type {Token} */ (
+            sourceCode.getFirstToken(object, isLeftBrace)
+          )
+          const objectRightBrace = /** @type {Token} */ (
+            sourceCode.getLastToken(object, isRightBrace)
+          )
           return fixer.insertTextAfter(
             objectLeftBrace,
             `\nemits: {'${nameNode.value}': null}${
diff --git a/lib/rules/require-toggle-inside-transition.js b/lib/rules/require-toggle-inside-transition.js
index 12b77d74..223e4f9b 100644
--- a/lib/rules/require-toggle-inside-transition.js
+++ b/lib/rules/require-toggle-inside-transition.js
@@ -21,8 +21,7 @@ module.exports = {
       description:
         'require control the display of the content inside `<transition>`',
       categories: ['vue3-essential'],
-      url:
-        'https://eslint.vuejs.org/rules/require-toggle-inside-transition.html'
+      url: 'https://eslint.vuejs.org/rules/require-toggle-inside-transition.html'
     },
     fixable: null,
     schema: [],
diff --git a/lib/rules/singleline-html-element-content-newline.js b/lib/rules/singleline-html-element-content-newline.js
index 52b5ed1f..2ac1eba9 100644
--- a/lib/rules/singleline-html-element-content-newline.js
+++ b/lib/rules/singleline-html-element-content-newline.js
@@ -61,8 +61,7 @@ module.exports = {
       description:
         'require a line break before and after the contents of a singleline element',
       categories: ['vue3-strongly-recommended', 'strongly-recommended'],
-      url:
-        'https://eslint.vuejs.org/rules/singleline-html-element-content-newline.html'
+      url: 'https://eslint.vuejs.org/rules/singleline-html-element-content-newline.html'
     },
     fixable: 'whitespace',
     schema: [
@@ -157,14 +156,12 @@ module.exports = {
           return
         }
 
-        const contentFirst = /** @type {Token} */ (template.getTokenAfter(
-          elem.startTag,
-          getTokenOption
-        ))
-        const contentLast = /** @type {Token} */ (template.getTokenBefore(
-          elem.endTag,
-          getTokenOption
-        ))
+        const contentFirst = /** @type {Token} */ (
+          template.getTokenAfter(elem.startTag, getTokenOption)
+        )
+        const contentLast = /** @type {Token} */ (
+          template.getTokenBefore(elem.endTag, getTokenOption)
+        )
 
         context.report({
           node: template.getLastToken(elem.startTag),
diff --git a/lib/rules/syntaxes/dynamic-directive-arguments.js b/lib/rules/syntaxes/dynamic-directive-arguments.js
index 9a790e9f..e670fa3f 100644
--- a/lib/rules/syntaxes/dynamic-directive-arguments.js
+++ b/lib/rules/syntaxes/dynamic-directive-arguments.js
@@ -20,7 +20,8 @@ module.exports = {
     }
 
     return {
-      'VAttribute[directive=true] > VDirectiveKey > VExpressionContainer': reportDynamicArgument
+      'VAttribute[directive=true] > VDirectiveKey > VExpressionContainer':
+        reportDynamicArgument
     }
   }
 }
diff --git a/lib/rules/syntaxes/scope-attribute.js b/lib/rules/syntaxes/scope-attribute.js
index c356a675..af7dbcd2 100644
--- a/lib/rules/syntaxes/scope-attribute.js
+++ b/lib/rules/syntaxes/scope-attribute.js
@@ -23,7 +23,8 @@ module.exports = {
     }
 
     return {
-      "VAttribute[directive=true] > VDirectiveKey[name.name='scope']": reportScope
+      "VAttribute[directive=true] > VDirectiveKey[name.name='scope']":
+        reportScope
     }
   }
 }
diff --git a/lib/rules/syntaxes/slot-attribute.js b/lib/rules/syntaxes/slot-attribute.js
index 8b439274..d5fa6189 100644
--- a/lib/rules/syntaxes/slot-attribute.js
+++ b/lib/rules/syntaxes/slot-attribute.js
@@ -128,7 +128,8 @@ module.exports = {
 
     return {
       "VAttribute[directive=false][key.name='slot']": reportSlot,
-      "VAttribute[directive=true][key.name.name='bind'][key.argument.name='slot']": reportVBindSlot
+      "VAttribute[directive=true][key.name.name='bind'][key.argument.name='slot']":
+        reportVBindSlot
     }
   }
 }
diff --git a/lib/rules/syntaxes/v-bind-prop-modifier-shorthand.js b/lib/rules/syntaxes/v-bind-prop-modifier-shorthand.js
index 219d2b3c..5a53a9e3 100644
--- a/lib/rules/syntaxes/v-bind-prop-modifier-shorthand.js
+++ b/lib/rules/syntaxes/v-bind-prop-modifier-shorthand.js
@@ -27,7 +27,8 @@ module.exports = {
     }
 
     return {
-      "VAttribute[directive=true] > VDirectiveKey[name.name='bind'][name.rawName='.']": reportPropModifierShorthand
+      "VAttribute[directive=true] > VDirectiveKey[name.name='bind'][name.rawName='.']":
+        reportPropModifierShorthand
     }
   }
 }
diff --git a/lib/rules/this-in-template.js b/lib/rules/this-in-template.js
index 8ed42345..671ac56a 100644
--- a/lib/rules/this-in-template.js
+++ b/lib/rules/this-in-template.js
@@ -23,7 +23,7 @@ module.exports = {
       categories: ['vue3-recommended', 'recommended'],
       url: 'https://eslint.vuejs.org/rules/this-in-template.html'
     },
-    fixable: null,
+    fixable: 'code',
     schema: [
       {
         enum: ['always', 'never']
@@ -91,6 +91,10 @@ module.exports = {
               context.report({
                 node,
                 loc: node.loc,
+                fix(fixer) {
+                  // node.parent should be some code like `this.test`, `this?.['result']`
+                  return fixer.replaceText(node.parent, propertyName)
+                },
                 message: "Unexpected usage of 'this'."
               })
             }
@@ -116,7 +120,10 @@ module.exports = {
                     context.report({
                       node: reference.id,
                       loc: reference.id.loc,
-                      message: "Expected 'this'."
+                      message: "Expected 'this'.",
+                      fix(fixer) {
+                        return fixer.insertTextBefore(reference.id, 'this.')
+                      }
                     })
                   }
                 }
diff --git a/lib/rules/v-for-delimiter-style.js b/lib/rules/v-for-delimiter-style.js
index ef0086cf..a50b6a59 100644
--- a/lib/rules/v-for-delimiter-style.js
+++ b/lib/rules/v-for-delimiter-style.js
@@ -40,12 +40,14 @@ module.exports = {
           context.parserServices.getTemplateBodyTokenStore &&
           context.parserServices.getTemplateBodyTokenStore()
 
-        const delimiterToken = /** @type {Token} */ (tokenStore.getTokenAfter(
-          node.left.length
-            ? node.left[node.left.length - 1]
-            : tokenStore.getFirstToken(node),
-          (token) => token.type !== 'Punctuator' || token.value !== ')'
-        ))
+        const delimiterToken = /** @type {Token} */ (
+          tokenStore.getTokenAfter(
+            node.left.length
+              ? node.left[node.left.length - 1]
+              : tokenStore.getFirstToken(node),
+            (token) => token.type !== 'Punctuator' || token.value !== ')'
+          )
+        )
 
         if (delimiterToken.value === preferredDelimiter) {
           return
diff --git a/lib/rules/v-slot-style.js b/lib/rules/v-slot-style.js
index f0cbe361..1bb5f57f 100644
--- a/lib/rules/v-slot-style.js
+++ b/lib/rules/v-slot-style.js
@@ -28,7 +28,10 @@ function normalizeOptions(options) {
   }
 
   if (typeof options === 'string') {
-    normalized.atComponent = normalized.default = normalized.named = /** @type {"shorthand" | "longform"} */ (options)
+    normalized.atComponent =
+      normalized.default =
+      normalized.named =
+        /** @type {"shorthand" | "longform"} */ (options)
   } else if (options != null) {
     /** @type {(keyof Options)[]} */
     const keys = ['atComponent', 'default', 'named']
diff --git a/lib/utils/indent-common.js b/lib/utils/indent-common.js
index 9e6bfdef..5f1e2363 100644
--- a/lib/utils/indent-common.js
+++ b/lib/utils/indent-common.js
@@ -739,10 +739,9 @@ module.exports.defineVisitor = function create(
         return true
       }
       if (parent.type === 'CallExpression' || parent.type === 'NewExpression') {
-        const openParen = /** @type {Token} */ (tokenStore.getTokenAfter(
-          parent.callee,
-          isNotRightParen
-        ))
+        const openParen = /** @type {Token} */ (
+          tokenStore.getTokenAfter(parent.callee, isNotRightParen)
+        )
         return parent.arguments.some(
           (param) =>
             getFirstAndLastTokens(param, openParen.range[1]).firstToken
@@ -1215,10 +1214,9 @@ module.exports.defineVisitor = function create(
     VForExpression(node) {
       const firstToken = tokenStore.getFirstToken(node)
       const lastOfLeft = last(node.left) || firstToken
-      const inToken = /** @type {Token} */ (tokenStore.getTokenAfter(
-        lastOfLeft,
-        isNotRightParen
-      ))
+      const inToken = /** @type {Token} */ (
+        tokenStore.getTokenAfter(lastOfLeft, isNotRightParen)
+      )
       const rightToken = tokenStore.getFirstToken(node.right)
 
       if (isLeftParen(firstToken)) {
@@ -1296,10 +1294,9 @@ module.exports.defineVisitor = function create(
       node
     ) {
       const leftToken = getChainHeadToken(node)
-      const opToken = /** @type {Token} */ (tokenStore.getTokenAfter(
-        node.left,
-        isNotRightParen
-      ))
+      const opToken = /** @type {Token} */ (
+        tokenStore.getTokenAfter(node.left, isNotRightParen)
+      )
       const rightToken = tokenStore.getTokenAfter(opToken)
       const prevToken = tokenStore.getTokenBefore(leftToken)
       const shouldIndent =
@@ -1392,15 +1389,13 @@ module.exports.defineVisitor = function create(
     ConditionalExpression(node) {
       const prevToken = tokenStore.getTokenBefore(node)
       const firstToken = tokenStore.getFirstToken(node)
-      const questionToken = /** @type {Token} */ (tokenStore.getTokenAfter(
-        node.test,
-        isNotRightParen
-      ))
+      const questionToken = /** @type {Token} */ (
+        tokenStore.getTokenAfter(node.test, isNotRightParen)
+      )
       const consequentToken = tokenStore.getTokenAfter(questionToken)
-      const colonToken = /** @type {Token} */ (tokenStore.getTokenAfter(
-        node.consequent,
-        isNotRightParen
-      ))
+      const colonToken = /** @type {Token} */ (
+        tokenStore.getTokenAfter(node.consequent, isNotRightParen)
+      )
       const alternateToken = tokenStore.getTokenAfter(colonToken)
       const isFlat =
         prevToken &&
@@ -1421,10 +1416,9 @@ module.exports.defineVisitor = function create(
     /** @param {DoWhileStatement} node */
     DoWhileStatement(node) {
       const doToken = tokenStore.getFirstToken(node)
-      const whileToken = /** @type {Token} */ (tokenStore.getTokenAfter(
-        node.body,
-        isNotRightParen
-      ))
+      const whileToken = /** @type {Token} */ (
+        tokenStore.getTokenAfter(node.body, isNotRightParen)
+      )
       const leftToken = tokenStore.getTokenAfter(whileToken)
       const testToken = tokenStore.getTokenAfter(leftToken)
       const lastToken = tokenStore.getLastToken(node)
@@ -1464,8 +1458,9 @@ module.exports.defineVisitor = function create(
     ExportDefaultDeclaration(node) {
       const exportToken = tokenStore.getFirstToken(node)
       const defaultToken = tokenStore.getFirstToken(node, 1)
-      const declarationToken = getFirstAndLastTokens(node.declaration)
-        .firstToken
+      const declarationToken = getFirstAndLastTokens(
+        node.declaration
+      ).firstToken
       setOffset([defaultToken, declarationToken], 1, exportToken)
     },
     /** @param {ExportNamedDeclaration} node */
@@ -1480,10 +1475,9 @@ module.exports.defineVisitor = function create(
         if (!firstSpecifier || firstSpecifier.type === 'ExportSpecifier') {
           // export {foo, bar}; or export {foo, bar} from "mod";
           const leftParenToken = tokenStore.getFirstToken(node, 1)
-          const rightParenToken = /** @type {Token} */ (tokenStore.getLastToken(
-            node,
-            isRightBrace
-          ))
+          const rightParenToken = /** @type {Token} */ (
+            tokenStore.getLastToken(node, isRightBrace)
+          )
           setOffset(leftParenToken, 0, exportToken)
           processNodeList(node.specifiers, leftParenToken, rightParenToken, 1)
 
@@ -1517,10 +1511,9 @@ module.exports.defineVisitor = function create(
         null
       const leftParenToken = tokenStore.getTokenAfter(awaitToken || forToken)
       const leftToken = tokenStore.getTokenAfter(leftParenToken)
-      const inToken = /** @type {Token} */ (tokenStore.getTokenAfter(
-        leftToken,
-        isNotRightParen
-      ))
+      const inToken = /** @type {Token} */ (
+        tokenStore.getTokenAfter(leftToken, isNotRightParen)
+      )
       const rightToken = tokenStore.getTokenAfter(inToken)
       const rightParenToken = tokenStore.getTokenBefore(
         node.body,
@@ -1615,10 +1608,9 @@ module.exports.defineVisitor = function create(
       processMaybeBlock(node.consequent, ifToken)
 
       if (node.alternate != null) {
-        const elseToken = /** @type {Token} */ (tokenStore.getTokenAfter(
-          node.consequent,
-          isNotRightParen
-        ))
+        const elseToken = /** @type {Token} */ (
+          tokenStore.getTokenAfter(node.consequent, isNotRightParen)
+        )
 
         setOffset(elseToken, 0, ifToken)
         processMaybeBlock(node.alternate, elseToken)
@@ -1739,10 +1731,9 @@ module.exports.defineVisitor = function create(
     'MemberExpression, MetaProperty'(node) {
       const objectToken = tokenStore.getFirstToken(node)
       if (node.type === 'MemberExpression' && node.computed) {
-        const leftBracketToken = /** @type {Token} */ (tokenStore.getTokenBefore(
-          node.property,
-          isLeftBracket
-        ))
+        const leftBracketToken = /** @type {Token} */ (
+          tokenStore.getTokenBefore(node.property, isLeftBracket)
+        )
         const propertyToken = tokenStore.getTokenAfter(leftBracketToken)
         const rightBracketToken = tokenStore.getTokenAfter(
           node.property,
@@ -1772,15 +1763,13 @@ module.exports.defineVisitor = function create(
       /** @type {Token} */
       let lastKeyToken
       if (node.computed) {
-        const keyLeftToken = /** @type {Token} */ (tokenStore.getFirstToken(
-          node,
-          isLeftBracket
-        ))
+        const keyLeftToken = /** @type {Token} */ (
+          tokenStore.getFirstToken(node, isLeftBracket)
+        )
         const keyToken = tokenStore.getTokenAfter(keyLeftToken)
-        const keyRightToken = (lastKeyToken = /** @type {Token} */ (tokenStore.getTokenAfter(
-          node.key,
-          isRightBracket
-        )))
+        const keyRightToken = (lastKeyToken = /** @type {Token} */ (
+          tokenStore.getTokenAfter(node.key, isRightBracket)
+        ))
 
         if (hasPrefix) {
           setOffset(keyLeftToken, 0, /** @type {Token} */ (last(prefixTokens)))
@@ -1864,10 +1853,9 @@ module.exports.defineVisitor = function create(
       const switchToken = tokenStore.getFirstToken(node)
       const leftParenToken = tokenStore.getTokenAfter(switchToken)
       const discriminantToken = tokenStore.getTokenAfter(leftParenToken)
-      const leftBraceToken = /** @type {Token} */ (tokenStore.getTokenAfter(
-        node.discriminant,
-        isLeftBrace
-      ))
+      const leftBraceToken = /** @type {Token} */ (
+        tokenStore.getTokenAfter(node.discriminant, isLeftBrace)
+      )
       const rightParenToken = tokenStore.getTokenBefore(leftBraceToken)
       const rightBraceToken = tokenStore.getLastToken(node)
 
diff --git a/lib/utils/index.js b/lib/utils/index.js
index 0bcf8016..e78238ee 100644
--- a/lib/utils/index.js
+++ b/lib/utils/index.js
@@ -266,18 +266,16 @@ module.exports = {
         }
 
         if (skipDynamicArgumentsReport) {
-          context = wrapContextToOverrideReportMethodToSkipDynamicArgument(
-            context
-          )
+          context =
+            wrapContextToOverrideReportMethodToSkipDynamicArgument(context)
         }
 
         // Move `Program` handlers to `VElement[parent.type!='VElement']`
         const coreHandlers = coreRule.create(context)
 
-        const handlers = /** @type {TemplateListener} */ (Object.assign(
-          {},
-          coreHandlers
-        ))
+        const handlers = /** @type {TemplateListener} */ (
+          Object.assign({}, coreHandlers)
+        )
         if (handlers.Program) {
           handlers["VElement[parent.type!='VElement']"] = handlers.Program
           delete handlers.Program
@@ -838,11 +836,14 @@ module.exports = {
         if (propValue.type === 'FunctionExpression') {
           value = propValue.body
         } else if (propValue.type === 'ObjectExpression') {
-          const get = /** @type {(Property & { value: FunctionExpression }) | null} */ (findProperty(
-            propValue,
-            'get',
-            (p) => p.value.type === 'FunctionExpression'
-          ))
+          const get =
+            /** @type {(Property & { value: FunctionExpression }) | null} */ (
+              findProperty(
+                propValue,
+                'get',
+                (p) => p.value.type === 'FunctionExpression'
+              )
+            )
           value = get ? get.value.body : null
         }
 
@@ -870,13 +871,16 @@ module.exports = {
     }
 
     if (arg.type === 'ObjectExpression') {
-      const getProperty = /** @type {(Property & { value: FunctionExpression | ArrowFunctionExpression }) | null} */ (findProperty(
-        arg,
-        'get',
-        (p) =>
-          p.value.type === 'FunctionExpression' ||
-          p.value.type === 'ArrowFunctionExpression'
-      ))
+      const getProperty =
+        /** @type {(Property & { value: FunctionExpression | ArrowFunctionExpression }) | null} */ (
+          findProperty(
+            arg,
+            'get',
+            (p) =>
+              p.value.type === 'FunctionExpression' ||
+              p.value.type === 'ArrowFunctionExpression'
+          )
+        )
       return getProperty ? getProperty.value : null
     }
 
diff --git a/lib/utils/svg-attributes-weird-case.json b/lib/utils/svg-attributes-weird-case.json
new file mode 100644
index 00000000..fb28f892
--- /dev/null
+++ b/lib/utils/svg-attributes-weird-case.json
@@ -0,0 +1,138 @@
+[
+  "accent-height",
+  "alignment-baseline",
+  "arabic-form",
+  "attributeName",
+  "attributeType",
+  "baseFrequency",
+  "baseline-shift",
+  "baseProfile",
+  "calcMode",
+  "cap-height",
+  "clipPathUnits",
+  "clip-path",
+  "clip-rule",
+  "color-interpolation",
+  "color-interpolation-filters",
+  "color-profile",
+  "color-rendering",
+  "contentScriptType",
+  "contentStyleType",
+  "diffuseConstant",
+  "dominant-baseline",
+  "edgeMode",
+  "enable-background",
+  "externalResourcesRequired",
+  "fill-opacity",
+  "fill-rule",
+  "filterRes",
+  "filterUnits",
+  "flood-color",
+  "flood-opacity",
+  "font-family",
+  "font-size",
+  "font-size-adjust",
+  "font-stretch",
+  "font-style",
+  "font-variant",
+  "font-weight",
+  "glyph-name",
+  "glyph-orientation-horizontal",
+  "glyph-orientation-vertical",
+  "glyphRef",
+  "gradientTransform",
+  "gradientUnits",
+  "horiz-adv-x",
+  "horiz-origin-x",
+  "image-rendering",
+  "kernelMatrix",
+  "kernelUnitLength",
+  "keyPoints",
+  "keySplines",
+  "keyTimes",
+  "lengthAdjust",
+  "letter-spacing",
+  "lighting-color",
+  "limitingConeAngle",
+  "marker-end",
+  "marker-mid",
+  "marker-start",
+  "markerHeight",
+  "markerUnits",
+  "markerWidth",
+  "maskContentUnits",
+  "maskUnits",
+  "numOctaves",
+  "overline-position",
+  "overline-thickness",
+  "panose-1",
+  "paint-order",
+  "pathLength",
+  "patternContentUnits",
+  "patternTransform",
+  "patternUnits",
+  "pointer-events",
+  "pointsAtX",
+  "pointsAtY",
+  "pointsAtZ",
+  "preserveAlpha",
+  "preserveAspectRatio",
+  "primitiveUnits",
+  "referrerPolicy",
+  "refX",
+  "refY",
+  "rendering-intent",
+  "repeatCount",
+  "repeatDur",
+  "requiredExtensions",
+  "requiredFeatures",
+  "shape-rendering",
+  "specularConstant",
+  "specularExponent",
+  "spreadMethod",
+  "startOffset",
+  "stdDeviation",
+  "stitchTiles",
+  "stop-color",
+  "stop-opacity",
+  "strikethrough-position",
+  "strikethrough-thickness",
+  "stroke-dasharray",
+  "stroke-dashoffset",
+  "stroke-linecap",
+  "stroke-linejoin",
+  "stroke-miterlimit",
+  "stroke-opacity",
+  "stroke-width",
+  "surfaceScale",
+  "systemLanguage",
+  "tableValues",
+  "targetX",
+  "targetY",
+  "text-anchor",
+  "text-decoration",
+  "text-rendering",
+  "textLength",
+  "transform-origin",
+  "underline-position",
+  "underline-thickness",
+  "unicode-bidi",
+  "unicode-range",
+  "units-per-em",
+  "v-alphabetic",
+  "v-hanging",
+  "v-ideographic",
+  "v-mathematical",
+  "vector-effect",
+  "vert-adv-y",
+  "vert-origin-x",
+  "vert-origin-y",
+  "viewBox",
+  "viewTarget",
+  "word-spacing",
+  "writing-mode",
+  "x-height",
+  "xChannelSelector",
+  "yChannelSelector",
+  "zoomAndPan"
+]
\ No newline at end of file
diff --git a/tools/lib/categories.js b/tools/lib/categories.js
index 9f7fd796..7223fd87 100644
--- a/tools/lib/categories.js
+++ b/tools/lib/categories.js
@@ -18,20 +18,17 @@ const categoryTitles = {
       'Priority A: Essential (Error Prevention) <badge text="for Vue.js 3.x" vertical="middle">for Vue.js 3.x</badge>'
   },
   'vue3-strongly-recommended': {
-    text:
-      'Priority B: Strongly Recommended (Improving Readability) for Vue.js 3.x',
+    text: 'Priority B: Strongly Recommended (Improving Readability) for Vue.js 3.x',
     vuepress:
       'Priority B: Strongly Recommended (Improving Readability) <badge text="for Vue.js 3.x" vertical="middle">for Vue.js 3.x</badge>'
   },
   'vue3-recommended': {
-    text:
-      'Priority C: Recommended (Minimizing Arbitrary Choices and Cognitive Overhead) for Vue.js 3.x',
+    text: 'Priority C: Recommended (Minimizing Arbitrary Choices and Cognitive Overhead) for Vue.js 3.x',
     vuepress:
       'Priority C: Recommended (Minimizing Arbitrary Choices and Cognitive Overhead) <badge text="for Vue.js 3.x" vertical="middle">for Vue.js 3.x</badge>'
   },
   'vue3-use-with-caution': {
-    text:
-      'Priority D: Use with Caution (Potentially Dangerous Patterns) for Vue.js 3.x',
+    text: 'Priority D: Use with Caution (Potentially Dangerous Patterns) for Vue.js 3.x',
     vuepress:
       'Priority D: Use with Caution (Potentially Dangerous Patterns) <badge text="for Vue.js 3.x" vertical="middle">for Vue.js 3.x</badge>'
   },
@@ -41,20 +38,17 @@ const categoryTitles = {
       'Priority A: Essential (Error Prevention) <badge text="for Vue.js 2.x" vertical="middle" type="warn">for Vue.js 2.x</badge>'
   },
   'strongly-recommended': {
-    text:
-      'Priority B: Strongly Recommended (Improving Readability) for Vue.js 2.x',
+    text: 'Priority B: Strongly Recommended (Improving Readability) for Vue.js 2.x',
     vuepress:
       'Priority B: Strongly Recommended (Improving Readability) <badge text="for Vue.js 2.x" vertical="middle" type="warn">for Vue.js 2.x</badge>'
   },
   recommended: {
-    text:
-      'Priority C: Recommended (Minimizing Arbitrary Choices and Cognitive Overhead) for Vue.js 2.x',
+    text: 'Priority C: Recommended (Minimizing Arbitrary Choices and Cognitive Overhead) for Vue.js 2.x',
     vuepress:
       'Priority C: Recommended (Minimizing Arbitrary Choices and Cognitive Overhead) <badge text="for Vue.js 2.x" vertical="middle" type="warn">for Vue.js 2.x</badge>'
   },
   'use-with-caution': {
-    text:
-      'Priority D: Use with Caution (Potentially Dangerous Patterns) for Vue.js 2.x',
+    text: 'Priority D: Use with Caution (Potentially Dangerous Patterns) for Vue.js 2.x',
     vuepress:
       'Priority D: Use with Caution (Potentially Dangerous Patterns) <badge text="for Vue.js 2.x" vertical="middle" type="warn">for Vue.js 2.x</badge>'
   }


Test patch:
diff --git a/tests/lib/rules/attribute-hyphenation.js b/tests/lib/rules/attribute-hyphenation.js
index 284017a3..7e7f2ea9 100644
--- a/tests/lib/rules/attribute-hyphenation.js
+++ b/tests/lib/rules/attribute-hyphenation.js
@@ -29,26 +29,22 @@ ruleTester.run('attribute-hyphenation', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><custom data-id="foo" aria-test="bar" slot-scope="{ data }" my-prop="prop"></custom></div></template>',
+      code: '<template><div><custom data-id="foo" aria-test="bar" slot-scope="{ data }" my-prop="prop"></custom></div></template>',
       options: ['always']
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><custom data-id="foo" aria-test="bar" slot-scope="{ data }" myProp="prop"></custom></div></template>',
+      code: '<template><div><custom data-id="foo" aria-test="bar" slot-scope="{ data }" myProp="prop"></custom></div></template>',
       options: ['never']
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div data-id="foo" aria-test="bar" slot-scope="{ data }"><a onClick="" my-prop="prop"></a></div></template>',
+      code: '<template><div data-id="foo" aria-test="bar" slot-scope="{ data }"><a onClick="" my-prop="prop"></a></div></template>',
       options: ['never']
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><custom data-id="foo" aria-test="bar" slot-scope="{ data }" custom-hyphen="foo" second-custom="bar"><a onClick="" my-prop="prop"></a></custom></template>',
+      code: '<template><custom data-id="foo" aria-test="bar" slot-scope="{ data }" custom-hyphen="foo" second-custom="bar"><a onClick="" my-prop="prop"></a></custom></template>',
       options: ['never', { ignore: ['custom-hyphen', 'second-custom'] }]
     },
     {
@@ -120,8 +116,7 @@ ruleTester.run('attribute-hyphenation', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><custom v-bind:my-prop="prop"></custom></div></template>',
+      code: '<template><div><custom v-bind:my-prop="prop"></custom></div></template>',
       output:
         '<template><div><custom v-bind:myProp="prop"></custom></div></template>',
       options: ['never'],
@@ -135,8 +130,7 @@ ruleTester.run('attribute-hyphenation', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><custom v-bind:MyProp="prop"></custom></div></template>',
+      code: '<template><div><custom v-bind:MyProp="prop"></custom></div></template>',
       output:
         '<template><div><custom v-bind:my-prop="prop"></custom></div></template>',
       options: ['always'],
@@ -150,8 +144,7 @@ ruleTester.run('attribute-hyphenation', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><custom v-bind:MyProp="prop"></custom></div></template>',
+      code: '<template><div><custom v-bind:MyProp="prop"></custom></div></template>',
       output:
         '<template><div><custom v-bind:my-prop="prop"></custom></div></template>',
       options: ['always', { ignore: [] }],
@@ -165,8 +158,7 @@ ruleTester.run('attribute-hyphenation', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><custom v-bind:my-prop="prop" :second-prop="test"></custom></div></template>',
+      code: '<template><div><custom v-bind:my-prop="prop" :second-prop="test"></custom></div></template>',
       output:
         '<template><div><custom v-bind:my-prop="prop" :secondProp="test"></custom></div></template>',
       options: ['never', { ignore: ['my-prop'] }],
@@ -180,8 +172,7 @@ ruleTester.run('attribute-hyphenation', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><custom v-bind:myProp="prop" :secondProp="test"></custom></div></template>',
+      code: '<template><div><custom v-bind:myProp="prop" :secondProp="test"></custom></div></template>',
       output:
         '<template><div><custom v-bind:my-prop="prop" :secondProp="test"></custom></div></template>',
       options: ['always', { ignore: ['secondProp'] }],
@@ -195,8 +186,7 @@ ruleTester.run('attribute-hyphenation', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><custom v-bind:propID="prop" :secondPropID="test"></custom></div></template>',
+      code: '<template><div><custom v-bind:propID="prop" :secondPropID="test"></custom></div></template>',
       output:
         '<template><div><custom v-bind:prop-i-d="prop" :secondPropID="test"></custom></div></template>',
       options: ['always', { ignore: ['secondPropID'] }],
diff --git a/tests/lib/rules/attributes-order.js b/tests/lib/rules/attributes-order.js
index c956dae8..b08ab161 100644
--- a/tests/lib/rules/attributes-order.js
+++ b/tests/lib/rules/attributes-order.js
@@ -194,13 +194,11 @@ tester.run('attributes-order', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div propone="prop" proptwo="prop" propthree="prop"></div></template>'
+      code: '<template><div propone="prop" proptwo="prop" propthree="prop"></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div propone="prop" proptwo="prop" is="header"></div></template>',
+      code: '<template><div propone="prop" proptwo="prop" is="header"></div></template>',
       options: [
         {
           order: [
@@ -221,8 +219,7 @@ tester.run('attributes-order', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div ref="header" is="header" propone="prop" proptwo="prop"></div></template>',
+      code: '<template><div ref="header" is="header" propone="prop" proptwo="prop"></div></template>',
       options: [
         {
           order: [
@@ -546,8 +543,7 @@ tester.run('attributes-order', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div data-id="foo" aria-test="bar" is="custom" myProp="prop"></div></template>',
+      code: '<template><div data-id="foo" aria-test="bar" is="custom" myProp="prop"></div></template>',
       output:
         '<template><div data-id="foo" is="custom" aria-test="bar" myProp="prop"></div></template>',
       errors: [
@@ -559,8 +555,7 @@ tester.run('attributes-order', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div ref="header" propone="prop" is="header" ></div></template>',
+      code: '<template><div ref="header" propone="prop" is="header" ></div></template>',
       options: [
         {
           order: [
@@ -1317,8 +1312,7 @@ tester.run('attributes-order', rule, {
           ]
         }
       ],
-      code:
-        '<template><div ref="foo" v-slot="{ qux }" bar="baz"></div></template>',
+      code: '<template><div ref="foo" v-slot="{ qux }" bar="baz"></div></template>',
       output:
         '<template><div ref="foo" bar="baz" v-slot="{ qux }"></div></template>',
       errors: [
@@ -1348,8 +1342,7 @@ tester.run('attributes-order', rule, {
           ]
         }
       ],
-      code:
-        '<template><div bar="baz" ref="foo" v-slot="{ qux }"></div></template>',
+      code: '<template><div bar="baz" ref="foo" v-slot="{ qux }"></div></template>',
       output:
         '<template><div ref="foo" bar="baz" v-slot="{ qux }"></div></template>',
       errors: [
diff --git a/tests/lib/rules/block-spacing.js b/tests/lib/rules/block-spacing.js
index 1c4c531a..c06d54ec 100644
--- a/tests/lib/rules/block-spacing.js
+++ b/tests/lib/rules/block-spacing.js
@@ -15,8 +15,7 @@ tester.run('block-spacing', rule, {
   valid: [
     '<template><div :attr="function foo() { return true; }" /></template>',
     {
-      code:
-        '<template><div :attr="function foo() {return true;}" /></template>',
+      code: '<template><div :attr="function foo() {return true;}" /></template>',
       options: ['never']
     },
     '<template><div :[(function(){return(1)})()]="a" /></template>'
@@ -114,8 +113,7 @@ tester.run('block-spacing', rule, {
       ]
     },
     {
-      code:
-        '<template><div :[(function(){return(1)})()]="(function(){return(1)})()" /></template>',
+      code: '<template><div :[(function(){return(1)})()]="(function(){return(1)})()" /></template>',
       output:
         '<template><div :[(function(){return(1)})()]="(function(){ return(1) })()" /></template>',
       errors: [
diff --git a/tests/lib/rules/block-tag-newline.js b/tests/lib/rules/block-tag-newline.js
index 92427879..a727b0b9 100644
--- a/tests/lib/rules/block-tag-newline.js
+++ b/tests/lib/rules/block-tag-newline.js
@@ -24,13 +24,11 @@ tester.run('block-tag-newline', rule, {
       options: [{ singleline: 'never', multiline: 'never' }]
     },
     {
-      code:
-        '<template>\n<input>\n</template>\n<script>\nlet a\nlet b\n</script>',
+      code: '<template>\n<input>\n</template>\n<script>\nlet a\nlet b\n</script>',
       options: [{ singleline: 'always', multiline: 'always' }]
     },
     {
-      code:
-        '<template>\n\n<input>\n\n</template>\n<script>\n\nlet a\nlet b\n\n</script>',
+      code: '<template>\n\n<input>\n\n</template>\n<script>\n\nlet a\nlet b\n\n</script>',
       options: [{ singleline: 'always', multiline: 'always', maxEmptyLines: 1 }]
     },
     {
@@ -42,8 +40,7 @@ tester.run('block-tag-newline', rule, {
       options: [{ multiline: 'never' }]
     },
     {
-      code:
-        '<template>\n<div>\n</div>\n</template>\n<script>\nlet a\nlet b\n</script>',
+      code: '<template>\n<div>\n</div>\n</template>\n<script>\nlet a\nlet b\n</script>',
       options: [{ singleline: 'never' }]
     },
     // invalid
@@ -110,8 +107,7 @@ tester.run('block-tag-newline', rule, {
       ]
     },
     {
-      code:
-        '<template>\n<div>\n</div>\n</template>\n<script>\nlet a\n</script>',
+      code: '<template>\n<div>\n</div>\n</template>\n<script>\nlet a\n</script>',
       output: '<template><div>\n</div></template>\n<script>let a</script>',
       options: [{ singleline: 'never', multiline: 'never' }],
       errors: [
@@ -166,8 +162,7 @@ tester.run('block-tag-newline', rule, {
       ]
     },
     {
-      code:
-        '<template>\n\n<input>\n\n</template>\n<script>\n\nlet a\nlet b\n\n</script>',
+      code: '<template>\n\n<input>\n\n</template>\n<script>\n\nlet a\nlet b\n\n</script>',
       output:
         '<template>\n<input>\n</template>\n<script>\nlet a\nlet b\n</script>',
       options: [{ singleline: 'always', multiline: 'always' }],
@@ -199,8 +194,7 @@ tester.run('block-tag-newline', rule, {
       ]
     },
     {
-      code:
-        '<template>\n\n\n<input>\n\n</template>\n<script>\n\nlet a\nlet b\n\n\n</script>',
+      code: '<template>\n\n\n<input>\n\n</template>\n<script>\n\nlet a\nlet b\n\n\n</script>',
       output:
         '<template>\n\n<input>\n\n</template>\n<script>\n\nlet a\nlet b\n\n</script>',
       options: [
@@ -222,8 +216,7 @@ tester.run('block-tag-newline', rule, {
       ]
     },
     {
-      code:
-        '<template><input>\n\n</template>\n<script>let a\nlet b\n\n\n</script><docs>\n#</docs>',
+      code: '<template><input>\n\n</template>\n<script>let a\nlet b\n\n\n</script><docs>\n#</docs>',
       output:
         '<template><input>\n\n</template>\n<script>let a\nlet b</script><docs>\n#\n</docs>',
       options: [
diff --git a/tests/lib/rules/brace-style.js b/tests/lib/rules/brace-style.js
index 24a41d28..cfea7359 100644
--- a/tests/lib/rules/brace-style.js
+++ b/tests/lib/rules/brace-style.js
@@ -69,8 +69,7 @@ tester.run('brace-style', rule, {
       ]
     },
     {
-      code:
-        '<template><div :[(function(){return(1)})()]="(function(){return(1)})()" /></template>',
+      code: '<template><div :[(function(){return(1)})()]="(function(){return(1)})()" /></template>',
       output: `<template><div :[(function(){return(1)})()]="(function(){
 return(1)
 })()" /></template>`,
diff --git a/tests/lib/rules/component-name-in-template-casing.js b/tests/lib/rules/component-name-in-template-casing.js
index 31c4ae83..baeb6643 100644
--- a/tests/lib/rules/component-name-in-template-casing.js
+++ b/tests/lib/rules/component-name-in-template-casing.js
@@ -121,8 +121,7 @@ tester.run('component-name-in-template-casing', rule, {
       ]
     },
     {
-      code:
-        '<template><custom-element><TheComponent/></custom-element></template>',
+      code: '<template><custom-element><TheComponent/></custom-element></template>',
       options: [
         'PascalCase',
         { ignores: ['custom-element'], registeredComponentsOnly: false }
diff --git a/tests/lib/rules/component-tags-order.js b/tests/lib/rules/component-tags-order.js
index 1630cbed..0c40d499 100644
--- a/tests/lib/rules/component-tags-order.js
+++ b/tests/lib/rules/component-tags-order.js
@@ -73,20 +73,17 @@ tester.run('component-tags-order', rule, {
       options: [{ order: ['template', 'docs', 'script', 'style'] }]
     },
     {
-      code:
-        '<template></template><docs></docs><script></script><style></style>',
+      code: '<template></template><docs></docs><script></script><style></style>',
       output: null,
       options: [{ order: ['template', 'script', 'style'] }]
     },
     {
-      code:
-        '<docs><div id="id">text <!--comment--> </div><br></docs><script></script><template></template><style></style>',
+      code: '<docs><div id="id">text <!--comment--> </div><br></docs><script></script><template></template><style></style>',
       output: null,
       options: [{ order: ['docs', 'script', 'template', 'style'] }]
     },
     {
-      code:
-        '<template></template><docs></docs><script></script><style></style>',
+      code: '<template></template><docs></docs><script></script><style></style>',
       output: null,
       options: [{ order: [['docs', 'script', 'template'], 'style'] }]
     },
diff --git a/tests/lib/rules/html-button-has-type.js b/tests/lib/rules/html-button-has-type.js
index d6f40487..cdf8abff 100644
--- a/tests/lib/rules/html-button-has-type.js
+++ b/tests/lib/rules/html-button-has-type.js
@@ -36,8 +36,7 @@ ruleTester.run('html-button-has-type', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><slot><button type="button">Hello World</button></slot></template>'
+      code: '<template><slot><button type="button">Hello World</button></slot></template>'
     },
     {
       filename: 'test.vue',
@@ -191,8 +190,7 @@ ruleTester.run('html-button-has-type', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><button>Hello World</button><button>Hello World</button></template>',
+      code: '<template><button>Hello World</button><button>Hello World</button></template>',
       errors: [
         {
           message: 'Missing an explicit type attribute for button.',
diff --git a/tests/lib/rules/mustache-interpolation-spacing.js b/tests/lib/rules/mustache-interpolation-spacing.js
index 45818fec..f010fce4 100644
--- a/tests/lib/rules/mustache-interpolation-spacing.js
+++ b/tests/lib/rules/mustache-interpolation-spacing.js
@@ -32,13 +32,11 @@ ruleTester.run('mustache-interpolation-spacing', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template>             <div id="               "></div>         </template>'
+      code: '<template>             <div id="               "></div>         </template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template> <div :style="  " :class="       foo      " v-if=foo   ></div>      </template>'
+      code: '<template> <div :style="  " :class="       foo      " v-if=foo   ></div>      </template>'
     },
     {
       filename: 'test.vue',
diff --git a/tests/lib/rules/no-confusing-v-for-v-if.js b/tests/lib/rules/no-confusing-v-for-v-if.js
index c94d1b3e..47959aeb 100644
--- a/tests/lib/rules/no-confusing-v-for-v-if.js
+++ b/tests/lib/rules/no-confusing-v-for-v-if.js
@@ -29,36 +29,30 @@ tester.run('no-confusing-v-for-v-if', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list" v-if="x"></div></div></template>'
+      code: '<template><div><div v-for="x in list" v-if="x"></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list" v-if="x.foo"></div></div></template>'
+      code: '<template><div><div v-for="x in list" v-if="x.foo"></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="(x,i) in list" v-if="i%2==0"></div></div></template>'
+      code: '<template><div><div v-for="(x,i) in list" v-if="i%2==0"></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="shown"><div v-for="(x,i) in list"></div></div></template>'
+      code: '<template><div v-if="shown"><div v-for="(x,i) in list"></div></div></template>'
     }
   ],
   invalid: [
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list" v-if="shown"></div></div></template>',
+      code: '<template><div><div v-for="x in list" v-if="shown"></div></div></template>',
       errors: ["This 'v-if' should be moved to the wrapper element."]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list" v-if="list.length&gt;0"></div></div></template>',
+      code: '<template><div><div v-for="x in list" v-if="list.length&gt;0"></div></div></template>',
       errors: ["This 'v-if' should be moved to the wrapper element."]
     }
   ]
diff --git a/tests/lib/rules/no-deprecated-filter.js b/tests/lib/rules/no-deprecated-filter.js
index a6158ab9..e21d2b61 100644
--- a/tests/lib/rules/no-deprecated-filter.js
+++ b/tests/lib/rules/no-deprecated-filter.js
@@ -57,8 +57,7 @@ ruleTester.run('no-deprecated-filter', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-for="msg in messages">{{ msg | filter }}</div></template>',
+      code: '<template><div v-for="msg in messages">{{ msg | filter }}</div></template>',
       errors: ['Filters are deprecated.']
     },
     {
@@ -73,8 +72,7 @@ ruleTester.run('no-deprecated-filter', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-bind:id="msg | filterA | filterB"></div></template>',
+      code: '<template><div v-bind:id="msg | filterA | filterB"></div></template>',
       errors: ['Filters are deprecated.']
     }
   ]
diff --git a/tests/lib/rules/no-deprecated-inline-template.js b/tests/lib/rules/no-deprecated-inline-template.js
index 3ee8e999..e64511ac 100644
--- a/tests/lib/rules/no-deprecated-inline-template.js
+++ b/tests/lib/rules/no-deprecated-inline-template.js
@@ -32,21 +32,18 @@ ruleTester.run('no-deprecated-inline-template', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><my-component :inline-template="foo"><div /></my-component></template>'
+      code: '<template><my-component :inline-template="foo"><div /></my-component></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><my-component Inline-Template="foo"><div /></my-component></template>'
+      code: '<template><my-component Inline-Template="foo"><div /></my-component></template>'
     }
   ],
 
   invalid: [
     {
       filename: 'test.vue',
-      code:
-        '<template><my-component inline-template><div /></my-component></template>',
+      code: '<template><my-component inline-template><div /></my-component></template>',
       errors: [
         {
           line: 1,
@@ -59,14 +56,12 @@ ruleTester.run('no-deprecated-inline-template', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><my-component inline-template=""><div /></my-component></template>',
+      code: '<template><my-component inline-template=""><div /></my-component></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><my-component inline-template="foo"><div /></my-component></template>',
+      code: '<template><my-component inline-template="foo"><div /></my-component></template>',
       errors: [{ messageId: 'unexpected' }]
     }
   ]
diff --git a/tests/lib/rules/no-deprecated-v-bind-sync.js b/tests/lib/rules/no-deprecated-v-bind-sync.js
index 469d2f57..6f9d6860 100644
--- a/tests/lib/rules/no-deprecated-v-bind-sync.js
+++ b/tests/lib/rules/no-deprecated-v-bind-sync.js
@@ -59,8 +59,7 @@ ruleTester.run('no-deprecated-v-bind-sync', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        "<template><MyComponent v-bind:[dynamicArg].sync='bar'/></template>",
+      code: "<template><MyComponent v-bind:[dynamicArg].sync='bar'/></template>",
       output: "<template><MyComponent v-model:[dynamicArg]='bar'/></template>",
       errors: [
         "'.sync' modifier on 'v-bind' directive is deprecated. Use 'v-model:propName' instead."
@@ -92,8 +91,7 @@ ruleTester.run('no-deprecated-v-bind-sync', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><MyComponent :[dynamicArg].sync.unknown="foo" /></template>',
+      code: '<template><MyComponent :[dynamicArg].sync.unknown="foo" /></template>',
       output:
         '<template><MyComponent :[dynamicArg].sync.unknown="foo" /></template>',
       errors: [
@@ -102,8 +100,7 @@ ruleTester.run('no-deprecated-v-bind-sync', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><MyComponent :foo.sync="x.foo" /></div></div></template>',
+      code: '<template><div><div v-for="x in list"><MyComponent :foo.sync="x.foo" /></div></div></template>',
       output:
         '<template><div><div v-for="x in list"><MyComponent v-model:foo="x.foo" /></div></div></template>',
       errors: [
@@ -112,8 +109,7 @@ ruleTester.run('no-deprecated-v-bind-sync', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[x]" /></div></div></template>',
+      code: '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[x]" /></div></div></template>',
       output:
         '<template><div><div v-for="x in list"><MyComponent v-model:foo="foo[x]" /></div></div></template>',
       errors: [
@@ -122,8 +118,7 @@ ruleTester.run('no-deprecated-v-bind-sync', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[x - 1]" /></div></div></template>',
+      code: '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[x - 1]" /></div></div></template>',
       output:
         '<template><div><div v-for="x in list"><MyComponent v-model:foo="foo[x - 1]" /></div></div></template>',
       errors: [
@@ -132,8 +127,7 @@ ruleTester.run('no-deprecated-v-bind-sync', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[`${x}`]" /></div></div></template>',
+      code: '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[`${x}`]" /></div></div></template>',
       output:
         '<template><div><div v-for="x in list"><MyComponent v-model:foo="foo[`${x}`]" /></div></div></template>',
       errors: [
@@ -142,8 +136,7 @@ ruleTester.run('no-deprecated-v-bind-sync', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[`prefix_${x}`]" /></div></div></template>',
+      code: '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[`prefix_${x}`]" /></div></div></template>',
       output:
         '<template><div><div v-for="x in list"><MyComponent v-model:foo="foo[`prefix_${x}`]" /></div></div></template>',
       errors: [
@@ -152,8 +145,7 @@ ruleTester.run('no-deprecated-v-bind-sync', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[x ? x : \'_\']" /></div></div></template>',
+      code: '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[x ? x : \'_\']" /></div></div></template>',
       output:
         '<template><div><div v-for="x in list"><MyComponent v-model:foo="foo[x ? x : \'_\']" /></div></div></template>',
       errors: [
@@ -162,8 +154,7 @@ ruleTester.run('no-deprecated-v-bind-sync', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[x || \'_\']" /></div></div></template>',
+      code: '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[x || \'_\']" /></div></div></template>',
       output:
         '<template><div><div v-for="x in list"><MyComponent v-model:foo="foo[x || \'_\']" /></div></div></template>',
       errors: [
@@ -172,8 +163,7 @@ ruleTester.run('no-deprecated-v-bind-sync', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[x()]" /></div></div></template>',
+      code: '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[x()]" /></div></div></template>',
       output:
         '<template><div><div v-for="x in list"><MyComponent v-model:foo="foo[x()]" /></div></div></template>',
       errors: [
@@ -182,8 +172,7 @@ ruleTester.run('no-deprecated-v-bind-sync', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[/r/.match(x) ? 0 : 1]" /></div></div></template>',
+      code: '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[/r/.match(x) ? 0 : 1]" /></div></div></template>',
       output:
         '<template><div><div v-for="x in list"><MyComponent v-model:foo="foo[/r/.match(x) ? 0 : 1]" /></div></div></template>',
       errors: [
@@ -192,8 +181,7 @@ ruleTester.run('no-deprecated-v-bind-sync', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[typeof x]" /></div></div></template>',
+      code: '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[typeof x]" /></div></div></template>',
       output:
         '<template><div><div v-for="x in list"><MyComponent v-model:foo="foo[typeof x]" /></div></div></template>',
       errors: [
@@ -202,8 +190,7 @@ ruleTester.run('no-deprecated-v-bind-sync', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[tag`${x}`]" /></div></div></template>',
+      code: '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[tag`${x}`]" /></div></div></template>',
       output:
         '<template><div><div v-for="x in list"><MyComponent v-model:foo="foo[tag`${x}`]" /></div></div></template>',
       errors: [
diff --git a/tests/lib/rules/no-deprecated-v-on-number-modifiers.js b/tests/lib/rules/no-deprecated-v-on-number-modifiers.js
index 9edf2a27..dc7ae650 100644
--- a/tests/lib/rules/no-deprecated-v-on-number-modifiers.js
+++ b/tests/lib/rules/no-deprecated-v-on-number-modifiers.js
@@ -56,8 +56,7 @@ ruleTester.run('no-deprecated-v-on-number-modifiers', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        "<template><input v-on:keyup.page-down.native='onArrowUp'></template>"
+      code: "<template><input v-on:keyup.page-down.native='onArrowUp'></template>"
     },
     {
       filename: 'test.vue',
@@ -111,8 +110,7 @@ ruleTester.run('no-deprecated-v-on-number-modifiers', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        "<template><input v-on:[dynamicArg].unknown.34='onArrowUp'></template>",
+      code: "<template><input v-on:[dynamicArg].unknown.34='onArrowUp'></template>",
       output:
         "<template><input v-on:[dynamicArg].unknown.page-down='onArrowUp'></template>",
       errors: [
@@ -121,8 +119,7 @@ ruleTester.run('no-deprecated-v-on-number-modifiers', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        "<template><input v-on:[dynamicArg].34.unknown='onArrowUp'></template>",
+      code: "<template><input v-on:[dynamicArg].34.unknown='onArrowUp'></template>",
       output:
         "<template><input v-on:[dynamicArg].page-down.unknown='onArrowUp'></template>",
       errors: [
diff --git a/tests/lib/rules/no-dupe-v-else-if.js b/tests/lib/rules/no-dupe-v-else-if.js
index 0b5698fe..214657a9 100644
--- a/tests/lib/rules/no-dupe-v-else-if.js
+++ b/tests/lib/rules/no-dupe-v-else-if.js
@@ -370,56 +370,47 @@ tester.run('no-dupe-v-else-if', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a" /><div v-else-if="b" /><div v-else-if="a" /><div v-else-if="c" /></template>',
+      code: '<template><div v-if="a" /><div v-else-if="b" /><div v-else-if="a" /><div v-else-if="c" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a" /><div v-else-if="b" /><div v-else-if="a" /></template>',
+      code: '<template><div v-if="a" /><div v-else-if="b" /><div v-else-if="a" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a" /><div v-else-if="b" /><div v-else-if="c" /><div v-else-if="a" /></template>',
+      code: '<template><div v-if="a" /><div v-else-if="b" /><div v-else-if="c" /><div v-else-if="a" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a" /><div v-else-if="b" /><div v-else-if="b" /></template>',
+      code: '<template><div v-if="a" /><div v-else-if="b" /><div v-else-if="b" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a" /><div v-else-if="b" /><div v-else-if="c" /><div v-else-if="b" /></template>',
+      code: '<template><div v-if="a" /><div v-else-if="b" /><div v-else-if="c" /><div v-else-if="b" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a" /><div v-else-if="b" /><div v-else-if="c" /><div v-else-if="b" /><div v-else-if="d" /></template>',
+      code: '<template><div v-if="a" /><div v-else-if="b" /><div v-else-if="c" /><div v-else-if="b" /><div v-else-if="d" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a" /><div v-else-if="b" /><div v-else-if="c" /><div v-else-if="d" /><div v-else-if="b" /><div v-else-if="e" /></template>',
+      code: '<template><div v-if="a" /><div v-else-if="b" /><div v-else-if="c" /><div v-else-if="d" /><div v-else-if="b" /><div v-else-if="e" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a" /><div v-else-if="a" /><div v-else-if="a" /></template>',
+      code: '<template><div v-if="a" /><div v-else-if="a" /><div v-else-if="a" /></template>',
       errors: [{ messageId: 'unexpected' }, { messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a" /><div v-else-if="b" /><div v-else-if="a" /><div v-else-if="b" /><div v-else-if="a" /></template>',
+      code: '<template><div v-if="a" /><div v-else-if="b" /><div v-else-if="a" /><div v-else-if="b" /><div v-else-if="a" /></template>',
       errors: [
         { messageId: 'unexpected' },
         { messageId: 'unexpected' },
@@ -428,20 +419,17 @@ tester.run('no-dupe-v-else-if', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a"><div v-if="b" /></div><div v-else-if="a" /></template>',
+      code: '<template><div v-if="a"><div v-if="b" /></div><div v-else-if="a" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a === 1" /><div v-else-if="a === 1" /></template>',
+      code: '<template><div v-if="a === 1" /><div v-else-if="a === 1" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="1 < a" /><div v-else-if="1 < a" /></template>',
+      code: '<template><div v-if="1 < a" /><div v-else-if="1 < a" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
@@ -451,14 +439,12 @@ tester.run('no-dupe-v-else-if', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a && b" /><div v-else-if="a && b" /></template>',
+      code: '<template><div v-if="a && b" /><div v-else-if="a && b" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a && b || c" /><div v-else-if="a && b || c" /></template>',
+      code: '<template><div v-if="a && b || c" /><div v-else-if="a && b || c" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
@@ -468,14 +454,12 @@ tester.run('no-dupe-v-else-if', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a === 1" /><div v-else-if="a===1" /></template>',
+      code: '<template><div v-if="a === 1" /><div v-else-if="a===1" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a === 1" /><div v-else-if="a === /* comment */ 1" /></template>',
+      code: '<template><div v-if="a === 1" /><div v-else-if="a === /* comment */ 1" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
@@ -485,32 +469,27 @@ tester.run('no-dupe-v-else-if', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a || b" /><div v-else-if="a" /><div v-else-if="b" /></template>',
+      code: '<template><div v-if="a || b" /><div v-else-if="a" /><div v-else-if="b" /></template>',
       errors: [{ messageId: 'unexpected' }, { messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a || b" /><div v-else-if="b || a" /></template>',
+      code: '<template><div v-if="a || b" /><div v-else-if="b || a" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a" /><div v-else-if="b" /><div v-else-if="a || b" /></template>',
+      code: '<template><div v-if="a" /><div v-else-if="b" /><div v-else-if="a || b" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a || b" /><div v-else-if="c || d" /><div v-else-if="a || d" /></template>',
+      code: '<template><div v-if="a || b" /><div v-else-if="c || d" /><div v-else-if="a || d" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="(a === b && fn(c)) || d" /><div v-else-if="fn(c) && a === b" /></template>',
+      code: '<template><div v-if="(a === b && fn(c)) || d" /><div v-else-if="fn(c) && a === b" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
@@ -520,110 +499,92 @@ tester.run('no-dupe-v-else-if', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a && b" /><div v-else-if="a && b && c" /></template>',
+      code: '<template><div v-if="a && b" /><div v-else-if="a && b && c" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a || c" /><div v-else-if="a && b || c" /></template>',
+      code: '<template><div v-if="a || c" /><div v-else-if="a && b || c" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a" /><div v-else-if="b" /><div v-else-if="c && a || b" /></template>',
+      code: '<template><div v-if="a" /><div v-else-if="b" /><div v-else-if="c && a || b" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a" /><div v-else-if="b" /><div v-else-if="c && (a || b)" /></template>',
+      code: '<template><div v-if="a" /><div v-else-if="b" /><div v-else-if="c && (a || b)" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a" /><div v-else-if="b && c" /><div v-else-if="d && (a || e && c && b)" /></template>',
+      code: '<template><div v-if="a" /><div v-else-if="b && c" /><div v-else-if="d && (a || e && c && b)" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a || b && c" /><div v-else-if="b && c && d" /></template>',
+      code: '<template><div v-if="a || b && c" /><div v-else-if="b && c && d" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a || b" /><div v-else-if="b && c" /></template>',
+      code: '<template><div v-if="a || b" /><div v-else-if="b && c" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a" /><div v-else-if="b" /><div v-else-if="(a || b) && c" /></template>',
+      code: '<template><div v-if="a" /><div v-else-if="b" /><div v-else-if="(a || b) && c" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="(a && (b || c)) || d" /><div v-else-if="(c || b) && e && a" /></template>',
+      code: '<template><div v-if="(a && (b || c)) || d" /><div v-else-if="(c || b) && e && a" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a && b || b && c" /><div v-else-if="a && b && c" /></template>',
+      code: '<template><div v-if="a && b || b && c" /><div v-else-if="a && b && c" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a" /><div v-else-if="b && c" /><div v-else-if="d && (c && e && b || a)" /></template>',
+      code: '<template><div v-if="a" /><div v-else-if="b && c" /><div v-else-if="d && (c && e && b || a)" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a || (b && (c || d))" /><div v-else-if="(d || c) && b" /></template>',
+      code: '<template><div v-if="a || (b && (c || d))" /><div v-else-if="(d || c) && b" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a || b" /><div v-else-if="(b || a) && c" /></template>',
+      code: '<template><div v-if="a || b" /><div v-else-if="(b || a) && c" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a || b" /><div v-else-if="c" /><div v-else-if="d" /><div v-else-if="b && (a || c)" /></template>',
+      code: '<template><div v-if="a || b" /><div v-else-if="c" /><div v-else-if="d" /><div v-else-if="b && (a || c)" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a || b || c" /><div v-else-if="a || (b && d) || (c && e)" /></template>',
+      code: '<template><div v-if="a || b || c" /><div v-else-if="a || (b && d) || (c && e)" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a || (b || c)" /><div v-else-if="a || (b && c)" /></template>',
+      code: '<template><div v-if="a || (b || c)" /><div v-else-if="a || (b && c)" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a || b" /><div v-else-if="c" /><div v-else-if="d" /><div v-else-if="(a || c) && (b || d)" /></template>',
+      code: '<template><div v-if="a || b" /><div v-else-if="c" /><div v-else-if="d" /><div v-else-if="(a || c) && (b || d)" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a" /><div v-else-if="b" /><div v-else-if="c && (a || d && b)" /></template>',
+      code: '<template><div v-if="a" /><div v-else-if="b" /><div v-else-if="c && (a || d && b)" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
@@ -633,8 +594,7 @@ tester.run('no-dupe-v-else-if', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a || a" /><div v-else-if="a || a" /></template>',
+      code: '<template><div v-if="a || a" /><div v-else-if="a || a" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
@@ -649,8 +609,7 @@ tester.run('no-dupe-v-else-if', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="a && a" /><div v-else-if="a && a" /></template>',
+      code: '<template><div v-if="a && a" /><div v-else-if="a && a" /></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
diff --git a/tests/lib/rules/no-duplicate-attributes.js b/tests/lib/rules/no-duplicate-attributes.js
index 661cf1f3..baa79dc9 100644
--- a/tests/lib/rules/no-duplicate-attributes.js
+++ b/tests/lib/rules/no-duplicate-attributes.js
@@ -33,8 +33,7 @@ tester.run('no-duplicate-attributes', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div @click="foo" @click="bar"></div></div></template>'
+      code: '<template><div><div @click="foo" @click="bar"></div></div></template>'
     },
     {
       filename: 'test.vue',
diff --git a/tests/lib/rules/no-extra-parens.js b/tests/lib/rules/no-extra-parens.js
index 9b7ce315..1bb704ba 100644
--- a/tests/lib/rules/no-extra-parens.js
+++ b/tests/lib/rules/no-extra-parens.js
@@ -157,15 +157,13 @@ tester.run('no-extra-parens', rule, {
       errors: [{ messageId: 'unexpected' }]
     },
     {
-      code:
-        '<template><button>{{ ((foo + bar | bitwise)) }}</button></template>',
+      code: '<template><button>{{ ((foo + bar | bitwise)) }}</button></template>',
       output:
         '<template><button>{{ (foo + bar | bitwise) }}</button></template>',
       errors: [{ messageId: 'unexpected' }]
     },
     {
-      code:
-        '<template><button>{{ ((foo | bitwise)) | filter }}</button></template>',
+      code: '<template><button>{{ ((foo | bitwise)) | filter }}</button></template>',
       output:
         '<template><button>{{ (foo | bitwise) | filter }}</button></template>',
       errors: [{ messageId: 'unexpected' }]
diff --git a/tests/lib/rules/no-irregular-whitespace.js b/tests/lib/rules/no-irregular-whitespace.js
index 85a0ad4a..9c3a40cd 100644
--- a/tests/lib/rules/no-irregular-whitespace.js
+++ b/tests/lib/rules/no-irregular-whitespace.js
@@ -11,9 +11,10 @@ const tester = new RuleTester({
   parserOptions: { ecmaVersion: 2018 }
 })
 
-const IRREGULAR_WHITESPACES = '\f\v\u0085\ufeff\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u202f\u205f\u3000'.split(
-  ''
-)
+const IRREGULAR_WHITESPACES =
+  '\f\v\u0085\ufeff\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u202f\u205f\u3000'.split(
+    ''
+  )
 const IRREGULAR_LINE_TERMINATORS = '\u2028\u2029'.split('')
 const ALL_IRREGULAR_WHITESPACES = [].concat(
   IRREGULAR_WHITESPACES,
diff --git a/tests/lib/rules/no-multi-spaces.js b/tests/lib/rules/no-multi-spaces.js
index f7772dbe..34767270 100644
--- a/tests/lib/rules/no-multi-spaces.js
+++ b/tests/lib/rules/no-multi-spaces.js
@@ -198,8 +198,7 @@ ruleTester.run('no-multi-spaces', rule, {
       ]
     },
     {
-      code:
-        '<template><div v-for="      i    in    b       ">{{ test }}</div></template>',
+      code: '<template><div v-for="      i    in    b       ">{{ test }}</div></template>',
       output: '<template><div v-for=" i in b ">{{ test }}</div></template>',
       errors: [
         {
diff --git a/tests/lib/rules/no-multiple-template-root.js b/tests/lib/rules/no-multiple-template-root.js
index 7899620a..69f9f26e 100644
--- a/tests/lib/rules/no-multiple-template-root.js
+++ b/tests/lib/rules/no-multiple-template-root.js
@@ -36,13 +36,11 @@ ruleTester.run('no-multiple-template-root', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template>\n    <!-- comment -->\n    <div v-if="foo">abc</div>\n    <div v-else>abc</div>\n</template>'
+      code: '<template>\n    <!-- comment -->\n    <div v-if="foo">abc</div>\n    <div v-else>abc</div>\n</template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template>\n    <!-- comment -->\n    <div v-if="foo">abc</div>\n    <div v-else-if="bar">abc</div>\n    <div v-else>abc</div>\n</template>'
+      code: '<template>\n    <!-- comment -->\n    <div v-if="foo">abc</div>\n    <div v-else-if="bar">abc</div>\n    <div v-else>abc</div>\n</template>'
     },
     {
       filename: 'test.vue',
@@ -54,8 +52,7 @@ ruleTester.run('no-multiple-template-root', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="foo"></div><div v-else-if="bar"></div></template>'
+      code: '<template><div v-if="foo"></div><div v-else-if="bar"></div></template>'
     },
 
     // https://github.com/vuejs/eslint-plugin-vue/issues/1439
diff --git a/tests/lib/rules/no-parsing-error.js b/tests/lib/rules/no-parsing-error.js
index 91b78721..2b299f09 100644
--- a/tests/lib/rules/no-parsing-error.js
+++ b/tests/lib/rules/no-parsing-error.js
@@ -37,8 +37,7 @@ tester.run('no-parsing-error', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><svg class="icon"><use xlink:href="#chevron"></use></svg></template>'
+      code: '<template><svg class="icon"><use xlink:href="#chevron"></use></svg></template>'
     },
     {
       filename: 'test.vue',
diff --git a/tests/lib/rules/no-restricted-static-attribute.js b/tests/lib/rules/no-restricted-static-attribute.js
index 1b57e914..e0c4de13 100644
--- a/tests/lib/rules/no-restricted-static-attribute.js
+++ b/tests/lib/rules/no-restricted-static-attribute.js
@@ -104,8 +104,7 @@ tester.run('no-restricted-static-attribute', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div foo v bar /><div foo="foo" vv="foo" bar="vfoo" /><div vvv="foo" bar="vv" /></template>',
+      code: '<template><div foo v bar /><div foo="foo" vv="foo" bar="vfoo" /><div vvv="foo" bar="vv" /></template>',
       options: [
         '/^vv/',
         { key: 'foo', value: true },
diff --git a/tests/lib/rules/no-restricted-v-bind.js b/tests/lib/rules/no-restricted-v-bind.js
index 6a7f0a44..e6dd72d5 100644
--- a/tests/lib/rules/no-restricted-v-bind.js
+++ b/tests/lib/rules/no-restricted-v-bind.js
@@ -109,8 +109,7 @@ tester.run('no-restricted-v-bind', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div :v-on :foo.sync /><div :foo="foo" v-bind="listener" /></template>',
+      code: '<template><div :v-on :foo.sync /><div :foo="foo" v-bind="listener" /></template>',
       options: ['/^v-/', { argument: 'foo', modifiers: ['sync'] }, null],
       errors: [
         'Using `:v-on` is not allowed.',
diff --git a/tests/lib/rules/no-template-key.js b/tests/lib/rules/no-template-key.js
index 9ec20a7f..599e150f 100644
--- a/tests/lib/rules/no-template-key.js
+++ b/tests/lib/rules/no-template-key.js
@@ -45,25 +45,21 @@ tester.run('no-template-key', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><template v-for="item in list" :key="item.id"><div /></template></template>'
+      code: '<template><template v-for="item in list" :key="item.id"><div /></template></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><template v-for="(item, i) in list" :key="i"><div /></template></template>'
+      code: '<template><template v-for="(item, i) in list" :key="i"><div /></template></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><template v-for="item in list" :key="foo + item.id"><div /></template></template>'
+      code: '<template><template v-for="item in list" :key="foo + item.id"><div /></template></template>'
     },
     {
       filename: 'test.vue',
       // It is probably not valid, but it works as the Vue.js 3.x compiler.
       // We can prevent it with other rules. e.g. vue/require-v-for-key
-      code:
-        '<template><template v-for="item in list" key="foo"><div /></template></template>'
+      code: '<template><template v-for="item in list" key="foo"><div /></template></template>'
     }
   ],
   invalid: [
@@ -76,8 +72,7 @@ tester.run('no-template-key', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-bind:key="foo"></template></div></template>',
+      code: '<template><div><template v-bind:key="foo"></template></div></template>',
       errors: [
         "'<template>' cannot be keyed. Place the key on real elements instead."
       ]
@@ -91,16 +86,14 @@ tester.run('no-template-key', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><template v-slot="item" :key="item.id"><div /></template></template>',
+      code: '<template><template v-slot="item" :key="item.id"><div /></template></template>',
       errors: [
         "'<template>' cannot be keyed. Place the key on real elements instead."
       ]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><template v-for="item in list"><template :key="item.id"><div /></template></template></template>',
+      code: '<template><template v-for="item in list"><template :key="item.id"><div /></template></template></template>',
       errors: [
         "'<template>' cannot be keyed. Place the key on real elements instead."
       ]
diff --git a/tests/lib/rules/no-template-shadow.js b/tests/lib/rules/no-template-shadow.js
index 9d819f34..872dffcf 100644
--- a/tests/lib/rules/no-template-shadow.js
+++ b/tests/lib/rules/no-template-shadow.js
@@ -121,8 +121,7 @@ ruleTester.run('no-template-shadow', rule, {
   invalid: [
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-for="i in 5"><div v-for="i in 5"></div></div></template>',
+      code: '<template><div v-for="i in 5"><div v-for="i in 5"></div></div></template>',
       errors: [
         {
           message: "Variable 'i' is already declared in the upper scope.",
diff --git a/tests/lib/rules/no-template-target-blank.js b/tests/lib/rules/no-template-target-blank.js
index ab1bf922..3d21c1db 100644
--- a/tests/lib/rules/no-template-target-blank.js
+++ b/tests/lib/rules/no-template-target-blank.js
@@ -31,27 +31,22 @@ ruleTester.run('no-template-target-blank', rule, {
     },
     { code: '<template><a :href="link">link</a></template>' },
     {
-      code:
-        '<template><a :href="link" target="_blank" rel="noopener noreferrer">link</a></template>'
+      code: '<template><a :href="link" target="_blank" rel="noopener noreferrer">link</a></template>'
     },
     {
-      code:
-        '<template><a href="https://eslint.vuejs.org" target="_blank" rel="noopener noreferrer">link</a></template>'
+      code: '<template><a href="https://eslint.vuejs.org" target="_blank" rel="noopener noreferrer">link</a></template>'
     },
     {
-      code:
-        '<template><a href="https://eslint.vuejs.org" target="_blank" rel="noopener">link</a></template>',
+      code: '<template><a href="https://eslint.vuejs.org" target="_blank" rel="noopener">link</a></template>',
       options: [{ allowReferrer: true }]
     },
     { code: '<template><a href="/foo" target="_blank">link</a></template>' },
     {
-      code:
-        '<template><a href="/foo" target="_blank" rel="noopener noreferrer">link</a></template>'
+      code: '<template><a href="/foo" target="_blank" rel="noopener noreferrer">link</a></template>'
     },
     { code: '<template><a href="foo/bar" target="_blank">link</a></template>' },
     {
-      code:
-        '<template><a href="foo/bar" target="_blank" rel="noopener noreferrer">link</a></template>'
+      code: '<template><a href="foo/bar" target="_blank" rel="noopener noreferrer">link</a></template>'
     },
     {
       code: '<template><a :href="link" target="_blank">link</a></template>',
@@ -60,22 +55,19 @@ ruleTester.run('no-template-target-blank', rule, {
   ],
   invalid: [
     {
-      code:
-        '<template><a href="https://eslint.vuejs.org" target="_blank">link</a></template>',
+      code: '<template><a href="https://eslint.vuejs.org" target="_blank">link</a></template>',
       errors: [
         'Using target="_blank" without rel="noopener noreferrer" is a security risk.'
       ]
     },
     {
-      code:
-        '<template><a href="https://eslint.vuejs.org" target="_blank" rel="noopenernoreferrer">link</a></template>',
+      code: '<template><a href="https://eslint.vuejs.org" target="_blank" rel="noopenernoreferrer">link</a></template>',
       errors: [
         'Using target="_blank" without rel="noopener noreferrer" is a security risk.'
       ]
     },
     {
-      code:
-        '<template><a :href="link" target="_blank" rel=3>link</a></template>',
+      code: '<template><a :href="link" target="_blank" rel=3>link</a></template>',
       errors: [
         'Using target="_blank" without rel="noopener noreferrer" is a security risk.'
       ]
@@ -87,8 +79,7 @@ ruleTester.run('no-template-target-blank', rule, {
       ]
     },
     {
-      code:
-        '<template><a href="https://eslint.vuejs.org" target="_blank" rel="noopener">link</a></template>',
+      code: '<template><a href="https://eslint.vuejs.org" target="_blank" rel="noopener">link</a></template>',
       errors: [
         'Using target="_blank" without rel="noopener noreferrer" is a security risk.'
       ]
diff --git a/tests/lib/rules/no-textarea-mustache.js b/tests/lib/rules/no-textarea-mustache.js
index e31f96be..75040538 100644
--- a/tests/lib/rules/no-textarea-mustache.js
+++ b/tests/lib/rules/no-textarea-mustache.js
@@ -29,8 +29,7 @@ tester.run('no-textarea-mustache', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><textarea v-model="text"></textarea></div></template>'
+      code: '<template><div><textarea v-model="text"></textarea></div></template>'
     }
   ],
   invalid: [
@@ -41,8 +40,7 @@ tester.run('no-textarea-mustache', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><textarea>{{text}} and {{text}}</textarea></div></template>',
+      code: '<template><div><textarea>{{text}} and {{text}}</textarea></div></template>',
       errors: [
         "Unexpected mustache. Use 'v-model' instead.",
         "Unexpected mustache. Use 'v-model' instead."
diff --git a/tests/lib/rules/no-unused-vars.js b/tests/lib/rules/no-unused-vars.js
index 81df799b..f57733d3 100644
--- a/tests/lib/rules/no-unused-vars.js
+++ b/tests/lib/rules/no-unused-vars.js
@@ -30,23 +30,19 @@ tester.run('no-unused-vars', rule, {
       code: '<template><ol v-for="i in 5"><li :prop="i"></li></ol></template>'
     },
     {
-      code:
-        '<template v-for="i in 5"><comp v-for="j in 10">{{i}}{{j}}</comp></template>'
+      code: '<template v-for="i in 5"><comp v-for="j in 10">{{i}}{{j}}</comp></template>'
     },
     {
-      code:
-        '<template><ol v-for="i in data"><li v-for="f in i">{{ f.bar.baz }}</li></ol></template>'
+      code: '<template><ol v-for="i in data"><li v-for="f in i">{{ f.bar.baz }}</li></ol></template>'
     },
     {
       code: '<template><template scope="props">{{props}}</template></template>'
     },
     {
-      code:
-        '<template><template scope="props"><span v-if="props"></span></template></template>'
+      code: '<template><template scope="props"><span v-if="props"></span></template></template>'
     },
     {
-      code:
-        '<template><div v-for="(item, key) in items" :key="key">{{item.name}}</div></template>'
+      code: '<template><div v-for="(item, key) in items" :key="key">{{item.name}}</div></template>'
     },
     {
       code: '<template><div v-for="(v, i, c) in foo">{{c}}</div></template>'
@@ -84,18 +80,15 @@ tester.run('no-unused-vars', rule, {
       errors: ["'props' is defined but never used."]
     },
     {
-      code:
-        '<template><span><template scope="props"></template></span></template>',
+      code: '<template><span><template scope="props"></template></span></template>',
       errors: ["'props' is defined but never used."]
     },
     {
-      code:
-        '<template><div v-for="i in 5"><comp v-for="j in 10">{{i}}{{i}}</comp></div></template>',
+      code: '<template><div v-for="i in 5"><comp v-for="j in 10">{{i}}{{i}}</comp></div></template>',
       errors: ["'j' is defined but never used."]
     },
     {
-      code:
-        '<template><ol v-for="i in data"><li v-for="f in i"></li></ol></template>',
+      code: '<template><ol v-for="i in data"><li v-for="f in i"></li></ol></template>',
       errors: ["'f' is defined but never used."]
     },
     {
@@ -118,8 +111,7 @@ tester.run('no-unused-vars', rule, {
       errors: ["'c' is defined but never used."]
     },
     {
-      code:
-        '<template><div v-for="(item, key) in items" :key="item.id">{{item.name}}</div></template>',
+      code: '<template><div v-for="(item, key) in items" :key="item.id">{{item.name}}</div></template>',
       errors: ["'key' is defined but never used."]
     },
     {
@@ -149,8 +141,7 @@ tester.run('no-unused-vars', rule, {
       options: [{ ignorePattern: '^ignore' }]
     },
     {
-      code:
-        '<template><span><template scope="props"></template></span></template>',
+      code: '<template><span><template scope="props"></template></span></template>',
       errors: ["'props' is defined but never used."],
       options: [{ ignorePattern: '^ignore' }]
     },
@@ -164,23 +155,19 @@ tester.run('no-unused-vars', rule, {
       errors: ["'a' is defined but never used."]
     },
     {
-      code:
-        '<template><my-component v-slot="a" >{{d}}</my-component></template>',
+      code: '<template><my-component v-slot="a" >{{d}}</my-component></template>',
       errors: ["'a' is defined but never used."]
     },
     {
-      code:
-        '<template><my-component v-for="i in foo" v-slot="a" >{{a}}</my-component></template>',
+      code: '<template><my-component v-for="i in foo" v-slot="a" >{{a}}</my-component></template>',
       errors: ["'i' is defined but never used."]
     },
     {
-      code:
-        '<template><my-component v-for="i in foo" v-slot="a" >{{i}}</my-component></template>',
+      code: '<template><my-component v-for="i in foo" v-slot="a" >{{i}}</my-component></template>',
       errors: ["'a' is defined but never used."]
     },
     {
-      code:
-        '<template><div v-for="({a, b}, [c, d], e, f) in foo" >{{f}}</div></template>',
+      code: '<template><div v-for="({a, b}, [c, d], e, f) in foo" >{{f}}</div></template>',
       errors: [
         "'a' is defined but never used.",
         "'b' is defined but never used.",
@@ -189,8 +176,7 @@ tester.run('no-unused-vars', rule, {
       ]
     },
     {
-      code:
-        '<template><div v-for="({a, b}, c, [d], e, f) in foo" >{{f}}</div></template>',
+      code: '<template><div v-for="({a, b}, c, [d], e, f) in foo" >{{f}}</div></template>',
       errors: [
         "'a' is defined but never used.",
         "'b' is defined but never used.",
@@ -198,8 +184,7 @@ tester.run('no-unused-vars', rule, {
       ]
     },
     {
-      code:
-        '<template><my-component v-slot="{a, b, c, d}" >{{d}}</my-component></template>',
+      code: '<template><my-component v-slot="{a, b, c, d}" >{{d}}</my-component></template>',
       errors: [
         "'a' is defined but never used.",
         "'b' is defined but never used.",
@@ -207,8 +192,7 @@ tester.run('no-unused-vars', rule, {
       ]
     },
     {
-      code:
-        '<template><div v-for="({a, b: bar}, c = 1, [d], e, f) in foo" >{{f}}</div></template>',
+      code: '<template><div v-for="({a, b: bar}, c = 1, [d], e, f) in foo" >{{f}}</div></template>',
       errors: [
         "'a' is defined but never used.",
         "'bar' is defined but never used.",
diff --git a/tests/lib/rules/no-use-v-if-with-v-for.js b/tests/lib/rules/no-use-v-if-with-v-for.js
index d4bc932c..4ed5e6f4 100644
--- a/tests/lib/rules/no-use-v-if-with-v-for.js
+++ b/tests/lib/rules/no-use-v-if-with-v-for.js
@@ -27,26 +27,22 @@ tester.run('no-use-v-if-with-v-for', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list" v-if="x"></div></div></template>',
+      code: '<template><div><div v-for="x in list" v-if="x"></div></div></template>',
       options: [{ allowUsingIterationVar: true }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list" v-if="x.foo"></div></div></template>',
+      code: '<template><div><div v-for="x in list" v-if="x.foo"></div></div></template>',
       options: [{ allowUsingIterationVar: true }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="(x,i) in list" v-if="i%2==0"></div></div></template>',
+      code: '<template><div><div v-for="(x,i) in list" v-if="i%2==0"></div></div></template>',
       options: [{ allowUsingIterationVar: true }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="shown"><div v-for="(x,i) in list"></div></div></template>'
+      code: '<template><div v-if="shown"><div v-for="(x,i) in list"></div></div></template>'
     },
     {
       filename: 'test.vue',
@@ -80,26 +76,22 @@ tester.run('no-use-v-if-with-v-for', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="{x} in list" v-if="x"></div></div></template>',
+      code: '<template><div><div v-for="{x} in list" v-if="x"></div></div></template>',
       options: [{ allowUsingIterationVar: true }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="{x,y,z} in list" v-if="y.foo"></div></div></template>',
+      code: '<template><div><div v-for="{x,y,z} in list" v-if="y.foo"></div></div></template>',
       options: [{ allowUsingIterationVar: true }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="({x,y,z},i) in list" v-if="i%2==0"></div></div></template>',
+      code: '<template><div><div v-for="({x,y,z},i) in list" v-if="i%2==0"></div></div></template>',
       options: [{ allowUsingIterationVar: true }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="shown"><div v-for="({x,y,z},i) in list"></div></div></template>'
+      code: '<template><div v-if="shown"><div v-for="({x,y,z},i) in list"></div></div></template>'
     },
     {
       filename: 'test.vue',
@@ -135,8 +127,7 @@ tester.run('no-use-v-if-with-v-for', rule, {
   invalid: [
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list" v-if="shown"></div></div></template>',
+      code: '<template><div><div v-for="x in list" v-if="shown"></div></div></template>',
       errors: [
         {
           message: "This 'v-if' should be moved to the wrapper element.",
@@ -146,8 +137,7 @@ tester.run('no-use-v-if-with-v-for', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list" v-if="list.length&gt;0"></div></div></template>',
+      code: '<template><div><div v-for="x in list" v-if="list.length&gt;0"></div></div></template>',
       errors: [
         {
           message: "This 'v-if' should be moved to the wrapper element.",
@@ -157,8 +147,7 @@ tester.run('no-use-v-if-with-v-for', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list" v-if="x.isActive"></div></div></template>',
+      code: '<template><div><div v-for="x in list" v-if="x.isActive"></div></div></template>',
       errors: [
         {
           message:
@@ -214,8 +203,7 @@ tester.run('no-use-v-if-with-v-for', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="{x,y,z} in list" v-if="z.isActive"></div></div></template>',
+      code: '<template><div><div v-for="{x,y,z} in list" v-if="z.isActive"></div></div></template>',
       errors: [
         {
           message:
@@ -271,8 +259,7 @@ tester.run('no-use-v-if-with-v-for', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="{x} in list()" v-if="x.isActive"></div></div></template>',
+      code: '<template><div><div v-for="{x} in list()" v-if="x.isActive"></div></div></template>',
       errors: [
         {
           message:
@@ -283,8 +270,7 @@ tester.run('no-use-v-if-with-v-for', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="i in 5" v-if="i"></div></div></template>',
+      code: '<template><div><div v-for="i in 5" v-if="i"></div></div></template>',
       errors: [
         {
           message:
diff --git a/tests/lib/rules/no-v-for-template-key-on-child.js b/tests/lib/rules/no-v-for-template-key-on-child.js
index 36254f99..f6a1e241 100644
--- a/tests/lib/rules/no-v-for-template-key-on-child.js
+++ b/tests/lib/rules/no-v-for-template-key-on-child.js
@@ -27,28 +27,23 @@ tester.run('no-v-for-template-key-on-child', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="x in list"><Foo /></template></div></template>'
+      code: '<template><div><template v-for="x in list"><Foo /></template></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="x in list" :key="x"><Foo /></template></div></template>'
+      code: '<template><div><template v-for="x in list" :key="x"><Foo /></template></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="x in list" :key="x.id"><Foo :key="x.id" /></template></div></template>'
+      code: '<template><div><template v-for="x in list" :key="x.id"><Foo :key="x.id" /></template></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="(x, i) in list" :key="i"><Foo :key="x" /></template></div></template>'
+      code: '<template><div><template v-for="(x, i) in list" :key="i"><Foo :key="x" /></template></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="(x, i) in list"><Foo :key="foo" /></template></div></template>'
+      code: '<template><div><template v-for="(x, i) in list"><Foo :key="foo" /></template></div></template>'
     },
     {
       filename: 'test.vue',
@@ -79,8 +74,7 @@ tester.run('no-v-for-template-key-on-child', rule, {
   invalid: [
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="x in list"><Foo :key="x" /></template></div></template>',
+      code: '<template><div><template v-for="x in list"><Foo :key="x" /></template></div></template>',
       errors: [
         {
           message:
@@ -91,32 +85,28 @@ tester.run('no-v-for-template-key-on-child', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="x in list"><Foo :key="x.id" /></template></div></template>',
+      code: '<template><div><template v-for="x in list"><Foo :key="x.id" /></template></div></template>',
       errors: [
         '`<template v-for>` key should be placed on the `<template>` tag.'
       ]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="x in list" :key="foo"><Foo :key="x.id" /></template></div></template>',
+      code: '<template><div><template v-for="x in list" :key="foo"><Foo :key="x.id" /></template></div></template>',
       errors: [
         '`<template v-for>` key should be placed on the `<template>` tag.'
       ]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="x in list" :key><Foo :key="x.id" /></template></div></template>',
+      code: '<template><div><template v-for="x in list" :key><Foo :key="x.id" /></template></div></template>',
       errors: [
         '`<template v-for>` key should be placed on the `<template>` tag.'
       ]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="x in list" :key><div /><Foo :key="x.id" /></template></div></template>',
+      code: '<template><div><template v-for="x in list" :key><div /><Foo :key="x.id" /></template></div></template>',
       errors: [
         '`<template v-for>` key should be placed on the `<template>` tag.'
       ]
diff --git a/tests/lib/rules/no-v-for-template-key.js b/tests/lib/rules/no-v-for-template-key.js
index 56fdb348..e6665b58 100644
--- a/tests/lib/rules/no-v-for-template-key.js
+++ b/tests/lib/rules/no-v-for-template-key.js
@@ -47,8 +47,7 @@ tester.run('no-v-for-template-key', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-bind:key="foo"></template></div></template>'
+      code: '<template><div><template v-bind:key="foo"></template></div></template>'
     },
     {
       filename: 'test.vue',
@@ -56,44 +55,38 @@ tester.run('no-v-for-template-key', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><template v-slot="item" :key="item.id"><div /></template></template>'
+      code: '<template><template v-slot="item" :key="item.id"><div /></template></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><template v-for="item in list"><template :key="item.id"><div /></template></template></template>'
+      code: '<template><template v-for="item in list"><template :key="item.id"><div /></template></template></template>'
     }
   ],
   invalid: [
     {
       filename: 'test.vue',
-      code:
-        '<template><template v-for="item in list" :key="item.id"><div /></template></template>',
+      code: '<template><template v-for="item in list" :key="item.id"><div /></template></template>',
       errors: [
         "'<template v-for>' cannot be keyed. Place the key on real elements instead."
       ]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><template v-for="(item, i) in list" :key="i"><div /></template></template>',
+      code: '<template><template v-for="(item, i) in list" :key="i"><div /></template></template>',
       errors: [
         "'<template v-for>' cannot be keyed. Place the key on real elements instead."
       ]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><template v-for="item in list" :key="foo + item.id"><div /></template></template>',
+      code: '<template><template v-for="item in list" :key="foo + item.id"><div /></template></template>',
       errors: [
         "'<template v-for>' cannot be keyed. Place the key on real elements instead."
       ]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><template v-for="item in list" key="foo"><div /></template></template>',
+      code: '<template><template v-for="item in list" key="foo"><div /></template></template>',
       errors: [
         "'<template v-for>' cannot be keyed. Place the key on real elements instead."
       ]
diff --git a/tests/lib/rules/no-v-model-argument.js b/tests/lib/rules/no-v-model-argument.js
index cba98ebe..4ffe0a57 100644
--- a/tests/lib/rules/no-v-model-argument.js
+++ b/tests/lib/rules/no-v-model-argument.js
@@ -31,14 +31,12 @@ ruleTester.run('no-v-model-argument', rule, {
   invalid: [
     {
       filename: 'test.vue',
-      code:
-        '<template><MyComponent v-model:foo="bar"></MyComponent></template>',
+      code: '<template><MyComponent v-model:foo="bar"></MyComponent></template>',
       errors: ["'v-model' directives require no argument."]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><MyComponent v-model:foo.trim="bar"></MyComponent></template>',
+      code: '<template><MyComponent v-model:foo.trim="bar"></MyComponent></template>',
       errors: ["'v-model' directives require no argument."]
     }
   ]
diff --git a/tests/lib/rules/require-explicit-emits.js b/tests/lib/rules/require-explicit-emits.js
index 31ad623a..6cf1cc6e 100644
--- a/tests/lib/rules/require-explicit-emits.js
+++ b/tests/lib/rules/require-explicit-emits.js
@@ -417,8 +417,7 @@ tester.run('require-explicit-emits', rule, {
           endColumn: 33,
           suggestions: [
             {
-              desc:
-                'Add the `emits` option with array syntax and define "foo" event.',
+              desc: 'Add the `emits` option with array syntax and define "foo" event.',
               output: `
       <template>
         <div @click="$emit('foo')"/>
@@ -431,8 +430,7 @@ emits: ['foo']
       `
             },
             {
-              desc:
-                'Add the `emits` option with object syntax and define "foo" event.',
+              desc: 'Add the `emits` option with object syntax and define "foo" event.',
               output: `
       <template>
         <div @click="$emit('foo')"/>
@@ -797,8 +795,7 @@ emits: {'foo': null}
             'The "foo" event has been triggered but not declared on `emits` option.',
           suggestions: [
             {
-              desc:
-                'Add the `emits` option with array syntax and define "foo" event.',
+              desc: 'Add the `emits` option with array syntax and define "foo" event.',
               output: `
       <template>
         <div @click="$emit('foo')"/>
@@ -813,8 +810,7 @@ emits: ['foo']
       `
             },
             {
-              desc:
-                'Add the `emits` option with object syntax and define "foo" event.',
+              desc: 'Add the `emits` option with object syntax and define "foo" event.',
               output: `
       <template>
         <div @click="$emit('foo')"/>
@@ -1308,8 +1304,7 @@ emits: {'foo': null}
             'The "foo" event has been triggered but not declared on `emits` option.',
           suggestions: [
             {
-              desc:
-                'Add the `emits` option with array syntax and define "foo" event.',
+              desc: 'Add the `emits` option with array syntax and define "foo" event.',
               output: `
       <template>
         <div @click="$emit('foo')"/>
@@ -1324,8 +1319,7 @@ emits: ['foo']
       `
             },
             {
-              desc:
-                'Add the `emits` option with object syntax and define "foo" event.',
+              desc: 'Add the `emits` option with object syntax and define "foo" event.',
               output: `
       <template>
         <div @click="$emit('foo')"/>
@@ -1362,8 +1356,7 @@ emits: {'foo': null}
             'The "foo" event has been triggered but not declared on `emits` option.',
           suggestions: [
             {
-              desc:
-                'Add the `emits` option with array syntax and define "foo" event.',
+              desc: 'Add the `emits` option with array syntax and define "foo" event.',
               output: `
       <template>
         <div @click="$emit('foo')"/>
@@ -1378,8 +1371,7 @@ emits: ['foo'],
       `
             },
             {
-              desc:
-                'Add the `emits` option with object syntax and define "foo" event.',
+              desc: 'Add the `emits` option with object syntax and define "foo" event.',
               output: `
       <template>
         <div @click="$emit('foo')"/>
@@ -1415,8 +1407,7 @@ emits: {'foo': null},
             'The "foo" event has been triggered but not declared on `emits` option.',
           suggestions: [
             {
-              desc:
-                'Add the `emits` option with array syntax and define "foo" event.',
+              desc: 'Add the `emits` option with array syntax and define "foo" event.',
               output: `
       <template>
         <div @click="$emit('foo')"/>
@@ -1430,8 +1421,7 @@ emits: ['foo'],
       `
             },
             {
-              desc:
-                'Add the `emits` option with object syntax and define "foo" event.',
+              desc: 'Add the `emits` option with object syntax and define "foo" event.',
               output: `
       <template>
         <div @click="$emit('foo')"/>
@@ -1466,8 +1456,7 @@ emits: {'foo': null},
             'The "foo" event has been triggered but not declared on `emits` option.',
           suggestions: [
             {
-              desc:
-                'Add the `emits` option with array syntax and define "foo" event.',
+              desc: 'Add the `emits` option with array syntax and define "foo" event.',
               output: `
       <template>
         <div @click="$emit('foo')"/>
@@ -1481,8 +1470,7 @@ emits: ['foo']
       `
             },
             {
-              desc:
-                'Add the `emits` option with object syntax and define "foo" event.',
+              desc: 'Add the `emits` option with object syntax and define "foo" event.',
               output: `
       <template>
         <div @click="$emit('foo')"/>
@@ -1517,8 +1505,7 @@ emits: {'foo': null}
             'The "foo" event has been triggered but not declared on `emits` option.',
           suggestions: [
             {
-              desc:
-                'Add the `emits` option with array syntax and define "foo" event.',
+              desc: 'Add the `emits` option with array syntax and define "foo" event.',
               output: `
       <template>
         <div @click="$emit('foo')"/>
@@ -1532,8 +1519,7 @@ emits: ['foo']
       `
             },
             {
-              desc:
-                'Add the `emits` option with object syntax and define "foo" event.',
+              desc: 'Add the `emits` option with object syntax and define "foo" event.',
               output: `
       <template>
         <div @click="$emit('foo')"/>
diff --git a/tests/lib/rules/require-toggle-inside-transition.js b/tests/lib/rules/require-toggle-inside-transition.js
index 82726b6f..76c2b7c5 100644
--- a/tests/lib/rules/require-toggle-inside-transition.js
+++ b/tests/lib/rules/require-toggle-inside-transition.js
@@ -32,8 +32,7 @@ tester.run('require-toggle-inside-transition', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><transition><div v-show="show" /></transition></template>'
+      code: '<template><transition><div v-show="show" /></transition></template>'
     },
     {
       filename: 'test.vue',
@@ -41,8 +40,7 @@ tester.run('require-toggle-inside-transition', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><Transition><div v-show="show" /></Transition></template>'
+      code: '<template><Transition><div v-show="show" /></Transition></template>'
     },
     {
       filename: 'test.vue',
@@ -50,28 +48,23 @@ tester.run('require-toggle-inside-transition', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><Transition><component :is="component" /></Transition></template>'
+      code: '<template><Transition><component :is="component" /></Transition></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><Transition><div :is="component" /></Transition></template>'
+      code: '<template><Transition><div :is="component" /></Transition></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><svg height="100" width="100"><transition><circle v-if="show" /></transition></svg> </template>'
+      code: '<template><svg height="100" width="100"><transition><circle v-if="show" /></transition></svg> </template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><svg height="100" width="100"><transition><MyComponent /></transition></svg> </template>'
+      code: '<template><svg height="100" width="100"><transition><MyComponent /></transition></svg> </template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><transition><template v-if="show"><div /></template></transition></template>'
+      code: '<template><transition><template v-if="show"><div /></template></transition></template>'
     }
   ],
   invalid: [
@@ -100,20 +93,17 @@ tester.run('require-toggle-inside-transition', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><transition><div v-for="e in list" /></transition></template>',
+      code: '<template><transition><div v-for="e in list" /></transition></template>',
       errors: [{ messageId: 'expected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><svg height="100" width="100"><transition><circle /></transition></svg> </template>',
+      code: '<template><svg height="100" width="100"><transition><circle /></transition></svg> </template>',
       errors: [{ messageId: 'expected' }]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><transition><template v-for="e in list"><div /></template></transition></template>',
+      code: '<template><transition><template v-for="e in list"><div /></template></transition></template>',
       errors: [{ messageId: 'expected' }]
     }
   ]
diff --git a/tests/lib/rules/require-v-for-key.js b/tests/lib/rules/require-v-for-key.js
index f98da8bc..22bb3624 100644
--- a/tests/lib/rules/require-v-for-key.js
+++ b/tests/lib/rules/require-v-for-key.js
@@ -29,85 +29,69 @@ tester.run('require-v-for-key', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list" v-bind:key="x"></div></div></template>'
+      code: '<template><div><div v-for="x in list" v-bind:key="x"></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list" :key="x.foo"></div></div></template>'
+      code: '<template><div><div v-for="x in list" :key="x.foo"></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><custom-component v-for="x in list"></custom-component></div></template>'
+      code: '<template><div><custom-component v-for="x in list"></custom-component></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="x in list"><div :key="x"></div></template></div></template>'
+      code: '<template><div><template v-for="x in list"><div :key="x"></div></template></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><slot v-for="x in list" :name="x"></slot></div></template>'
+      code: '<template><div><slot v-for="x in list" :name="x"></slot></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><slot v-for="x in list" :name="x"><div :key="x"></div></slot></div></template>'
+      code: '<template><div><slot v-for="x in list" :name="x"><div :key="x"></div></slot></div></template>'
     },
     // key on <template> : In Vue.js 3.x, you can place key on <template>.
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="x in list" v-bind:key="x"><div /></template></div></template>'
+      code: '<template><div><template v-for="x in list" v-bind:key="x"><div /></template></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="x in list" v-bind:key="x"><MyComp /></template></div></template>'
+      code: '<template><div><template v-for="x in list" v-bind:key="x"><MyComp /></template></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="x in list" :key="x"><div /></template></div></template>'
+      code: '<template><div><template v-for="x in list" :key="x"><div /></template></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="x in list" :key="x"><MyComp /></template></div></template>'
+      code: '<template><div><template v-for="x in list" :key="x"><MyComp /></template></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="x in list" :key="x.id"><div /></template></div></template>'
+      code: '<template><div><template v-for="x in list" :key="x.id"><div /></template></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="x in list" :key="x.id"><MyComp /></template></div></template>'
+      code: '<template><div><template v-for="x in list" :key="x.id"><MyComp /></template></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="(x, i) in list" :key="i"><div /></template></div></template>'
+      code: '<template><div><template v-for="(x, i) in list" :key="i"><div /></template></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="(x, i) in list" :key="i"><MyComp /></template></div></template>'
+      code: '<template><div><template v-for="(x, i) in list" :key="i"><MyComp /></template></div></template>'
     },
     // key on <slot> : In Vue.js 3.x, you can place key on <slot>.
     {
       filename: 'test.vue',
-      code:
-        '<template><div><slot v-for="x in list" :key="x"><div /></slot></div></template>'
+      code: '<template><div><slot v-for="x in list" :key="x"><div /></slot></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><slot v-for="x in list" :key="x"><MyComp /></slot></div></template>'
+      code: '<template><div><slot v-for="x in list" :key="x"><MyComp /></slot></div></template>'
     }
   ],
   invalid: [
@@ -118,20 +102,17 @@ tester.run('require-v-for-key', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list" key="100"></div></div></template>',
+      code: '<template><div><div v-for="x in list" key="100"></div></div></template>',
       errors: ["Elements in iteration expect to have 'v-bind:key' directives."]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="x in list"><div></div></template></div></template>',
+      code: '<template><div><template v-for="x in list"><div></div></template></div></template>',
       errors: ["Elements in iteration expect to have 'v-bind:key' directives."]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><slot v-for="x in list" :name="x"><div></div></slot></div></template>',
+      code: '<template><div><slot v-for="x in list" :name="x"><div></div></slot></div></template>',
       errors: ["Elements in iteration expect to have 'v-bind:key' directives."]
     }
   ]
diff --git a/tests/lib/rules/this-in-template.js b/tests/lib/rules/this-in-template.js
index f2a40ff6..5d081f46 100644
--- a/tests/lib/rules/this-in-template.js
+++ b/tests/lib/rules/this-in-template.js
@@ -121,41 +121,73 @@ function createInvalidTests(prefix, options, message, type) {
   return [
     {
       code: `<template><div>{{ ${prefix}foo }}</div></template><!-- ${comment} -->`,
+      output: `<template><div>{{ ${suggestionPrefix(
+        prefix,
+        options
+      )}foo }}</div></template><!-- ${comment} -->`,
       errors: [{ message, type }],
       options
     },
     {
       code: `<template><div>{{ ${prefix}foo() }}</div></template><!-- ${comment} -->`,
+      output: `<template><div>{{ ${suggestionPrefix(
+        prefix,
+        options
+      )}foo() }}</div></template><!-- ${comment} -->`,
       errors: [{ message, type }],
       options
     },
     {
       code: `<template><div>{{ ${prefix}foo.bar() }}</div></template><!-- ${comment} -->`,
+      output: `<template><div>{{ ${suggestionPrefix(
+        prefix,
+        options
+      )}foo.bar() }}</div></template><!-- ${comment} -->`,
       errors: [{ message, type }],
       options
     },
     {
       code: `<template><div :class="${prefix}foo"></div></template><!-- ${comment} -->`,
+      output: `<template><div :class="${suggestionPrefix(
+        prefix,
+        options
+      )}foo"></div></template><!-- ${comment} -->`,
       errors: [{ message, type }],
       options
     },
     {
       code: `<template><div :class="{foo: ${prefix}foo}"></div></template><!-- ${comment} -->`,
+      output: `<template><div :class="{foo: ${suggestionPrefix(
+        prefix,
+        options
+      )}foo}"></div></template><!-- ${comment} -->`,
       errors: [{ message, type }],
       options
     },
     {
       code: `<template><div :class="{foo: ${prefix}foo()}"></div></template><!-- ${comment} -->`,
+      output: `<template><div :class="{foo: ${suggestionPrefix(
+        prefix,
+        options
+      )}foo()}"></div></template><!-- ${comment} -->`,
       errors: [{ message, type }],
       options
     },
     {
       code: `<template><div v-if="${prefix}foo"></div></template><!-- ${comment} -->`,
+      output: `<template><div v-if="${suggestionPrefix(
+        prefix,
+        options
+      )}foo"></div></template><!-- ${comment} -->`,
       errors: [{ message, type }],
       options
     },
     {
       code: `<template><div v-for="foo in ${prefix}bar"></div></template><!-- ${comment} -->`,
+      output: `<template><div v-for="foo in ${suggestionPrefix(
+        prefix,
+        options
+      )}bar"></div></template><!-- ${comment} -->`,
       errors: [{ message, type }],
       options
     }
@@ -172,11 +204,13 @@ function createInvalidTests(prefix, options, message, type) {
       : [
           {
             code: `<template><div>{{ this['xs'] }}</div></template><!-- ${comment} -->`,
+            output: `<template><div>{{ xs }}</div></template><!-- ${comment} -->`,
             errors: [{ message, type }],
             options
           },
           {
             code: `<template><div>{{ this['xs0AZ_foo'] }}</div></template><!-- ${comment} -->`,
+            output: `<template><div>{{ xs0AZ_foo }}</div></template><!-- ${comment} -->`,
             errors: [{ message, type }],
             options
           }
@@ -225,13 +259,23 @@ ruleTester.run('this-in-template', rule, {
     .concat([
       {
         code: `<template><div v-if="fn(this.$foo)"></div></template><!-- never -->`,
+        output: `<template><div v-if="fn($foo)"></div></template><!-- never -->`,
         errors: ["Unexpected usage of 'this'."],
         options: ['never']
       },
       {
         code: `<template><div :class="{ foo: this.$foo }"></div></template><!-- never -->`,
+        output: `<template><div :class="{ foo: $foo }"></div></template><!-- never -->`,
         errors: ["Unexpected usage of 'this'."],
         options: ['never']
       }
     ])
 })
+
+function suggestionPrefix(prefix, options) {
+  if (options[0] === 'always' && !['this.', 'this?.'].includes(prefix)) {
+    return 'this.'
+  } else {
+    return ''
+  }
+}
diff --git a/tests/lib/rules/valid-template-root.js b/tests/lib/rules/valid-template-root.js
index 212fefc8..f530786d 100644
--- a/tests/lib/rules/valid-template-root.js
+++ b/tests/lib/rules/valid-template-root.js
@@ -41,13 +41,11 @@ tester.run('valid-template-root', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template>\n    <!-- comment -->\n    <div v-if="foo">abc</div>\n    <div v-else>abc</div>\n</template>'
+      code: '<template>\n    <!-- comment -->\n    <div v-if="foo">abc</div>\n    <div v-else>abc</div>\n</template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template>\n    <!-- comment -->\n    <div v-if="foo">abc</div>\n    <div v-else-if="bar">abc</div>\n    <div v-else>abc</div>\n</template>'
+      code: '<template>\n    <!-- comment -->\n    <div v-if="foo">abc</div>\n    <div v-else-if="bar">abc</div>\n    <div v-else>abc</div>\n</template>'
     },
     {
       filename: 'test.vue',
@@ -59,8 +57,7 @@ tester.run('valid-template-root', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div v-if="foo"></div><div v-else-if="bar"></div></template>'
+      code: '<template><div v-if="foo"></div><div v-else-if="bar"></div></template>'
     },
     {
       filename: 'test.vue',
diff --git a/tests/lib/rules/valid-v-bind-sync.js b/tests/lib/rules/valid-v-bind-sync.js
index 763ae582..a2e47a6a 100644
--- a/tests/lib/rules/valid-v-bind-sync.js
+++ b/tests/lib/rules/valid-v-bind-sync.js
@@ -51,63 +51,51 @@ tester.run('valid-v-bind-sync', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><svg><MyComponent :foo.sync="this.foo().bar" /></svg></template>'
+      code: '<template><svg><MyComponent :foo.sync="this.foo().bar" /></svg></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><MyComponent :foo.sync="x.foo" /></div></div></template>'
+      code: '<template><div><div v-for="x in list"><MyComponent :foo.sync="x.foo" /></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[x]" /></div></div></template>'
+      code: '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[x]" /></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[x - 1]" /></div></div></template>'
+      code: '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[x - 1]" /></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[`${x}`]" /></div></div></template>'
+      code: '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[`${x}`]" /></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[`prefix_${x}`]" /></div></div></template>'
+      code: '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[`prefix_${x}`]" /></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[x ? x : \'_\']" /></div></div></template>'
+      code: '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[x ? x : \'_\']" /></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[x || \'_\']" /></div></div></template>'
+      code: '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[x || \'_\']" /></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[x()]" /></div></div></template>'
+      code: '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[x()]" /></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[/r/.match(x) ? 0 : 1]" /></div></div></template>'
+      code: '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[/r/.match(x) ? 0 : 1]" /></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[typeof x]" /></div></div></template>'
+      code: '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[typeof x]" /></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[tag`${x}`]" /></div></div></template>'
+      code: '<template><div><div v-for="x in list"><MyComponent :foo.sync="foo[tag`${x}`]" /></div></div></template>'
     },
     // not .sync
     {
@@ -431,14 +419,12 @@ tester.run('valid-v-bind-sync', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><tr v-on:is="myRow" :some-prop.sync="somePropValue"></template>',
+      code: '<template><tr v-on:is="myRow" :some-prop.sync="somePropValue"></template>',
       errors: ["'.sync' modifiers aren't supported on <tr> non Vue-components."]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><tr v-bind="myRow" :some-prop.sync="somePropValue"></template>',
+      code: '<template><tr v-bind="myRow" :some-prop.sync="somePropValue"></template>',
       errors: ["'.sync' modifiers aren't supported on <tr> non Vue-components."]
     }
   ]
diff --git a/tests/lib/rules/valid-v-else-if.js b/tests/lib/rules/valid-v-else-if.js
index e9f05d1e..847632c5 100644
--- a/tests/lib/rules/valid-v-else-if.js
+++ b/tests/lib/rules/valid-v-else-if.js
@@ -29,13 +29,11 @@ tester.run('valid-v-else-if', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-if="foo"></div><div v-else-if="foo"></div></div></template>'
+      code: '<template><div><div v-if="foo"></div><div v-else-if="foo"></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-if="foo"></div><div v-else-if="foo"></div><div v-else-if="foo"></div></div></template>'
+      code: '<template><div><div v-if="foo"></div><div v-else-if="foo"></div><div v-else-if="foo"></div></div></template>'
     },
     {
       filename: 'test.vue',
@@ -44,21 +42,18 @@ tester.run('valid-v-else-if', rule, {
     // parsing error
     {
       filename: 'parsing-error.vue',
-      code:
-        '<template><div v-if="foo"></div><div v-else-if="."></div></template>'
+      code: '<template><div v-if="foo"></div><div v-else-if="."></div></template>'
     },
     // comment value (parsing error)
     {
       filename: 'comment-value.vue',
-      code:
-        '<template><div v-if="foo"></div><div v-else-if="/**/"></div></template>'
+      code: '<template><div v-if="foo"></div><div v-else-if="/**/"></div></template>'
     }
   ],
   invalid: [
     {
       filename: 'test.vue',
-      code:
-        '<template><template v-else-if="foo"><div></div></template></template>',
+      code: '<template><template v-else-if="foo"><div></div></template></template>',
       errors: [
         "'v-else-if' directives require being preceded by the element which has a 'v-if' or 'v-else-if' directive."
       ]
@@ -79,67 +74,58 @@ tester.run('valid-v-else-if', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div></div><div v-else-if="foo"></div></div></template>',
+      code: '<template><div><div></div><div v-else-if="foo"></div></div></template>',
       errors: [
         "'v-else-if' directives require being preceded by the element which has a 'v-if' or 'v-else-if' directive."
       ]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div if="foo"></div><div v-else-if="foo"></div></div></template>',
+      code: '<template><div><div if="foo"></div><div v-else-if="foo"></div></div></template>',
       errors: [
         "'v-else-if' directives require being preceded by the element which has a 'v-if' or 'v-else-if' directive."
       ]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-if="foo"></div><div></div><div v-else-if="foo"></div></div></template>',
+      code: '<template><div><div v-if="foo"></div><div></div><div v-else-if="foo"></div></div></template>',
       errors: [
         "'v-else-if' directives require being preceded by the element which has a 'v-if' or 'v-else-if' directive."
       ]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-if="foo"></div><div v-else-if="foo" v-if="bar"></div></div></template>',
+      code: '<template><div><div v-if="foo"></div><div v-else-if="foo" v-if="bar"></div></div></template>',
       errors: [
         "'v-else-if' and 'v-if' directives can't exist on the same element."
       ]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-if="foo"></div><div v-else-if="foo" v-else></div></div></template>',
+      code: '<template><div><div v-if="foo"></div><div v-else-if="foo" v-else></div></div></template>',
       errors: [
         "'v-else-if' and 'v-else' directives can't exist on the same element."
       ]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-if="foo"></div><div v-else-if:aaa="foo"></div></div></template>',
+      code: '<template><div><div v-if="foo"></div><div v-else-if:aaa="foo"></div></div></template>',
       errors: ["'v-else-if' directives require no argument."]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-if="foo"></div><div v-else-if.aaa="foo"></div></div></template>',
+      code: '<template><div><div v-if="foo"></div><div v-else-if.aaa="foo"></div></div></template>',
       errors: ["'v-else-if' directives require no modifier."]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-if="foo"></div><div v-else-if></div></div></template>',
+      code: '<template><div><div v-if="foo"></div><div v-else-if></div></div></template>',
       errors: ["'v-else-if' directives require that attribute value."]
     },
     // empty value
     {
       filename: 'empty-value.vue',
-      code:
-        '<template><div v-if="foo"></div><div v-else-if=""></div></template>',
+      code: '<template><div v-if="foo"></div><div v-else-if=""></div></template>',
       errors: ["'v-else-if' directives require that attribute value."]
     }
   ]
diff --git a/tests/lib/rules/valid-v-else.js b/tests/lib/rules/valid-v-else.js
index 31b06786..e4513ca4 100644
--- a/tests/lib/rules/valid-v-else.js
+++ b/tests/lib/rules/valid-v-else.js
@@ -29,13 +29,11 @@ tester.run('valid-v-else', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-if="foo"></div><div v-else></div></div></template>'
+      code: '<template><div><div v-if="foo"></div><div v-else></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-if="foo"></div><div v-else-if="foo"></div><div v-else></div></div></template>'
+      code: '<template><div><div v-if="foo"></div><div v-else-if="foo"></div><div v-else></div></div></template>'
     },
     {
       filename: 'test.vue',
@@ -73,52 +71,45 @@ tester.run('valid-v-else', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div if="foo"></div><div v-else></div></div></template>',
+      code: '<template><div><div if="foo"></div><div v-else></div></div></template>',
       errors: [
         "'v-else' directives require being preceded by the element which has a 'v-if' or 'v-else-if' directive."
       ]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-if="foo"></div><div></div><div v-else></div></div></template>',
+      code: '<template><div><div v-if="foo"></div><div></div><div v-else></div></div></template>',
       errors: [
         "'v-else' directives require being preceded by the element which has a 'v-if' or 'v-else-if' directive."
       ]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-if="foo"></div><div v-else v-if="bar"></div></div></template>',
+      code: '<template><div><div v-if="foo"></div><div v-else v-if="bar"></div></div></template>',
       errors: [
         "'v-else' and 'v-if' directives can't exist on the same element. You may want 'v-else-if' directives."
       ]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-if="foo"></div><div v-else v-else-if="foo"></div></div></template>',
+      code: '<template><div><div v-if="foo"></div><div v-else v-else-if="foo"></div></div></template>',
       errors: [
         "'v-else' and 'v-else-if' directives can't exist on the same element."
       ]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-if="foo"></div><div v-else:aaa></div></div></template>',
+      code: '<template><div><div v-if="foo"></div><div v-else:aaa></div></div></template>',
       errors: ["'v-else' directives require no argument."]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-if="foo"></div><div v-else.aaa></div></div></template>',
+      code: '<template><div><div v-if="foo"></div><div v-else.aaa></div></div></template>',
       errors: ["'v-else' directives require no modifier."]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-if="foo"></div><div v-else="foo"></div></div></template>',
+      code: '<template><div><div v-if="foo"></div><div v-else="foo"></div></div></template>',
       errors: ["'v-else' directives require no attribute value."]
     },
     // parsing error
@@ -130,8 +121,7 @@ tester.run('valid-v-else', rule, {
     // comment value
     {
       filename: 'comment-value.vue',
-      code:
-        '<template><div v-if="foo"></div><div v-else="/**/"></div></template>',
+      code: '<template><div v-if="foo"></div><div v-else="/**/"></div></template>',
       errors: ["'v-else' directives require no attribute value."]
     },
     // empty value
diff --git a/tests/lib/rules/valid-v-for.js b/tests/lib/rules/valid-v-for.js
index e42fa4f4..a29d3081 100644
--- a/tests/lib/rules/valid-v-for.js
+++ b/tests/lib/rules/valid-v-for.js
@@ -37,68 +37,55 @@ tester.run('valid-v-for', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="(x, i, k) in list"></div></div></template>'
+      code: '<template><div><div v-for="(x, i, k) in list"></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="(x, i, k) of list"></div></div></template>'
+      code: '<template><div><div v-for="(x, i, k) of list"></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="({id, name}, i, k) of list"></div></div></template>'
+      code: '<template><div><div v-for="({id, name}, i, k) of list"></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="([id, name], i, k) of list"></div></div></template>'
+      code: '<template><div><div v-for="([id, name], i, k) of list"></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><your-component v-for="x in list" :key="x.id"></your-component></div></template>'
+      code: '<template><div><your-component v-for="x in list" :key="x.id"></your-component></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div is="your-component" v-for="x in list" :key="x.id"></div></div></template>'
+      code: '<template><div><div is="your-component" v-for="x in list" :key="x.id"></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div :is="your-component" v-for="x in list" :key="x.id"></div></div></template>'
+      code: '<template><div><div :is="your-component" v-for="x in list" :key="x.id"></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="x in list"><custom-component :key="x"></custom-component></template></div></template>'
+      code: '<template><div><template v-for="x in list"><custom-component :key="x"></custom-component></template></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="x in list"><div :key="x"></div></template></div></template>'
+      code: '<template><div><template v-for="x in list"><div :key="x"></div></template></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="x in list"><div></div></template></div></template>'
+      code: '<template><div><template v-for="x in list"><div></div></template></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><template v-for="x of list"><slot name="item" /></template></template>'
+      code: '<template><template v-for="x of list"><slot name="item" /></template></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><template v-for="x of list">foo<div></div></template></template>'
+      code: '<template><template v-for="x of list">foo<div></div></template></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="x of list"><div v-for="foo of x" :key="foo"></div></template></div></template>'
+      code: '<template><div><template v-for="x of list"><div v-for="foo of x" :key="foo"></div></template></div></template>'
     },
     {
       filename: 'test.vue',
@@ -131,59 +118,48 @@ tester.run('valid-v-for', rule, {
     // key on <template> : In Vue.js 3.x, you can place key on <template>.
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="x in list" v-bind:key="x"><div /></template></div></template>'
+      code: '<template><div><template v-for="x in list" v-bind:key="x"><div /></template></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="x in list" v-bind:key="x"><MyComp /></template></div></template>'
+      code: '<template><div><template v-for="x in list" v-bind:key="x"><MyComp /></template></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="x in list" :key="x"><div /></template></div></template>'
+      code: '<template><div><template v-for="x in list" :key="x"><div /></template></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="x in list" :key="x"><MyComp /></template></div></template>'
+      code: '<template><div><template v-for="x in list" :key="x"><MyComp /></template></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="x in list" :key="x.id"><div /></template></div></template>'
+      code: '<template><div><template v-for="x in list" :key="x.id"><div /></template></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="x in list" :key="x.id"><MyComp /></template></div></template>'
+      code: '<template><div><template v-for="x in list" :key="x.id"><MyComp /></template></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="(x, i) in list" :key="i"><div /></template></div></template>'
+      code: '<template><div><template v-for="(x, i) in list" :key="i"><div /></template></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="(x, i) in list" :key="i"><MyComp /></template></div></template>'
+      code: '<template><div><template v-for="(x, i) in list" :key="i"><MyComp /></template></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="x in list" :key="x"><custom-component></custom-component></template></div></template>'
+      code: '<template><div><template v-for="x in list" :key="x"><custom-component></custom-component></template></div></template>'
     },
     // key on <slot> : In Vue.js 3.x, you can place key on <slot>.
     {
       filename: 'test.vue',
-      code:
-        '<template><div><slot v-for="x in list" :key="x"><div /></slot></div></template>'
+      code: '<template><div><slot v-for="x in list" :key="x"><div /></slot></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><slot v-for="x in list" :key="x"><MyComp /></slot></div></template>'
+      code: '<template><div><slot v-for="x in list" :key="x"><MyComp /></slot></div></template>'
     },
     // parsing error
     {
@@ -192,8 +168,7 @@ tester.run('valid-v-for', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="xin list"><div></div></template></div></template>'
+      code: '<template><div><template v-for="xin list"><div></div></template></div></template>'
     },
     // comment value (parsing error)
     {
@@ -219,102 +194,87 @@ tester.run('valid-v-for', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="(,a,b) in list"></div></div></template>',
+      code: '<template><div><div v-for="(,a,b) in list"></div></div></template>',
       errors: ["Invalid alias ''."]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="(a,,b) in list"></div></div></template>',
+      code: '<template><div><div v-for="(a,,b) in list"></div></div></template>',
       errors: ["Invalid alias ''."]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="(a,b,,) in list"></div></div></template>',
+      code: '<template><div><div v-for="(a,b,,) in list"></div></div></template>',
       errors: ["Invalid alias ''."]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="(a,{b,c}) in list"></div></div></template>',
+      code: '<template><div><div v-for="(a,{b,c}) in list"></div></div></template>',
       errors: ["Invalid alias '{b,c}'."]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="(a,b,{c,d}) in list"></div></div></template>',
+      code: '<template><div><div v-for="(a,b,{c,d}) in list"></div></div></template>',
       errors: ["Invalid alias '{c,d}'."]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><your-component v-for="x in list"></your-component></div></template>',
+      code: '<template><div><your-component v-for="x in list"></your-component></div></template>',
       errors: ["Custom elements in iteration require 'v-bind:key' directives."]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div is="your-component" v-for="x in list"></div></div></template>',
+      code: '<template><div><div is="your-component" v-for="x in list"></div></div></template>',
       errors: ["Custom elements in iteration require 'v-bind:key' directives."]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div :is="your-component" v-for="x in list"></div></div></template>',
+      code: '<template><div><div :is="your-component" v-for="x in list"></div></div></template>',
       errors: ["Custom elements in iteration require 'v-bind:key' directives."]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-bind:is="your-component" v-for="x in list"></div></div></template>',
+      code: '<template><div><div v-bind:is="your-component" v-for="x in list"></div></div></template>',
       errors: ["Custom elements in iteration require 'v-bind:key' directives."]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list" :key="100"></div></div></template>',
+      code: '<template><div><div v-for="x in list" :key="100"></div></div></template>',
       errors: [
         "Expected 'v-bind:key' directive to use the variables which are defined by the 'v-for' directive."
       ]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><custom-component v-for="x in list" :key="100"></custom-component></div></template>',
+      code: '<template><div><custom-component v-for="x in list" :key="100"></custom-component></div></template>',
       errors: [
         "Expected 'v-bind:key' directive to use the variables which are defined by the 'v-for' directive."
       ]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list" :key="foo"></div></div></template>',
+      code: '<template><div><div v-for="x in list" :key="foo"></div></div></template>',
       errors: [
         "Expected 'v-bind:key' directive to use the variables which are defined by the 'v-for' directive."
       ]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><custom-component v-for="x in list" :key="foo"></custom-component></div></template>',
+      code: '<template><div><custom-component v-for="x in list" :key="foo"></custom-component></div></template>',
       errors: [
         "Expected 'v-bind:key' directive to use the variables which are defined by the 'v-for' directive."
       ]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="(item, index) in suggestions" :key></div></div></template>',
+      code: '<template><div><div v-for="(item, index) in suggestions" :key></div></div></template>',
       errors: [
         "Expected 'v-bind:key' directive to use the variables which are defined by the 'v-for' directive."
       ]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><template v-for="x of list"><div v-for="foo of y" :key="foo"></div></template></div></template>',
+      code: '<template><div><template v-for="x of list"><div v-for="foo of y" :key="foo"></div></template></div></template>',
       errors: [
         "Expected 'v-bind:key' directive to use the variables which are defined by the 'v-for' directive."
       ]
diff --git a/tests/lib/rules/valid-v-if.js b/tests/lib/rules/valid-v-if.js
index d3afe578..64232c3d 100644
--- a/tests/lib/rules/valid-v-if.js
+++ b/tests/lib/rules/valid-v-if.js
@@ -52,8 +52,7 @@ tester.run('valid-v-if', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-if="foo" v-else-if="bar"></div></div></template>',
+      code: '<template><div><div v-if="foo" v-else-if="bar"></div></div></template>',
       errors: [
         "'v-if' and 'v-else-if' directives can't exist on the same element."
       ]
diff --git a/tests/lib/rules/valid-v-model.js b/tests/lib/rules/valid-v-model.js
index 8c3e384a..6ee60526 100644
--- a/tests/lib/rules/valid-v-model.js
+++ b/tests/lib/rules/valid-v-model.js
@@ -61,63 +61,51 @@ tester.run('valid-v-model', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><your-component v-model="foo"></your-component></template>'
+      code: '<template><your-component v-model="foo"></your-component></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><input v-model="x.foo"></div></div></template>'
+      code: '<template><div><div v-for="x in list"><input v-model="x.foo"></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><input v-model="foo[x]"></div></div></template>'
+      code: '<template><div><div v-for="x in list"><input v-model="foo[x]"></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><input v-model="foo[x - 1]"></div></div></template>'
+      code: '<template><div><div v-for="x in list"><input v-model="foo[x - 1]"></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><input v-model="foo[`${x}`]"></div></div></template>'
+      code: '<template><div><div v-for="x in list"><input v-model="foo[`${x}`]"></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><input v-model="foo[`prefix_${x}`]"></div></div></template>'
+      code: '<template><div><div v-for="x in list"><input v-model="foo[`prefix_${x}`]"></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><input v-model="foo[x ? x : \'_\']"></div></div></template>'
+      code: '<template><div><div v-for="x in list"><input v-model="foo[x ? x : \'_\']"></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><input v-model="foo[x || \'_\']"></div></div></template>'
+      code: '<template><div><div v-for="x in list"><input v-model="foo[x || \'_\']"></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><input v-model="foo[x()]"></div></div></template>'
+      code: '<template><div><div v-for="x in list"><input v-model="foo[x()]"></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><input v-model="foo[/r/.match(x) ? 0 : 1]"></div></div></template>'
+      code: '<template><div><div v-for="x in list"><input v-model="foo[/r/.match(x) ? 0 : 1]"></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><input v-model="foo[typeof x]"></div></div></template>'
+      code: '<template><div><div v-for="x in list"><input v-model="foo[typeof x]"></div></div></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><input v-model="foo[tag`${x}`]"></div></div></template>'
+      code: '<template><div><div v-for="x in list"><input v-model="foo[tag`${x}`]"></div></div></template>'
     },
     {
       filename: 'test.vue',
@@ -133,23 +121,19 @@ tester.run('valid-v-model', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><MyComponent v-model:aaa.modifier="a"></MyComponent></template>'
+      code: '<template><MyComponent v-model:aaa.modifier="a"></MyComponent></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><MyComponent v-model.modifier="a"></MyComponent></template>'
+      code: '<template><MyComponent v-model.modifier="a"></MyComponent></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><MyComponent v-model:aaa.modifier.modifierTwo="a"></MyComponent></template>'
+      code: '<template><MyComponent v-model:aaa.modifier.modifierTwo="a"></MyComponent></template>'
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><MyComponent v-model.modifier.modifierTwo="a"></MyComponent></template>'
+      code: '<template><MyComponent v-model.modifier.modifierTwo="a"></MyComponent></template>'
     },
     // svg
     {
@@ -206,32 +190,28 @@ tester.run('valid-v-model', rule, {
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><input v-model="x"></div></div></template>',
+      code: '<template><div><div v-for="x in list"><input v-model="x"></div></div></template>',
       errors: [
         "'v-model' directives cannot update the iteration variable 'x' itself."
       ]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><input v-model="(x)"></div></div></template>',
+      code: '<template><div><div v-for="x in list"><input v-model="(x)"></div></div></template>',
       errors: [
         "'v-model' directives cannot update the iteration variable 'x' itself."
       ]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="x in list"><input v-model="(((x)))"></div></div></template>',
+      code: '<template><div><div v-for="x in list"><input v-model="(((x)))"></div></div></template>',
       errors: [
         "'v-model' directives cannot update the iteration variable 'x' itself."
       ]
     },
     {
       filename: 'test.vue',
-      code:
-        '<template><div><div v-for="e in list"><input v-model="e"></div></div></template>',
+      code: '<template><div><div v-for="e in list"><input v-model="e"></div></div></template>',
       errors: [
         "'v-model' directives cannot update the iteration variable 'e' itself."
       ]
diff --git a/tests/lib/rules/valid-v-slot.js b/tests/lib/rules/valid-v-slot.js
index 99dc4b39..cb6b8538 100644
--- a/tests/lib/rules/valid-v-slot.js
+++ b/tests/lib/rules/valid-v-slot.js
@@ -145,8 +145,7 @@ tester.run('valid-v-slot', rule, {
     // parsing error
     {
       filename: 'parsing-error.vue',
-      code:
-        '<template><MyComponent v-slot="." ><div /></MyComponent></template>'
+      code: '<template><MyComponent v-slot="." ><div /></MyComponent></template>'
     }
   ],
   invalid: [
@@ -461,21 +460,18 @@ tester.run('valid-v-slot', rule, {
     // comment value
     {
       filename: 'comment-value1.vue',
-      code:
-        '<template><MyComponent v-slot="/**/" ><div /></MyComponent></template>',
+      code: '<template><MyComponent v-slot="/**/" ><div /></MyComponent></template>',
       errors: [{ messageId: 'requireAttributeValue' }]
     },
     {
       filename: 'comment-value2.vue',
-      code:
-        '<template><MyComponent v-slot=/**/ ><div /></MyComponent></template>',
+      code: '<template><MyComponent v-slot=/**/ ><div /></MyComponent></template>',
       errors: [{ messageId: 'requireAttributeValue' }]
     },
     // empty value
     {
       filename: 'empty-value.vue',
-      code:
-        '<template><MyComponent v-slot="" ><div /></MyComponent></template>',
+      code: '<template><MyComponent v-slot="" ><div /></MyComponent></template>',
       errors: [{ messageId: 'requireAttributeValue' }]
     }
   ]