如何在MATLAB中生成函数依赖项列表?

rmu*_*yay 36 matlab dependencies code-analysis function

为了分发我编写的函数,它依赖于我编写的其他函数,它们有自己的依赖关系等等而不分发我写过的每个m文件,我需要弄清楚依赖项的完整列表是什么对于给定的m文件.是否有内置/可免费下载的方式来做到这一点?

具体来说,我对MATLAB 7.4.0(R2007a)的解决方案感兴趣,但如果在旧版本中有不同的方法,请务必在此处添加.

Azi*_*zim 35

对于较新版本的Matlab(例如2007或2008),您可以使用内置函数:

  1. mlint
  2. 依赖报告和
  3. 报道报道

另一种选择是使用Matlab的分析器.该命令是profile,它也可以用于跟踪依赖项.要使用配置文件,您可以这样做

>> profile on   % turn profiling on
>> foo;         % entry point to your matlab function or script
>> profile off  % turn profiling off
>> profview     % view the report
Run Code Online (Sandbox Code Playgroud)

如果探测器不可用,那么可能还有以下两个函数(对于pre-MATLAB 2015a):

  1. depfun
  2. depdir

例如,

>> deps = depfun('foo');
Run Code Online (Sandbox Code Playgroud)

给出一个结构,deps,它包含foo.m的所有依赖项.

从答案23开始,使用较新版本的MATLAB(2015a后)matlab.codetools.requiredFilesAndProducts.

看到答案

编辑:

致谢@Mike Katz的评论

  • 请记住,Profiler只会显示实际在这些运行中使用的文件,因此如果您没有遍历每个分支,则可能还有其他依赖项.依赖关系报告是一个很好的工具,但只解析路径上的静态依赖关系,只解析单个目录中的文件.

  • Depfun更可靠,但为您提供了它可以想到的所有可能的东西,并且仍然错过了LOAD和EVAL.

  • Depfun更可靠,但为您提供了它可以想到的所有可能的东西,并且仍然错过了LOAD和EVAL. (3认同)
  • 请记住,Profiler只会显示实际在这些运行中使用的文件,因此如果您没有遍历每个分支,则可能还有其他依赖项.依赖关系repot是一个很好的工具,但只解析路径上的静态依赖关系,只解析单个目录中的文件. (2认同)
  • 尝试exportToZip(链接:http://www.mathworks.com/matlabcentral/fileexchange/10702).它是2009年9月18日当周的选择(链接:http://blogs.mathworks.com/pick/2009/09/18/easier-and-less-error-prone-creation-of-zip-files/ ) (2认同)

Jon*_*ein 6

对于MATLAB 2015a以后,您最好查看 matlab.codetools.requiredFilesAndProducts

要么 doc matlab.codetools.requiredFilesAndProducts

因为depfun在将来的版本中标记为删除.