随着前端技术的不断发展,我们的开发速度和质量也变得越来越重要,而代码的 review 也成为了整个团队必不可少的环节。但是在一个团队中,人力资源总是有限的,而代码 review 又是一项很繁琐重复的工作。那么,有没有什么工具能够帮助我们自动化进行代码 review 呢?
今天我们就来介绍一个非常实用的 npm 包:txbot-code-review。这个包可以通过自定义规则,对 JavaScript 代码进行静态分析,从而实现自动化的代码 review。废话不多说,接下来我们就来详细了解一下这个包的使用教程。
安装
使用 npm 安装 txbot-code-review 十分简单,只需在终端中输入如下命令即可:
npm install txbot-code-review --save-dev
使用
在安装好 txbot-code-review 之后,我们需要先定义一些规则,以便让 txbot-code-review 进行代码 review。
规则定义
txbot-code-review 的规则定义文件是一个 .js
文件,文件内包含了一些函数,函数的返回值即为针对代码的检查结果。下面是一个简单的规则定义示例:
-- -------------------- ---- ------- -------------- - - ------ - - ----- ------------------------- ----- -------------- ------ ------- ------ ------ -- - ------ --------- --- ----------------------- -- -------------------- --- ------------------- -- ---- -------- -------- -- - ----- - ----- ------- - - ------ ----- ----------- - ------------------------------------------------ ------------ ----- ----------- -- -- -------- -------- -------- -- - ----- - ----- ------- - - ------ ----- ---- - ---------------------------------------------------------- ------ ---------- -- ------- --- - - - -
上面的规则定义对象包含了五个属性:
name
:规则的名字,必须是一个字符串,一般用于在提示信息中显示。desc
:规则的描述,必须是一个字符串,一般用于在文档中显示。level
:规则的等级,必须是一个字符串,取值为 'off', 'warn', 'error' 中的一种,分别代表关闭、警告和错误级别。match
:规则的匹配函数,必须是一个函数,接收一个node
参数,代表当前正在分析的节点,在函数内部应该返回一个布尔值,表示是否匹配当前规则。fix
:规则的修复函数,必须是一个函数,接收两个参数,分别为report
和options
,其中report
是当前被匹配到的节点,options
是一些修复选项。在函数内部应该调用report.fix
方法,该方法用于修复被匹配到的节点代码。message
:规则的提示信息函数,必须是一个函数,接收两个参数,分别为report
和options
,其中report
是当前被匹配到的节点,options
是一些提示选项。在函数内部应该返回一个字符串,表示该规则触发时应该给出的提示信息。
接下来我们就来分别详细介绍每一个属性。
name
name
属性的值必须是一个字符串,一般用于在提示信息中显示。
desc
desc
属性的值必须是一个字符串,一般用于在文档中显示。
level
level
属性的值必须是一个字符串,取值为 'off', 'warn', 'error' 中的一种,分别代表关闭、警告和错误级别。
match
match
属性的值必须是一个函数,接收一个 node
参数,代表当前正在分析的节点,在函数内部应该返回一个布尔值,表示是否匹配当前规则。示例中的匹配函数就表示,匹配的节点必须是一个三元运算符表达式,并且 consequent
和 alternate
两个节点的类型必须相同。
fix
fix
属性的值必须是一个函数,接收两个参数,分别为 report
和 options
,其中 report
是当前被匹配到的节点,options
是一些修复选项。在函数内部应该调用 report.fix
方法,该方法用于修复被匹配到的节点代码。示例中的修复函数就表示,将三元运算符表达式的 consequent
替换为其文本形式。
message
message
属性的值必须是一个函数,接收两个参数,分别为 report
和 options
,其中 report
是当前被匹配到的节点,options
是一些提示选项。在函数内部应该返回一个字符串,表示该规则触发时应该给出的提示信息。示例中的提示信息函数就表示,该规则触发时会显示“不必要的三元运算符 (第 X 行)”这一提示信息,其中 X 表示当前节点所在的行数。
执行
除了定义规则之外,我们还需要编写一个脚本,以便使用 txbot-code-review 对代码进行 review。
下面是一个简单的脚本示例:
-- -------------------- ---- ------- ----- - ------ - - ---------------------------- ----- ---- - --------------- ----- ------ - --- -------- ------ ----------------------- ------------- -- ----- ------ - ----------------------------------------- ------------------------------
上面的脚本示例主要包含了三个部分:
引入
首先我们需要引入两个模块,分别为 txbot-code-review
和 path
。前者是我们要使用的 npm 包,后者则用于获取规则定义文件的绝对路径。
实例化
接下来我们需要实例化一个 Engine
对象,该对象接收一个配置对象,其中必须包括一个 rules
属性,表示规则定义文件的路径。
执行
最后我们需要执行 Engine
实例的 executeOnFiles
方法,该方法接收一个文件路径数组,然后将每个文件的代码传递给 txbot-code-review
进行分析,得到一个 Report
对象。我们可以通过这个对象的 toString
方法将报告转换为字符串,以便输出到终端。
示例代码
最后,为了让大家更好地理解,我们来看一下例子。假设现在我们要对如下的 JavaScript 代码进行 review:
function sortArrayByParity(nums) { return nums.sort((a, b) => a % 2 - b % 2) }
我们可以编写如下的规则:
-- -------------------- ---- ------- -------------- - - ------ - - ----- ------------------------- ----- -------------- ------ -------- ------ ------ -- - ------ --------- --- ------------------------- -- -------------- --- ---------------- -- ------------------------------ --- ------ -- -------- -------- -- - ----- - ----- ------- - - ------ ----- ---- - ---------------------------------------------------------- ------ ------------ -- ------- --- - - - -
然后,在终端执行 node run.js
命令即可进行代码 review。
以上就是本文对 txbot-code-review 的一个详细介绍和演示。希望通过本文能够对大家有所启发,促进自动化工具在前端开发中的应用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055d6081e8991b448db25c