npm 包 @the-/axe 使用教程

阅读时长 9 分钟读完

前端开发中,我们不可避免地会遇到一些代码质量问题,比如未定义变量、未使用变量等等。这些问题在项目较小的时候可能并不那么明显,但随着项目的规模不断增大,这些问题会逐渐积累,给代码的可读性、可维护性都带来很大的困难。为了能够有效地检测和解决这些问题,我们可以使用静态代码分析工具,如 ESLintTSLint 等等。本文要介绍的是一款专门对 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。

使用

使用 @the-/axe,我们需要在项目的根目录下创建一个 .theaxerc.js 文件(也可以使用 .theaxerc.json.theaxerc.yml.theaxerc.toml)。这个文件中定义了我们要使用的规则、需要忽略的文件等等。

下面我们来创建一个 .theaxerc.js 文件,并添加一些配置项:

这个配置文件定义了:

  1. 忽略所有 node_modulesdist 目录下的文件;
  2. 启用了 vue/no-unused-varsvue/no-unsed-components 两个规则。

这两个规则的含义分别是:

  • vue/no-unused-vars:检测是否存在未使用的变量;
  • vue/no-unsed-components:检测是否存在未使用的组件。

在我们使用 @the-/axe 时,需要运行它的命令:

  • --ext .js,.vue:指定要检测的文件后缀名;
  • --fix:会自动修复一些简单的问题(仅限于支持自动修复的规则)。

@the-/axe 自定义规则

在实际项目中,可能会因为项目特定要求无法使用现有的预设规则。@the-/axe 就为我们提供了自定义规则的功能。下面,我们来看一下如何定义和使用自定义规则。

规则的定义

我们可以通过以下方式来定义规则:

-- -------------------- ---- -------
----- - ---- - - ---------------------

-------------- - ------
  ----- -
    ----- ---------
    ----- -
      ------------ --------------
      --------- ----- -- ----
      ------------ ------
    --
  --

  --------------- -
    ------ -
      ---------------------- -
        -- -------------- --- --- -- ---------- -
          -------
        -

        ----- --------- - ---------------------------
        -- ----------- -- --------------- --- ---- -
          -------
        -

        ----- - ------- --------------- - - ------------------
        ----- - ------- ---------- - - ---------------

        ----- ---- - --------------- - -----------
        -- ----- --- -- -
          ----------------
            -----
            -------- ------ ------ ---- ----- ----- -- --- --- -------
          ---
        -
      --
    --
  --
---
展开代码

该规则的作用是:检测逗号后面是否有空格。具体的解释,可以看注释和代码实现。在定义规则时,需要注意以下几点:

  1. meta.type:规则的类型。@the-/axe 默认提供了以下五种类型:'problem''suggestion''layout''performance''information',我们可以根据自己定义的规则类型,自由选择这五种类型之一。
  2. meta.docs:规则的说明。其中,description 是规则的简述,category 是规则的分类,recommended 表示规则是否为推荐使用的规则。
  3. context.report:规则出现问题时的反馈。在这个例子中,如果检测到逗号后没有空格,会输出 Comma should have space after it but not have.

规则的使用

定义好规则之后,我们需要在 .theaxerc.js 文件中将这个规则加入到 rules 配置项中去:

在这里,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,需要在细节上注意以下几点:

  1. 下划线的问题。在 .theaxerc.js 中,下划线的规则是和 JavaScript 中的一样的,比如 vue/component-name-in-template-casing 规则,可以在配置文件中写成 vue/component_name_in_template_casing
  2. 关于规则的启用和禁用。在 @the-/axe 中,规则用中括号的方式来表示。如果带有 error,代表该规则使用的是错误级别;如果是 warn,则使用的是警告级别;如果是 off,则没有使用该规则,被禁用了;
  3. 同时使用多个插件。在 .theaxerc.js 文件中,除了可以配置自定义规则的插件,我们还可以使用预设插件(例如 vue)、@the-/axe 内置的插件以及其他自定义的插件。在使用多个插件时,在 plugins 配置项中使用数组的方式即可。

示例代码

以下是一段使用了 @the-/axe 的 Vue 单文件组件代码:

-- -------------------- ---- -------
----------
  -----
    --------- ----------
  ------
-----------

--------
-- -- ------- --
------ ------- ---- --------------------------

------ ------- -
  ----- ------

  ----------- -
    -------
  --

  ------ -
    ------ -
      -------- ------ -------
      ----- -
        -
          ----- -------
        --
        -
          ----- --------
        -
      -
    -
  --

  --------- -
    ---------------- ---------
  --

  -------- -
    ------------- -
      ----------------------- -------------
    --

    ------------- -
      --------- - -------------------- -- -
        ------ -----------------------
      --
    -
  --

  --------- -
    ---------- -
      ------ -------------------
    -
  -
-
---------

-------
-- -
  ------ -----
-
--------
展开代码

以上是使用 @the-/axe 进行静态代码分析后,产生的默认规则的报告内容。大家也可以自定义规则,使其适应自己的实际项目需求。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/191018