Идентификация программных зависимостей

Если необходимо знать то, что другие функции и пишет сценарий программы, зависит от, используйте один из методов, описанных ниже.

Простое отображение зависимостей от программного файла

Для простого отображения всех программных файлов, на которые ссылается конкретная функция, выполните эти шаги:

  1. Введите clear functions очистить все функции из памяти (см. Примечание ниже).

    Примечание

    clear functions не делает функций clear, заблокированных mlock. Если вы заблокировали функции (который можно проверять использование inmem) разблокируйте их с munlock, и затем повторите шаг 1.

  2. Выполните функцию, которую вы хотите проверять. Обратите внимание на то, что аргументы функции, которые вы принимаете решение использовать на этом шаге, важны, потому что можно получить различные результаты при вызывании той же функции с различными аргументами.

  3. Введите inmem отобразить все программные файлы, которые использовались, когда функция запустилась. Если вы хотите видеть, какие файлы MEX использовались также, задают дополнительный выход:

    [mfiles, mexfiles] = inmem

Подробное отображение зависимостей от программного файла

Для более подробного отображения зависимой функциональной информации используйте matlab.codetools.requiredFilesAndProducts функция. В дополнение к программным файлам, matlab.codetools.requiredFilesAndProducts показывает, от каких продуктов MathWorks® конкретная функция зависит. Если у вас есть функция, myFun, это вызывает к edge функция в Image Processing Toolbox™:

[fList,pList] = matlab.codetools.requiredFilesAndProducts('myFun.m');
fList
fList = 

    'C:\work\myFun.m'

Единственный необходимый программный файл, сам файл функции, myFun.

{pList.Name}'
ans = 

    'MATLAB'
    'Image Processing Toolbox'

Файл, myFun.m, требует и MATLAB® и Image Processing Toolbox.

Зависимости в папке

Отчет Зависимости показывает зависимости среди файлов кода MATLAB в папке. Используйте этот отчет определить:

  • Какие файлы в папке требуются другими файлами в папке

  • Если какие-либо файлы в текущей папке перестанут работать, если вы удалите файл

  • Если какие-либо названные файлы отсутствуют в текущей папке

Отчет не перечисляет:

  • Файлы в toolbox/matlab папка, потому что каждый пользователь MATLAB имеет те файлы.

    Поэтому, если вы используете файл функции, что тени файл встроенной функции, MATLAB исключает оба файла из списка.

  • Файлы называются из анонимных функций.

  • Суперкласс для файла класса.

  • Файлы называются от evalevalcзапущенныйзагрузка, указатели на функцию и коллбэки.

    MATLAB не разрешает эти файлы до времени выполнения, и поэтому Отчет Зависимости не может обнаружить их.

  • Некоторые файлы метода.

    Отчет Зависимости находит конструкторов класса, которых вы вызываете в файле MATLAB. Однако любые методы, которые вы выполняете на полученном объекте, неизвестны отчету. Эти методы могут существовать в classdef файл, как файлы отдельного метода или файлы, принадлежащие суперклассу или суперклассам файла метода.

Чтобы обеспечить значимые результаты, Отчет Зависимости требует следующего:

  • Путь поиска файлов, когда вы запускаете отчет, эквивалентен, когда вы петляете в папке. (Таким образом, текущая папка наверху пути поиска файлов.)

  • Файлы в папке, для которой вы запускаете отчет, не изменяют путь поиска файлов или в противном случае управляют им.

  • Файлы в папке не загружают переменные, или в противном случае создают столкновения имени, которые приводят к различным элементам программы с тем же именем.

Примечание

Не используйте Отчет Зависимости определить, какие файлы кода MATLAB кто-то еще должен петлять. Вместо этого используйте matlab.codetools.requiredFilesAndProducts функция.

Создание отчетов зависимости

  1. Используйте панель Текущей папки, чтобы перейти к папке, содержащей файлы, для которых вы хотите представить Отчет Зависимости.

    Примечание

    Вы не можете запустить отчеты, когда путем является UNC (Универсальное Соглашение о присвоении имен) путь; то есть, путь, который запускается с \\. Вместо этого используйте фактический жесткий диск в своей системе или подключенный сетевой диск.

  2. На панели Текущей папки щелкните, и затем выберите Reports> Dependency Report.

    Отчет Зависимости открывается в веб-браузере MATLAB.

  3. Если вы хотите, выберите одну или несколько опций в рамках отчета, можно следующим образом:

    • Чтобы видеть список всех файлов кода MATLAB (дочерние элементы), вызванные каждым файлом в папке (родительский элемент), выберите Show child functions.

      Отчет указывает, где каждая дочерняя функция находится, например, в заданном тулбоксе. Если отчет указывает, что местоположение дочерней функции неизвестно, это может быть потому что:

      • Дочерняя функция не находится на пути поиска файлов.

      • Дочерняя функция не находится в текущей папке.

      • Файл был перемещен или удален.

    • Чтобы перечислить файлы, которые вызывают каждый файл кода MATLAB, выберите Show parent functions.

      Отчет ограничивает родительское (вызов) функции к функциям в текущей папке.

    • Чтобы включать локальные функции в отчет, выберите Show subfunctions. Отчет перечисляет локальные функции непосредственно после основной функции и подсвечивает их в сером.

  4. Нажмите Run Report on Current Folder.

Чтение и Работа с отчетами зависимости

Следующее изображение показывает Отчет Зависимости. Это указывает на тот chirpy.m вызовы два файла в Signal Processing Toolbox™ и один в Image Processing Toolbox. Это также показывает тот go.m вызовы mobius.m, который находится в текущей папке.

Отчет Зависимости включает в себя следующее:

  • Список файлов MATLAB

    Список файлов в папке, относительно которой вы запустили Отчет Зависимости. Щелкните по ссылке в этом столбце, чтобы открыть файл в Редакторе.

  • Дочерние элементы

    Функция или функции вызваны файлом MATLAB.

    Щелкните по ссылке в этом столбце, чтобы открыть файл MATLAB, перечисленный в той же строке и перейти к первой ссылке на вызванную функцию. Например, предположите, что ваш Отчет Зависимости появляется как показано в предыдущем изображении. Нажатие на \images\images\erode.m открывает chirpy.m и устанавливает курсор в первой линии, это ссылается на erode. Другими словами, это не открывает erode.m.

  • Несколько методов класса

    Поскольку отчет является статическим анализом, он не может определить типы данных во время выполнения и, поэтому, не может идентифицировать конкретные методы класса, требуемые файлом. Если несколько методов класса совпадают с методом, на который ссылаются, Отчет Зависимости вставляет ссылку вопросительного знака рядом с именем файла. Вопросительный знак появляется в следующем изображении.

    Щелкните по ссылке вопросительного знака, чтобы перечислить методы класса с указанным именем, которое может использовать MATLAB. MATLAB перечисляет почти все файлы метода на пути поиска файлов, которые совпадают с заданным файлом метода (в этом случае, freqresp.m). Не будьте заинтересованы, включает ли список методы классов и встроенных функций MATLAB, которые незнакомы вам.

    Не необходимо для вас определить, какой файл MATLAB будет использовать. MATLAB определяет, какой метод использовать в зависимости от объекта, который программа вызывает во время выполнения.