linter 的概念并不是 JavaScript 独有的,只是 JavaScript 这样的动态语言(dynamically-typed languages)更加需要 linter。

What Is a Linter ?

linter 是能够帮助我们改进代码的工具,它通过分析代码来发现问题。术语 lint 来自一个最初称为“lint”的分析 C 源代码的工具,当时的 linter 主要为编译器启用优化。linter 对于解释型语言更有价值,因为在开发期间没有编译器来检测错误(linters are way more valuable for interpreted languages since there’s no compiler to detect errors during development time)。

Advantages of Linting

  • Fewer errors in production
  • Readable, maintainable, and more consistent code
  • Fewer discussions about code style and aesthetic choices during code reviews
  • Objective measurement of code quality
  • More secure and performant code
  • Education about code quality reaches more developers

    Types of Checks Linters Provide

    正如您刚刚读到的,最初的 lint 工具分析代码以优化编译器,但随着时间的推移,发布了更高级和更完整的工具。 如今,我们有无数种不同的 linter,它们提供了多种类型的检查:

    Syntax Errors

    当涉及到 JavaScript 和其他解释型语言时,linter 可以提供的最基本和更重要的检查类型是语法错误验证。开发人员甚至不应该在没有通过语法验证的情况下将代码推送到主线。
    实现这一点的一种方法是使用 pre-cpmmit 钩子,当 linter 验证表明代码存在问题时,它会阻止用户推送他们的代码。

    Code Standards Adherence

    linter 提供的另一种重要检查类型是遵守编码标准。 有些人可能会认为这是纯粹的审美问题,但他们错了。 拥有单一一致的编码风格有利于减少阅读、理解和维护代码的认知负担。 具有一致代码风格的代码库将更容易理解,并且使用它的开发人员不太可能引入错误。
    这就是为什么有专门用于验证代码库是否符合代码样式的 linter。 有些工具是固执己见的,即它们带有一组无法更改的预定义规则和约定。 另一方面,有些工具可以高度配置,允许用户根据自己喜欢的编码风格调整工具。

    Potential Problems (a.k.a. Code Smells)

    代码异味是代码可能有问题的迹象,例如,函数长度,嵌套深度等。 拥有一个自动检测这些迹象的工具,可以在必要时进一步调查它们。

    Security Checks

    这是 linter 可以提供帮助的另一个领域,有一些工具可以提供重要的安全验证。

《What Is a Linter? Here’s a Definition and Quick-Start Guide》

JavaScript:
2021/06/08《Automate formatting and fixing JavaScript code with Prettier and ESLint》

CSS:
2021/08/17《Level up your CSS linting using Stylelint》
2016/04/20《Lint your CSS with stylelint》— David Clark

代码提交前代码风格控制,执行代码检测:
使用 Husky 在 git 各个生命周期执行代码检测;
使用 Lint-staged lint git staged 文件;