0

我想验证一些 JavaScript 代码的语法正确性,但不对用户强制执行特定的编码样式。

我的第一种方法是esvalidate使用esprima. 这部分完成了工作,因为它检测到意外的令牌,例如:

constx foo = {};

没有检测到的是从未声明过的变量的使用,例如:

const foox = {
  bar() {}
};

foo.bar();

诸如此类的工具eslint会检测到这一点,但是很难以不对用户强制执行特定样式的方式配置 ESLint(我并不是说不可能,我只是说这是一项巨大的工作,因为您需要检查每条规则并决定是启用还是禁用它,并且有数百条规则,这是……是的,嗯,大量的工作)。

我还有什么其他选择?如果没有这种努力,我如何验证代码?

顺便说一句:我想在这里验证什么?这不是语法(我的意思是,从语法上讲,一切都很好,只是没有意义),但也不是语义。这种检查的正确术语是什么?

4

3 回答 3

1

几年前,Linter 只是用来检查代码的样式。如今,他们做得更多,更多。甚至静态分析。ESLint 是如此强大的工具,恕我直言,它正是您正在寻找的

你可能认为初始配置可能成本很高,但正如 ESLint 页面所说:

默认情况下不启用任何规则。

此外,在你的整个时间里拥有一致的编码风格是非常有益的,如果你和你的团队找到了一个共同的基线,你可以.eslintrc在项目之间共享。

启用no-undef规则并为您的 IDE 使用插件,例如其中一个应该可以解决您的问题 -> 在开发时进行静态代码分析 :)

于 2016-07-31T15:35:56.577 回答
0

要回答您的最后一个问题,我认为您想要的是静态分析。由于 JavaScript 的动态特性和缺乏类型,以及相对缺乏工具成熟度,这对于 JavaScript 来说会更难。例如,为 C 编写静态分析器已经花费了数十年的时间,而且这项工作不会立即转移到其他语言中。

jshint这样的东西可能是你想要的,因为它的目标是帮助开发人员“编写复杂的程序而不用担心拼写错误和语言陷阱”。

希望这可以帮助!

于 2016-07-31T06:37:55.530 回答
0

ESLint 推荐集:推荐规则旁边有复选标记,不包含任何风格规则。您可以使用它来验证脚本的有效性,而无需强制执行任何特定样式。至少这是一个很好的起点,你可以随时关闭你不喜欢的规则。

于 2016-08-04T14:38:26.617 回答