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

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

具体来说,我对MATLAB 7.4.0(R2007a)的解决scheme很感兴趣,但如果在老版本中有不同的方法,请务必在这里添加它们。

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

  1. mlint
  2. 依赖报告和
  3. 覆盖率报告

另一个select是使用Matlab的分析器。 该命令是configuration文件,它也可以用来跟踪依赖关系。 要使用configuration文件,你可以这样做

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

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

  1. depfun
  2. depdir

例如,

 >> deps = depfun('foo'); 

给出了一个包含foo.m的所有依赖关系的结构。

从答案2和3 ,更新版本的MATLAB(后2015a)使用matlab.codetools.requiredFilesAndProducts代替。

查看答案

编辑:

注意@Mike Katz的评论

  • 请记住,事件探查器只会显示在这些运行中实际使用的文件,因此如果您不遍历每个分支,则可能有其他依赖关系。 依赖关系报告是一个很好的工具,但是只能解决path上的静态依赖关系,只能解决单个目录中的文件。

  • Depfun更可靠,但是它给你所想到的一切可能的东西,并且仍然会错过LOAD和EVAL。

对于MATLAB 2015a和更高版本,您应该优先查看matlab.codetools.requiredFilesAndProducts

或者doc matlab.codetools.requiredFilesAndProducts

因为depfun被标记为在未来版本中被删除。

更新:对于MATLAB 2015b,depfun和depdir已被删除,所以您必须使用matlab.codetools.requiredFilesAndProducts()。