Идентифицируйте Программные зависимости

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

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

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

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

    Примечание

    clear functions не очищает функции, заблокированные 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 исключает оба файла из списка.

  • Файлы, вызываемые из анонимных функций.

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

  • Файлы, вызываемые из eval, evalc, run, load, указатели на функцию и коллбэки.

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

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

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

Для предоставления значимых результатов в отчете о зависимостях требуется следующее:

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

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

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

Примечание

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

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

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

    Примечание

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

  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 определяет, какой метод использовать, в зависимости от объекта, который вызывается программой во время выполнения.