如何在Ruby源代码文件中获取所有字符串文字?

时间:2011-12-08 23:15:12

标签: ruby code-analysis

我正在分析一些代码,我正在寻找字符串文字,以检查我是否有任何重复。例如,如果我有

def test_foo
  input_filename = "foo.txt"
  # ...
end

def test_bar
  input_filename = "bar.txt" # Fine
  # ...
end

def test_baz
  # Bad! Refactor it to a constant that's shared by test_foo and test_baz
  input_filename = "foo.txt" 
  # ...
end

我希望分析程序告诉我源代码中存在["foo.txt", "bar.txt", "foo.txt"]

我该怎么做?

1 个答案:

答案 0 :(得分:5)

如果你安装ruby_parser or parsetree,你就可以做这样的事情(假设程序文本在text中):

result = RubyParser.new.parse(text)
result.flatten.to_a.select {|elt| elt.is_a?(String)}

(这显然可以更好,但它应该足以让你开始!)