NeoVim/ALE/RuboCop/Syntastic是否可以捕获此Ruby错误?
我是Ruby的新手,正在尝试NeoVim/ALE,我也是新手。我来自Perl,使用syntastic插件,我试图找出如何最好地设置NeoVim/ALE/RuboCop。我以前从来没有用过熟食机 我的困惑源于这段代码:NeoVim/ALE/RuboCop/Syntastic是否可以捕获此Ruby错误?,ruby,neovim,rubocop,linter,Ruby,Neovim,Rubocop,Linter,我是Ruby的新手,正在尝试NeoVim/ALE,我也是新手。我来自Perl,使用syntastic插件,我试图找出如何最好地设置NeoVim/ALE/RuboCop。我以前从来没有用过熟食机 我的困惑源于这段代码: #!/usr/bin/env ruby r = Array() # Improper array initialization, should be Array.new() puts r 跑步时,我会得到: Traceback (most recent call last):
#!/usr/bin/env ruby
r = Array() # Improper array initialization, should be Array.new()
puts r
跑步时,我会得到:
Traceback (most recent call last):
1: from /Users/me/ruby/workshop/dink.rb:3:in `<main>'
/Users/me/ruby/workshop/dink.rb:3:in `Array': wrong number of arguments (given
0, expected 1) (ArgumentError)
回溯(最近一次呼叫最后一次):
1:from/Users/me/ruby/workshop/dink.rb:3:in`'
/Users/me/ruby/workshop/dink.rb:3:'Array'中:参数的数量错误(给定)
0,应为1)(ArgumentError)
RuboCop没有捕捉到这个错误。我打开了syntastic,它也没有捕捉到错误。我假设是因为这是一个运行时错误,而不是像我想象的那样的编译时错误。在脚本上运行ruby-c
也不会产生错误。但也许我错了,没有正确使用语法检查工具。是否有人可以确认这确实是一个运行时错误,并且在执行脚本之前无法捕获
我还有第二个问题:我需要syntastic和Ruby吗?它还有什么比RuboCop做不到的吗
谢谢。这两个工具都是正确的,因为在
内核中定义了方法
这意味着这不是语法,而是运行时错误,因为该方法至少需要一个参数
从:
数组(arg)→ 数组
以数组的形式返回arg
首先尝试在arg
上调用至_-ary
,然后尝试调用至_-a
。如果arg
不响应to_-ary
或to_-a
,则返回长度为1的数组,其中包含arg
这两种工具都是正确的,因为在内核中定义了方法
这意味着这不是语法,而是运行时错误,因为该方法至少需要一个参数
从:
数组(arg)→ 数组
以数组的形式返回arg
首先尝试在arg
上调用至_-ary
,然后尝试调用至_-a
。如果arg
不响应to_-ary
或to_-a
,则返回长度为1的数组,其中包含arg
(虽然如果数组方法不存在,没有工具会有不同的行为——它仍然可能存在)我需要syntastic吗?它做了RuboCop没有做的事情吗?你所说的syntastic是什么意思?你用的是gem吗?是vim插件做语法检查。我刚刚发现这条评论可能会给我带来一些启示:“在使用托管运行时的语言(如ruby)时,如果没有同样的编译时检查,那么好的linter更为重要。”似乎用ruby捕获编译时错误更为困难。对于Perl,很明显哪些错误是编译时的,哪些是运行时的。@StevieD:如果您对检查语法感兴趣,那么是的,您将需要两者。因为Rubocop主要不是一个检查语法的工具,而是一个确保代码遵循定义的编码约定或团队一致同意的代码风格指南的工具。(虽然如果数组方法不存在,没有工具会有不同的行为——它仍然可能存在)我需要syntastic吗?它做了RuboCop没有做的事情吗?你所说的syntastic是什么意思?你用的是gem吗?是vim插件做语法检查。我刚刚发现这条评论可能会给我带来一些启示:“在使用托管运行时的语言(如ruby)时,如果没有同样的编译时检查,那么好的linter更为重要。”似乎用ruby捕获编译时错误更为困难。对于Perl,很明显哪些错误是编译时的,哪些是运行时的。@StevieD:如果您对检查语法感兴趣,那么是的,您将需要两者。因为Rubocop主要不是一个检查语法的工具,而是一个确保某些代码遵循定义的编码约定或团队商定的代码风格指南的工具。