一文了解Lint

2023-10-30 19:10:59 浏览数 (1)

昨日本该更新文章,是围绕前后端模块的(因为前两天是按计划写linux以及网络模块)。但昨日实在没想出要写什么文章, 心态处在一个尴尬的境地,简单的知识点觉得没必要搬运,但是深入的东西不是花个一天半天就能写的出来,况且现在也有不少朋友关注我,写文章得认真对待,左思右想干脆就没写了。

今天转念一想,还是结合自己的项目,遇到什么写什么,不要觉得简单就不写,能把简单的东西写好也算进步(自我安慰中)。有深度有价值的文章还需要不断地沉淀自己才能达到,还是要沉下心。大家是否有同感呢,欢迎交流。

### lint背景

lint 是源代码静态分析工具的统称。它通过分析源代码本身的错误、不规范之处,在不运行代码的情况下检测出潜在问题。

lint 工具主要有以下作用:

1. 检查语法错误、拼写错误、不规范用法等,提高代码质量和健壮性。

2. 统一代码风格和规范,提高代码可读性。

3. 检测安全漏洞、潜在 bug 等,减少未来问题。

4. 提供可靠的自动化代码检查,辅助代码审查。

lint 最初是(贝尔实验室1979年发布[1] )Unix 的一个实用程序,在C语言环境中开发的,用于分析 C 语言源代码,检查可能导致程序运行错误或不规范的构造。

例如由Gimpel Software公司开发维护的PC-lint:https://pclintplus.com/,用来检查代码是否遵循 MISRA C(一套 C 语言代码规范)。

后来,lint 这个概念演变为更广义的源代码分析工具,用于检查各种语言和格式的代码规范、错误和潜在问题。已经扩展到了其他编程语言,如Java、JavaScript、Python等。

### 理念

lint的理念和目的是使用静态分析提高代码质量与健壮性。

到这应该明白作为程序员我们都应该学习并运用适合自己语言和项目的 lint 工具。

### 好处

具备基本工程素养的同学都会注重编码规范,而代码风格检查(Code Linting,简称 Lint)是保障代码规范一致性的重要手段。[2]

遵循相应的代码规范有以下好处

- 较少 bug 错误率

- 高效的开发效率

- 更高的可读性

### 主流lint工具

1. ESLint:由 JS Foundation 维护,用于 JavaScript,支持 Vue、React 等框架。

代码语言:javascript复制
    官网:
    https://www.eslint.org
    快速开始:
        npm init @eslint/config

2. stylelint:由 stylelint 组织维护,用于 CSS/SCSS 等样式语言

代码语言:javascript复制
官网:
    https://stylelint.io/


    快速开始:
        1. npm init stylelint
        2. npx stylelint "**/*.css"

3. Pylint:由 pylint developers 维护,用于 Python 语言

代码语言:javascript复制
官网:
    https://pylint.readthedocs.io/en/stable/

    快速开始:
        pip install pylint
   

4. Go lint:由 Go 团队维护,用于 Go 语言

代码语言:javascript复制
地址:
    https://github.com/golang/lint
    
    快速开始:
        go get -u golang.org/x/lint/golint
    不过此仓库目前已经停止更新了

和goformat有什么区别:

golint是一个代码检查工具,用于检查Go代码中的语法和风格问题。它可以帮助开发者遵循Go语言的最佳实践,提高代码质量和可读性。

goformat是一个代码格式化工具,用于自动化地格式化Go代码。它可以帮助开发者保持代码的一致性和可读性。

5. Cpplint:由 Google 开发并开源,用于C/C 语言

代码语言:javascript复制
地址:
    https://github.com/cpplint/cpplint
    
    快速开始:
        $ pip install cpplint

6. PHP_CodeSniffer:由 PHP_CodeSniffer 项目维护,用于 PHP

代码语言:javascript复制
地址:
    https://github.com/squizlabs/PHP_CodeSniffer

7. SonarLint:支持多种语言的lint工具,可以检查代码中的质量问题,如安全漏洞、代码重复、代码规范等。

代码语言:javascript复制
官网:
    https://www.sonarlint.org/
    
    #没用过所以不知道怎么快速开始

8. Checkstyle:heckstyle 是最流行的 Java lint 工具,用于检查 Java 代码规范和风格。它可以定制化检查。

代码语言:javascript复制
官网:
    https://checkstyle.sourceforge.io

### 使用

这里以eslint为例:

1.安装eslint

代码语言:javascript复制
npm install eslint --save-dev

2.初始化eslint配置文件

代码语言:javascript复制
./node_modules/.bin/eslint --init

3.配置eslint

在项目根目录下创建.eslintrc.js文件,添加以下内容:

代码语言:javascript复制
module.exports = {
  root: true,
  env: {
    node: true,
  },
  extends: [
    'plugin:vue/essential',
    'eslint:recommended',
  ],
  parserOptions: {
    parser: 'babel-eslint',
  },
  rules: {
    'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
    'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
  },
};

4.在项目中使用eslint

在项目根目录下创建.eslintignore文件,添加以下内容:

代码语言:javascript复制
node_modules/
dist/
Dockerfile
...

在package.json文件中添加以下内容:

代码语言:javascript复制
"scripts": {
  "lint": "eslint src"
},

运行以下命令:

代码语言:javascript复制
npm run lint

即可使用eslint检查项目中的代码。

也可以,前提是全局安装了eslint

代码语言:javascript复制
eslint yourfile.js

临时运行:

代码语言:javascript复制
npx eslint yourfile.js

因为我的ts是最新版本,有如下报错,看样子还得回退ts版本:

代码语言:javascript复制
WARNING: You are currently running a version of TypeScript which is not officially supported by @typescript-eslint/typescript-estree.


You may find that it works just fine, or you may not.


SUPPORTED TYPESCRIPT VERSIONS: >=3.3.1 <5.1.0


YOUR TYPESCRIPT VERSION: 5.1.3


Please only submit bug reports when using the officially supported version.

---

参考:

[1]: https://zh.wikipedia.org/wiki/Lint

[2]: https://doc.vvbin.cn/dep/lint.html

0 人点赞