在不强制执行特定样式的情况下验证JavaScript代码
Validate JavaScript code without enforcing a specific style
我想验证一些JavaScript代码的语法正确性,但不向用户强制执行特定的编码样式。
我的第一种方法是使用esprima
附带的esvalidate
。这部分完成了任务,因为它检测到意外的令牌,例如:
constx foo = {};
它所做的而不是检测到的是从未声明的变量的使用,例如:
const foox = {
bar() {}
};
foo.bar();
像eslint
这样的工具可以检测到这一点,但很难以一种不对用户强制执行特定样式的方式来配置ESLint(我并不是说这不可能,我只是说这是一项巨大的工作,因为你需要检查每一条规则并决定是启用还是禁用它,而有数百条规则,这是…是的,嗯,这是一个巨大的工作)。
我还有什么其他选择?如果没有这些工作,我如何验证代码?
顺便问一下:我想在这里验证什么?这不是语法(我的意思是,从语法上讲,一切都很好,只是没有意义),但也不是语义。这种支票的正确术语是什么?
几年前,Linters只是在那里检查代码的样式。如今他们做得越来越多。甚至是静态分析。ESLint是一个非常强大的工具,IMHO正是您想要的。
你可能认为初始配置可能很昂贵,但正如ESLint页面所说:
默认情况下不启用任何规则。
此外,在整个时间内拥有一致的编码风格是非常有益的,如果你和你的团队找到了一个共同的基线,你可以在项目之间共享.eslintrc
。
启用no-undef
规则并为您的IDE使用插件,比如其中一个应该可以解决您的问题->开发时的静态代码分析:)
为了回答您的最后一个问题,我认为您想要的是静态分析。一般来说,JavaScript会更难做到这一点,因为它具有动态特性,缺少类型,而且工具相对缺乏成熟度。例如,几十年来一直在为C编写静态分析器,这项工作不会立即转移到其他语言中。
像jshint这样的东西可能是你想要的,因为它的目标是帮助开发人员"编写复杂的程序,而不用担心拼写错误和语言问题"。
希望这能有所帮助!
ESLint推荐集:推荐的规则旁边有复选标记,不包括任何风格规则。您可以使用它来验证脚本的有效性,而无需强制执行任何特定的样式。至少这是一个很好的起点,你可以随时关闭你不喜欢的规则。
- 使用php脚本验证访问者的年龄,并在不刷新的情况下根据结果加载iframe
- 如何在不使用mvc 4中的模型的情况下进行客户端验证
- 在不使用任何http、https或ftp的情况下验证URL
- 我需要在不使用JavaScript的情况下验证我的表单
- 在不提交的情况下验证表单
- 在没有插件的情况下验证验证码?-- 跨服务器开机自检
- 如何在没有javascript的情况下验证html文件
- 在没有
- 在不更改值的情况下验证表单时,网格堆栈项
- 如何在没有循环的情况下验证哈希表中包含的值
- 有没有一个明确的解决方案可以使用jQuery在没有插件的情况下验证URL
- 在不使用表单的情况下验证动态创建的输入
- 我可以在不使用JS和HTML5的情况下验证HTML输入吗?
- 是否可以在没有提交按钮的情况下验证表单
- 在不强制执行特定样式的情况下验证JavaScript代码
- 在这种情况下验证字段
- 如何在不单击按钮的情况下验证电子邮件
- 如何在不使用插件的情况下验证 jquery 中的动态创建元素
- 在不重新加载页面的情况下验证表单
- 在不使用php或nodeJs的情况下验证用户