前端开发中,我们不可避免地会遇到一些代码质量问题,比如未定义变量、未使用变量等等。这些问题在项目较小的时候可能并不那么明显,但随着项目的规模不断增大,这些问题会逐渐积累,给代码的可读性、可维护性都带来很大的困难。为了能够有效地检测和解决这些问题,我们可以使用静态代码分析工具,如 ESLint、TSLint 等等。本文要介绍的是一款专门对 Vue 项目进行静态代码分析的 npm 包 @the-/axe。
@the-/axe 简介
@the-/axe 是一个专门针对 Vue 项目进行静态代码分析的 npm 包。它通过分析代码中的语法树,自动检测出项目中潜在的问题。同时,@the-/axe 还提供了多个预设的规则(rule),我们可以根据项目特点自由选择、配置这些规则,以便更好地适应项目的实际情况。此外,@the-/axe 还支持自定义规则,我们可以根据项目需要编写自己的规则。
@the-/axe 安装 & 使用
接下来,我们来看看如何安装和使用 @the-/axe。注意:@the-/axe 需要 Node.js 版本 ≥ 14.15.4,Vue 版本 ≥ 2.0。本文所用版本:@the-/axe v8.3.3,Node.js v16.1.0,Vue v3.0.0。
安装
我们可以使用 npm 或 yarn 来安装 @the-/axe。
# npm 安装: npm install --save-dev @the-/axe # yarn 安装: yarn add -D @the-/axe
使用
使用 @the-/axe,我们需要在项目的根目录下创建一个 .theaxerc.js
文件(也可以使用 .theaxerc.json
、.theaxerc.yml
或 .theaxerc.toml
)。这个文件中定义了我们要使用的规则、需要忽略的文件等等。
下面我们来创建一个 .theaxerc.js
文件,并添加一些配置项:
module.exports = { ignores: ['**/node_modules/**', '**/dist/**'], rules: { 'vue/no-unused-vars': ['error'], 'vue/no-unsed-components': ['warn'], }, };
这个配置文件定义了:
- 忽略所有
node_modules
和dist
目录下的文件; - 启用了
vue/no-unused-vars
和vue/no-unsed-components
两个规则。
这两个规则的含义分别是:
vue/no-unused-vars
:检测是否存在未使用的变量;vue/no-unsed-components
:检测是否存在未使用的组件。
在我们使用 @the-/axe 时,需要运行它的命令:
npx the-axe --ext .js,.vue --fix
--ext .js,.vue
:指定要检测的文件后缀名;--fix
:会自动修复一些简单的问题(仅限于支持自动修复的规则)。
@the-/axe 自定义规则
在实际项目中,可能会因为项目特定要求无法使用现有的预设规则。@the-/axe 就为我们提供了自定义规则的功能。下面,我们来看一下如何定义和使用自定义规则。
规则的定义
我们可以通过以下方式来定义规则:
-- -------------------- ---- ------- ----- - ---- - - --------------------- -------------- - ------ ----- - ----- --------- ----- - ------------ -------------- --------- ----- -- ---- ------------ ------ -- -- --------------- - ------ - ---------------------- - -- -------------- --- --- -- ---------- - ------- - ----- --------- - --------------------------- -- ----------- -- --------------- --- ---- - ------- - ----- - ------- --------------- - - ------------------ ----- - ------- ---------- - - --------------- ----- ---- - --------------- - ----------- -- ----- --- -- - ---------------- ----- -------- ------ ------ ---- ----- ----- -- --- --- ------- --- - -- -- -- ---展开代码
该规则的作用是:检测逗号后面是否有空格。具体的解释,可以看注释和代码实现。在定义规则时,需要注意以下几点:
meta.type
:规则的类型。@the-/axe 默认提供了以下五种类型:'problem'
、'suggestion'
、'layout'
、'performance'
、'information'
,我们可以根据自己定义的规则类型,自由选择这五种类型之一。meta.docs
:规则的说明。其中,description
是规则的简述,category
是规则的分类,recommended
表示规则是否为推荐使用的规则。context.report
:规则出现问题时的反馈。在这个例子中,如果检测到逗号后没有空格,会输出Comma should have space after it but not have.
。
规则的使用
定义好规则之后,我们需要在 .theaxerc.js
文件中将这个规则加入到 rules
配置项中去:
module.exports = { // ... rules: { // ... 'my-custom-rule': ['error'], }, plugins: ['my-plugin'], };
在这里,my-plugin
是我们自定义的一个插件,放在了项目的 plugins
配置项中。我们需要把自定义规则打包成 npm 包,并将其安装到项目中,随后就可以在 .theaxerc.js
文件的 rules
配置项中引用了。
经验分享
在使用 @the-/axe 进行 Vue 项目的静态代码分析时,我们可以遇到一些问题,下面分享一下经验。
1. 建议结合 VS Code 配置文件一起使用
在 VS Code 中,我们可以添加 .editorconfig
文件,自动为项目中的代码进行格式化。默认的格式化配置里会有一个选项:comma-spacing
,它的作用是在逗号后面增加一个空格。和我们在创建自定义规则时的想法相同,这个选项的目的是增加代码的可读性,从而方便其他开发者在阅读代码时快速理解各个参数/变量之间的关系。
但是,这个选项和我们自定义规则中的检查条件是不同的。在我们的规则中,要求逗号后面必须没有空格,否则就会报出警告。由此,我们需要对 VS Code 的配置文件进行修改,将 comma-spacing
的选项清除,以避免干扰,如下所示:
-- -------------------- ---- ------- - ------- ------ ---------------- ------ -------------- ----- ------------- ---- ----------- -- -------------- --------- ------------- ------------- ----------------- ---- -展开代码
2. 注意规则的配置
前面我们介绍了 .theaxerc.js
配置文件中 rules
配置项的部分内容。为了更好地使用 @the-/axe,需要在细节上注意以下几点:
- 下划线的问题。在 .theaxerc.js 中,下划线的规则是和 JavaScript 中的一样的,比如
vue/component-name-in-template-casing
规则,可以在配置文件中写成vue/component_name_in_template_casing
; - 关于规则的启用和禁用。在 @the-/axe 中,规则用中括号的方式来表示。如果带有
error
,代表该规则使用的是错误级别;如果是warn
,则使用的是警告级别;如果是off
,则没有使用该规则,被禁用了; - 同时使用多个插件。在 .theaxerc.js 文件中,除了可以配置自定义规则的插件,我们还可以使用预设插件(例如 vue)、@the-/axe 内置的插件以及其他自定义的插件。在使用多个插件时,在
plugins
配置项中使用数组的方式即可。
示例代码
以下是一段使用了 @the-/axe 的 Vue 单文件组件代码:
-- -------------------- ---- ------- ---------- ----- --------- ---------- ------ ----------- -------- -- -- ------- -- ------ ------- ---- -------------------------- ------ ------- - ----- ------ ----------- - ------- -- ------ - ------ - -------- ------ ------- ----- - - ----- ------- -- - ----- -------- - - - -- --------- - ---------------- --------- -- -------- - ------------- - ----------------------- ------------- -- ------------- - --------- - -------------------- -- - ------ ----------------------- -- - -- --------- - ---------- - ------ ------------------- - - - --------- ------- -- - ------ ----- - --------展开代码
以上是使用 @the-/axe 进行静态代码分析后,产生的默认规则的报告内容。大家也可以自定义规则,使其适应自己的实际项目需求。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/191018