【问题标题】:What is the difference between a linter and a validator?linter 和验证器有什么区别?
【发布时间】:2015-12-07 18:40:27
【问题描述】:

我正在整理一些东西,并想将这两组组合起来。事实上,我不知道除了 W3 之外的任何其他验证器 - http://validator.w3.org/

Linters - jslint | jshint | eslint
Validators - w3

这两种工具有什么区别吗?两者都只是静态地查看代码并针对一组语法进行测试是否正确?

【问题讨论】:

  • 我的一般理解是 Linters 比验证器更严格。 JavaScript 是如此松散的语言,以至于很多东西在技术上 是有效的,但可能不是你想要的,或者只是糟糕的风格。 Linter 会查找其中的许多错误,并且可以找到 W3 也会发现的许多语法错误。
  • 简而言之,我认为 linter 是验证器的一个子集。它们只允许验证器允许的子集。
  • 我不会说它们是一个子集。如果有什么我会说它们是超集,因为它们可以检查有效的语法(验证器函数)并检查粗略的语法。
  • 你可以根据你是否将其表述为“他们允许____”或“他们不允许____”来争论任何一种方式。

标签: javascript html validation lint


【解决方案1】:

lint 程序检查可疑或危险代码,并根据样式指南检查代码。 linter 必须能够解析代码,因此它还可以根据语言规范进行验证。因此,在某种程度上,linter 是一个验证器加上额外的东西。

验证程序会验证代码是否符合语言规范。它不关心风格或逻辑。

linter 捕获但验证器未捕获的示例:

  • 除以零(其语法有效,因此它通过了验证器)。
  • 在声明或填充变量之前使用变量(同样,有效语法)。
  • 检测数组索引的越界问题(同样,有效的语法)。
  • 风格问题(同样的事情)
  • if (x = 3) { } 之类的代码在许多语言中都是有效的语法,并且会通过验证器。 linter 会说:“嘿,你在做什么,兄弟?这对我来说看起来不对劲。” (可疑代码示例)

【讨论】:

    【解决方案2】:

    lint 查找语法和其他问题。验证者寻找是否符合特定规范。

    【讨论】:

      【解决方案3】:

      Linter 确保代码的格式和语法正确,以防止错误 - 通常是实时或保存/编译时。

      验证器(在 W3 的情况下)确保标记遵守为特定文档类型定义的规则。

      两者之间存在重叠(因为它们都旨在帮助抢占错误,但 Linter 通常更为详尽。)

      【讨论】:

        猜你喜欢
        • 2013-08-11
        • 1970-01-01
        • 1970-01-01
        • 2016-04-22
        • 2020-09-04
        • 2020-07-16
        • 2015-12-11
        • 2015-07-23
        • 2014-10-12
        相关资源
        最近更新 更多