如何检测Ruby中哪些模块依赖于哪些模块



哪些工具可以确定哪些模块的方法调用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

理想情况下,分析工具将显示DisplayStatistics1DisplayStatistics2以及对CalculateStatistics具有依赖性。

更新:也许我不应该这样做——也许我应该把它们分成类。那样的话,我肯定知道什么取决于什么!

虽然我不知道Ruby的静态分析工具,但最接近您想要的是rubyprof。这可以生成多种格式的调用图,包括HTML树,甚至GraphViz框和折线图。

最新更新