哪些工具可以确定哪些模块的方法调用Ruby中其他模块的方法?
背景:我正在将808行模块分解为更小的模块,创建了12个子模块。但是,其中一个模块中的一些方法正在调用另一个子模块中的方法。这可能是好的,也可能不是好的,这取决于被调用方法的模块是否是公共功能。
module DisplayStatistics1
def display_statistics_1_foo
calculate_statistics_foo # call a method that's in CalculateStatistics - this is ok
display_statistics_2_bar # call a method that's in DisplayStatistics2 - this is bad
end
# other methods omitted
end
# modules DisplayStatistics2 and CalculateStatistics omitted
class ExampleClass
include DisplayStatistics1
include DisplayStatistics2
include CalculateStatistics
end
理想情况下,分析工具将显示DisplayStatistics1
对DisplayStatistics2
以及对CalculateStatistics
具有依赖性。
更新:也许我不应该这样做——也许我应该把它们分成类。那样的话,我肯定知道什么取决于什么!
虽然我不知道Ruby的静态分析工具,但最接近您想要的是rubyprof。这可以生成多种格式的调用图,包括HTML树,甚至GraphViz框和折线图。