XXHolic / blog

I wonder how~, I wonder why~

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ESLint Rules

XXHolic opened this issue · comments

目录

引子

ESLint 里面的规则很多,针对 eslint:recommended 的配置进行集中了解。

简介

ESLint 是一个用于识别和报告在 ECMAScript / JavaScript 代码中发现的模式的工具,它的目的是让代码更加一致并避免 bug。在许多方面上与 JSLint 类似,但有一些不同之处:

  • ESLint 使用 Espree 解析 JavaScript。
  • ESLint 使用 AST 来评估代码中的模式。
  • ESLint 完全可插拔,每一个规则都是一个插件,你可以在运行时添加更多。

默认所有的规则都是不开启,使用 eslint --init 命令创建的配置文件,会有 "extends": "eslint:recommended" 的属性配置,下面就来看下对应这个设置的具体规则。

Rules

以下出现的规则是按照高版本到低版本排序

可能的错误

以下规则可能涉及到 JavaScript 代码的语法和逻辑错误。

规则 作用
no-async-promise-executor 禁止使用 async 函数作为 Promise 的执行体
no-misleading-character-class 禁止在字符类语法中出现由多个代码点组成的字符
require-atomic-updates 禁止由于 awaityield 的使用而可能导致出现竞态条件的赋值
getter-return 强制 getter 返回值
for-direction 强制 for 循环计数器合理更新,避免死循环
no-compare-neg-zero 禁止比较 -0
no-unsafe-negation 禁止对关系运算符的左操作数使用否定操作符
no-prototype-builtins 禁止直接调用 Object.prototype 的方法
no-unsafe-finally 禁止在 finally 块中出现控制流的语句
no-unexpected-multiline 禁止出现让人困惑的多行表达式
no-empty-character-class 禁止正则内空字符串集
no-dupe-args 禁止在 function 定义中使用重复参数
no-irregular-whitespace 禁止不规则空白
no-inner-declarations 禁止在嵌套的块中声明 varfunction
no-constant-condition 禁止在条件中使用常量表达式
no-extra-boolean-cast 禁止不必要的布尔类型转换
no-invalid-regexp 禁止在正则构造函数中使用非法字符
no-control-regex 禁止在正则中使用控制字符
no-cond-assign 禁止在条件语句中使用赋值运算符
no-dupe-keys 禁止对象键重复
no-ex-assign 禁止在 catch 中重新分配异常
no-extra-semi 禁止出现不必要的分号
no-func-assign 禁止重分配函数声明
no-obj-calls 禁止将全局对象属性作为函数调用
no-unreachable 禁止在 return, throw, continue, break 声明之后有不能抵达的代码
valid-typeof 强制使用 typeof 表达式跟有效的字符串比较
use-isnan 要求使用 isNaN() 检查 NaN
no-regex-spaces 禁止正则表达式中出现多个空格
no-sparse-arrays 禁止使用 [,'Tom',] 这类数组
no-debugger 禁止使用 debugger
no-empty 禁止空的块声明

最佳实践

规则 作用
no-useless-catch 禁止非必要的 catch
no-global-assign 禁止对原生对象或者只读全局变量赋值
no-useless-escape 禁用不必要的转义字符
no-self-assign 禁止自我赋值
no-unused-labels 禁止出现未使用的标签
no-case-declarations 禁止在 case 语句中直接使用词法声明
no-empty-pattern 禁止使用空的解构模式
no-redeclare 禁止变量重复声明
no-fallthrough 禁止 case 语句下通
no-octal 禁止使用八进制字面量
no-with 禁止使用 with 语句

变量

规则 作用
no-shadow-restricted-names 禁止将标识符定义为受限的名字
no-delete-var 禁止删除变量
no-undef 禁用使用未声明的变量,除非在 /* global */ 注释中被提到
no-unused-vars 禁用出现未使用的变量

格式问题

规则 作用
no-mixed-spaces-and-tabs 禁用缩进中空格和 Tab 混合

ES 6

规则 作用
no-new-symbol 禁止对 Symbol 对象使用 new 操作符
no-dupe-class-members 禁止声明重复的类成员
no-class-assign 禁止修改类声明的变量
no-const-assign 禁止修改 const 声明的变量
require-yield 要求 generator 函数内有 yield
constructor-super 要求在构造函数中调用 super()
no-this-before-super 禁止在构造函数中,在调用 super() 之前使用 thissuper

弃用规则

平衡提升工具和改变可能带来的挫败感是一个艰难的任务。影响我们用户的一个关键方面就是弃用规则。

ESLint 团队尽可能小心的进行提交升级。到最后,团队同意在将来按照下面的方针弃用规则。这些方针的目的是在没有破坏现有配置前提下,允许进行改进和修改。

  • 规则将永远不会从 ESLint 中移除。
  • 规则将会按照需要弃用,且在所有文档中标记。
  • 在一个规则被弃用后,团队将不会处理任何相关的工作,这将包含修复 bug、增强功能和更新规则的文档。跟弃用规则相关的提问和提交将不会被接受,并且将关闭。

因为弃用的规则将永远不会被移除,如果那些规则对你适用,你可以一直使用它们。然而,请记住这些弃用的规则将不会被维护。

我们希望通过遵循这些方针,可以继续工作和提升,让 ESLint 变成能够成为的最好的工具,同时在这个过程中尽可能减少对我们用户的干扰。

参考资料