How can I generate a list of function dependencies in MATLAB?

后端 未结 2 1593
隐瞒了意图╮
隐瞒了意图╮ 2020-11-30 02:42

In order to distribute a function I\'ve written that depends on other functions I\'ve written that have their own dependencies and so on without distributing every m-file I

相关标签:
2条回答
  • 2020-11-30 02:57

    For MATLAB 2015a and later you should preferably look at matlab.codetools.requiredFilesAndProducts

    or doc matlab.codetools.requiredFilesAndProducts

    because depfun is marked to be removed in a future release.

    0 讨论(0)
  • 2020-11-30 03:15

    For newer releases of Matlab (eg 2007 or 2008) you could use the built in functions:

    1. mlint
    2. dependency report and
    3. coverage report

    Another option is to use Matlab's profiler. The command is profile, it can also be used to track dependencies. To use profile, you could do

    >> profile on   % turn profiling on
    >> foo;         % entry point to your matlab function or script
    >> profile off  % turn profiling off
    >> profview     % view the report
    

    If profiler is not available, then perhaps the following two functions are (for pre-MATLAB 2015a):

    1. depfun
    2. depdir

    For example,

    >> deps = depfun('foo');
    

    gives a structure, deps, that contains all the dependencies of foo.m.

    From answers 2, and 3, newer versions of MATLAB (post 2015a) use matlab.codetools.requiredFilesAndProducts instead.

    See answers

    EDIT:

    Caveats thanks to @Mike Katz comments

    • Remember that the Profiler will only show you files that were actually used in those runs, so if you don't go through every branch, you may have additional dependencies. The dependency report is a good tool, but only resolves static dependencies on the path and just for the files in a single directory.

    • Depfun is more reliable but gives you every possible thing it can think of, and still misses LOAD's and EVAL's.

    0 讨论(0)
提交回复
热议问题