首页 > 解决方案 > 使用 Ruby 验证 Ruby 语法

问题描述

我需要使用 Ruby 以编程方式验证给定字符串是否是有效的 Ruby 语法。我想我可以做到这一点的一种方法是在 EVAL 语句中运行代码,并以这种方式检测语法错误。

有什么更合适、更安全的方法可以做到这一点?

标签: rubyvalidationsyntax

解决方案


让代码字符串为code. 标准方法是执行以下操作:

begin
  RubyVM::InstructionSequence.compile(code)
  nil
rescue Exception => e
  ... # Put code here to return `e` itself, print its message, or whatever you like
end

如果引发错误并被救出,该错误将显示语法错误。如果不是(并且nil被返回),那么code是语法上有效的 Ruby 代码(不保证它没有其他类型的错误)。

说这样做很危险等的评论似乎没有意义。


推荐阅读