ruby - Rubocop 如何静态检查 ruby 语法错误
问题描述
Rubocop如何静态检查 ruby 语法错误?由于 Ruby 是一种动态语言,如果您不使用 Rubocop,那么您是否只会在运行时收到语法错误通知?即当你运行你的程序时它会因为语法错误而崩溃?
解决方案
你甚至不需要像 Rubocop 这样的工具。Ruby 本身能够在不执行代码的情况下检查语法:
$ ruby --help
Usage: ruby [switches] [--] [programfile] [arguments]
[...]
-c check syntax only
[...]
让我们检查它是否发现语法错误:
$ ruby -c -e "def; end"
-e:1: syntax error, unexpected ';'
Ruby 首先读取并解析源代码,然后在后面的步骤中执行。如果由于代码没有任何意义而导致解析的第一步已经失败,那么无论如何执行都是不可能的。发现语法错误的不是执行,而是代码的解析。
但是当然有 Ruby 找不到的错误,但其他编程语言会在编译代码时检测到。例如TypeError
:
$ ruby -c -e "[1,2][:bar]"
Syntax OK
语法很好,但这段代码真的有效吗?
$ ruby -e "[1,2][:bar]"
Traceback (most recent call last):
-e:1:in `<main>': no implicit conversion of Symbol into Integer (TypeError)
推荐阅读
- fortran - 使用 fortran 从 .dat 文件中提取值,使用行和特定变量
- android - 以编程方式更改 PreferenceActivity 中的所有视图文本颜色
- django - 在视图中覆盖 settings.py 电子邮件设置
- python - 为什么控制台在 django 中显示模板未定义错误
- java - 如何对 SSO 进行身份验证并重定向到外部应用程序?
- java - 在 String 方法中返回整数值仍然没有得到任何错误
- android - Unity UI 在带有凹槽的设备上损坏和更改
- javascript - HTTP触发后“功能启动”之前的Google Cloud Function随机延迟
- javascript - 匹配大量不同的句子(使用正则表达式模式解析)
- node.js - Docker node alpine node-sass 模块构建失败,甚至运行了`npm rebuild node-sass`