Как мне сгенерировать список зависимостей функций в MATLAB?

35

Чтобы распространить написанную мной функцию, которая зависит от других написанных мной функций, которые имеют свои собственные зависимости и т.д., не распространяя каждый m файл, который я когда-либо писал, мне нужно выяснить, что собой представляет полный список зависимостей для данного m файла. Есть ли встроенный/свободно загружаемый способ сделать это?

В частности, меня интересуют решения для MATLAB 7.4.0 (R2007a), но если есть другой способ сделать это в более старых версиях, обязательно добавьте их здесь.

Теги:
function
dependencies
code-analysis

3 ответа

36
Лучший ответ

Для более новых версий Matlab (например, 2007 или 2008) вы можете использовать встроенные функции:

  • mlint
  • отчет о зависимости и
  • отчет о покрытии

Другой вариант - использовать профилировщик Matlab. Команда является профилем, ее также можно использовать для отслеживания зависимостей. Чтобы использовать профиль, вы можете сделать

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

Если профилировщик недоступен, возможно, следующие две функции (для pre-MATLAB 2015a):

  • depfun
  • depdir

Например,

>> deps = depfun('foo');

дает структуру, deps, содержащую все зависимости foo.m.

Из ответов 2 и 3 новые версии MATLAB (post 2015a) Вместо этого используйте matlab.codetools.requiredFilesAndProducts.

См. ответы

EDIT:

Предостережения благодаря комментариям @Mike Katz

  • Помните, что Profiler будет покажите файлы, которые были фактически использованы в этих прогонах, так что если вы не пойдете через каждую ветвь, вы можете иметь дополнительные зависимости. отчет о зависимости - хороший инструмент, но разрешает только статические зависимости путь и только файлы в единый каталог.

  • Depfun более надежный, но дает вам все возможное, о чем он может думать, и все еще пропускает LOAD и EVAL's.

  • 2
    Помните, что Profiler будет показывать только те файлы, которые фактически использовались в этих прогонах, поэтому, если вы не пройдете через каждую ветку, у вас могут быть дополнительные зависимости. Отчет о зависимостях - хороший инструмент, но он разрешает только статические зависимости на пути и только для файлов в одном каталоге.
  • 3
    Depfun является более надежным, но дает вам все возможные вещи, о которых он может думать, и все же пропускает LOAD и EVAL.
Показать ещё 3 комментария
6

Для MATLAB 2015a и более поздних версий лучше посмотреть matlab.codetools.requiredFilesAndProducts

или doc matlab.codetools.requiredFilesAndProducts

потому что depfun помечен для удаления в будущей версии.

1

Обновление: для MATLAB 2015b, depfun и depdir были удалены, поэтому вы должны использовать matlab.codetools.requiredFilesAndProducts().

Ещё вопросы

Сообщество Overcoder
Наверх
Меню