2014-12-02 78 views
3

我有一个实用程序子程序的大集合,卡在一个巨大的Perl模块myUtil.pm中。我试图弄清楚这堆子程序如何相互依赖。在Perl模块中剖析子模块的依赖关系

我找到了Module::ScanDeps,它在模块中寻找依赖项。有没有类似的工具,它看起来在模块内依赖

我宁愿有一个静态分析,因为我不太确定我有足够的测试用例来覆盖所有的代码路径。

回答

3

可能有一些更新(和基于PPI的),但旧的B ::外部参照这样做。

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 
+1

嗯..'分割故障(核心转储)' - 我没想到我的模块是_that_凌乱:/ – ajwood 2014-12-02 20:48:18

+0

有趣;报告它是一个错误 – ysth 2014-12-02 21:56:59

+0

使用PPI编码自己的东西应该不是那么多工作 – ysth 2014-12-02 21:57:25