什么vscode ruby扩展可以检测未声明的变量?

什么vscode ruby扩展可以检测未声明的变量?,ruby,visual-studio-code,Ruby,Visual Studio Code,我已经尝试了许多扩展/配置,但无法让vscode在变量未定义时进行检测。例如,类似这样的简单内容不显示警报: # b and c are not defined anywhere a = b + c 我希望看到linter或其他扩展提醒我b和c没有声明。相反,我根本看不到任何突出显示或通知 我已经安装了以下扩展:Ruby、Solargraph、Ruby linter、Ruby robocop、VSCode Ruby。我为linter、solargraph和intellisense添加了一些自

我已经尝试了许多扩展/配置,但无法让vscode在变量未定义时进行检测。例如,类似这样的简单内容不显示警报:

# b and c are not defined anywhere
a = b + c 
我希望看到linter或其他扩展提醒我b和c没有声明。相反,我根本看不到任何突出显示或通知

我已经安装了以下扩展:Ruby、Solargraph、Ruby linter、Ruby robocop、VSCode Ruby。我为linter、solargraph和intellisense添加了一些自定义配置:

"ruby.linter.run": "onSave",
"solargraph.definitions": false,
"ruby.intellisense": "rubyLocate"

但仍然没有任何效果。非常感谢您的帮助

Solargraph有一个实验类型检查器,您可以在
.Solargraph.yml
文件中激活该检查器:

reporters:
- typecheck:strict
请记住,您可能会得到误报,因为1)它仍处于测试阶段,2)正如其他人所提到的,动态方法和其他运行时魔法通常对静态分析是不可见的


更多信息:

在Ruby中,这不是一件容易的事情
b
c
可能是方法调用,并且这些方法几乎可以在任何时间的任何地方定义,因此在您尝试使用它们之前,您不知道它们是否已定义。您可能会感兴趣。@muistooshort这很有意义,谢谢@CarySwoveland我熟悉检查是否定义了变量。无论如何,谢谢。正如mu所说,检查标识符是否在某个执行点定义是很容易的。不允许在不运行程序的情况下检查是否定义了标识符(即静态代码分析)。考虑这个有效的代码:<代码> %i(b c).EkthyOffi索引{v v,i i定义EngSuntLon方法(V){I+1 }};a=b+c;放置一个VSCode如何知道?