分析Perl模块中的子模块依赖性

时间:2014-12-02 19:52:04

标签: perl profiling

我有一大堆实用程序子程序卡在一个巨大的myUtil.pm Perl模块中。我试图了解一堆子程序如何相互依赖。

我找到Module::ScanDeps,它在模块中查找依赖项。是否有一个类似的工具可以查看模块中的依赖项?

我更愿意进行静态分析,因为我不太确信我有足够的测试用例来覆盖所有代码路径。

1 个答案:

答案 0 :(得分:3)

可能有更新的(和基于PPI的),但较旧的B :: Xref会这样做。

Foo.pm:

package Foo;
use 5.014;
use warnings;
sub foo { bar() }
sub bar { $_[0]-- and bar() }
sub baz { foo(); bar () }
1;

perl -MO=Xref -e'use Foo'

...
File Foo.pm
  Subroutine (definitions)
    Package Foo
      &bar              s4
      &baz              s6
      &foo              s4
  Subroutine Foo::bar
    Package Foo
      &bar              &5
  Subroutine Foo::baz
    Package Foo
      &bar              &6
      &foo              &6
  Subroutine Foo::foo
    Package Foo
      &bar              &4