代码校验之eslint

官方地址:http://eslint.org/

ESLint是一个开源的JavaScript校验插件,由Nicholas C. Zakas 创建于2013六月初。eslint代码校验是一种静态的代码分析,通常用来校验语法的或代码书写风格,但不指定风格。校验规则适用大多数编程语言和编译器,有时也把规则加于到编译过程。

    JavaScript是一种动态的弱类型的语言,编写时尤其容易出现语法错误。因为不能像编译语言那样有编译的过程(编译过程有词法、语法分析), 代码通常需要执行才能发现语法或其他错误。静态分析工具如ESLint允许开发者不执行代码也能发现问题。

    ESLint被设计成允许开发人员创建自己的校验的规则。ESLint的规则是可配置的。默认的规则也可以像插件的一样编写。它们都可以遵循相同的模式,无论规则本身,还是其校验的代码。ESLint已经内置基本的规则,使它可以立即生效,当然你也可以动态地配置这些规则。

 

EsLint提供以下支持(包括不限于):

1.ES6,ES5

2.JSX

3.Style检查

4.自定义错误和提示

EsLint提供以下几种校验(包括但不限于):

1.语法错误校验

2.编写风格(变量命名规则、符号使用、缩进等)

3.未被使用的参数提醒、未运行到的代码块

 

ESlint 可以用于nodejs编译/运行时的校验,也可以作为插件的形式用于编辑器

例如:vs code ,可以在扩展里面下载eslint的插件,其它编辑器请自行度娘。

 

 

ESLint用Node.js通过NPM提供快速的运行环境,安装方便。

基本的命令如下:

$ npm install eslint --save-dev   // 安装-并保存

 

$ ./node_modules/.bin/eslint –init // 初始化

 

$ eslint yourfile.js   // 校验代码

 

当你运行初始化命eslint--init令后(注意,要在你的项目目录下),你的项目根目录有就生成.eslintrc 文件,这个文件就是校验规则文件,例如:

{
   
    "rules":{
   
        "semi":["error","always"],
        "quotes":["error","double"]
    }
}
  • "off" or 0 – 关闭规则
  • "warn" or 1 – 警告模式,不影响现存代码运行便于
  • "error" or 2 – 错误模式,即严格模式不符合规则则报错

 

你也可以使用推荐模式 

"extends": "eslint:recommended"

 

当你有些目录不想校验什么办?可以使用列外规则文件.eslintignore,里面直接写入你文件的相对路径即可

src/assets/**/*.js

src/config/**/*.js

src/components/calendarPhone.vue

 

当然你也可以在package.json文件里添加eslintConfig字段,EsLint都会自动读取验证。(具体规则可查看package.json的配置)

 

.eslintrc 格式说明

{

// 环境定义了预定义的全局变量。

"env": {

//环境定义了预定义的全局变量。更多在官网查看

"browser":true,

"node":true,

"commonjs":true,

"amd":true,

"es6":true,

"mocha":true

 },

// JavaScript 语言选项

"parserOptions": {

// ECMAScript 版本

"ecmaVersion":6,

"sourceType":"script",//module

// 想使用的额外的语言特性:

"ecmaFeatures": {

// 允许在全局作用域下使用 return 语句

"globalReturn":true,

// impliedStric

"impliedStrict":true,

// 启用 JSX

"jsx":true

 }

 },

/**

 * "off" 0 - 关闭规则

 * "warn" 1 - 开启规则,使用警告级别的错误:warn (不会导致程序退出),

 * "error" 2 - 开启规则,使用错误级别的错误:error (当被触发的时候,程序会退出)

 */

"rules": {

 

// 可能的错误 //

 

// 禁止条件表达式中出现赋值操作符

"no-cond-assign":2,

// 禁用 console

"no-console":0,

// 禁止在条件中使用常量表达式

// if (false) {

//doSomethingUnfinished();

// } //cuowu

"no-constant-condition":2,

// 禁止在正则表达式中使用控制字符new RegExp("\x1f")

"no-control-regex":2,

// 数组和对象键值对最后一个逗号, never参数:不能带末尾的逗号, always参数:必须带末尾的逗号,

// always-multiline:多行模式必须带逗号,单行模式不能带逗号

"comma-dangle": [1,"always-multiline"],

// 禁用 debugger

"no-debugger":2,

// 禁止 function 定义中出现重名参数

"no-dupe-args":2,

// 禁止对象字面量中出现重复的 key

"no-dupe-keys":2,

// 禁止重复的 case 标签

"no-duplicate-case":2,

// 禁止空语句块

"no-empty":2,

// 禁止在正则表达式中使用空字符集 (/^abc[]/)

"no-empty-character-class":2,

// 禁止对 catch 子句的参数重新赋值

"no-ex-assign":2,

// 禁止不必要的布尔转换

"no-extra-boolean-cast":2,

// 禁止不必要的括号 //(a * b) + c;//报错

"no-extra-parens":0,

// 禁止不必要的分号

"no-extra-semi":2,

// 禁止对 function 声明重新赋值

"no-func-assign":2,

// 禁止在嵌套的块中出现 function var 声明

"no-inner-declarations": [2,"functions"],

// 禁止 RegExp 构造函数中无效的正则表达式字符串

"no-invalid-regexp":2,

// 禁止在字符串和注释之外不规则的空白

"no-irregular-whitespace":2,

// 禁止在 in 表达式中出现否定的左操作数

"no-negated-in-lhs":2,

// 禁止把全局对象 (Math JSON) 作为函数调用错误:var math = Math();

"no-obj-calls":2,

// 禁止直接使用 Object.prototypes 的内置属性

"no-prototype-builtins":0,

// 禁止正则表达式字面量中出现多个空格

"no-regex-spaces":2,

// 禁用稀疏数组

"no-sparse-arrays":2,

// 禁止出现令人困惑的多行表达式

"no-unexpected-multiline":2,

// 禁止在returnthrowcontinue break语句之后出现不可达代码

/*

 function foo() {

 return true;

 console.log("done");

 }//错误

 */

"no-unreachable":2,

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值