我正在分析一些代码,我正在寻找字符串文字,以检查我是否有任何重复。例如,如果我有
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"]
。
我该怎么做?
答案 0 :(得分:5)
如果你安装ruby_parser or parsetree,你就可以做这样的事情(假设程序文本在text
中):
result = RubyParser.new.parse(text)
result.flatten.to_a.select {|elt| elt.is_a?(String)}
(这显然可以更好,但它应该足以让你开始!)