exponenta event banner

Объем и ограничения анализатора зависимостей

Объем анализа

Анализатор зависимостей определяет необходимые файлы и надстройки для проекта или модели. Анализ охватывает широкий спектр зависимостей, включая ссылки на модели, ссылки на подсистемы, связанные библиотеки, MATLAB ® иC/C++ код, диаграммы Stateflow ®, файлы данных, S-функции и документы по требованиям.

Когда анализатор зависимостей обнаруживает код MATLAB, например, в модели или блоке, или в .m file S-функция, она пытается идентифицировать файлы, на которые ссылается. Дополнительные сведения см. в разделе Ограничения анализа.

Для файлов в корневой папке MATLAB анализатор зависимостей отображает только требуемые продукты. Он не анализирует зависимости.

Анализатор зависимостей определяет зависимости внутри пользовательских дополнений и зависимостей, которые были введены при создании кода или кода MATLAB в параметрах модели. Эти опции отключены по умолчанию, поскольку они могут занимать много времени для больших проектов.

Чтобы указать область анализа, на панели инструментов анализатора зависимостей щелкните Анализ (Analyze) и выберите одну или несколько из следующих опций.

ВыборДефолтОписание
Код C/C + +НаАнализ зависимостей, введенных C/C++ файлы кода.
НадстройкиПрочьАнализ зависимостей внутри надстроек.
Параметры моделиПрочьАнализ зависимостей, введенных кодом MATLAB в параметры блока модели.
Отслеживание сгенерированного кодаПрочьАнализ зависимостей, введенных кодом, созданным из модели.

Ограничения анализа

  • Анализатор зависимостей имеет ограничения, специфичные для анализа кода MATLAB:

    • Анализатор зависимостей идентифицирует входные аргументы функции только в том случае, если они представляют собой буквенные символьные векторы или строки:

      load("mydatafile")
      load mydatafile

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

      str = "mydatafile";
      load(str);
      Это ограничение распространяется на функции, аналогичные load, такие как fopen, xlsread, importdata, dlmread, eval, или imread.

    • Анализатор зависимостей не всегда определяет тип автоматически. В зависимости от способа вызова метода объекта анализатор зависимостей может спутать метод с функцией и сообщить об отсутствующей зависимости.

      В MATLAB метод объекта можно вызвать двумя различными способами. Например, для объекта p, можно вызвать метод addFile используя нотацию функции:

      p = currentProject;
      addFile(p,"myfile");
      или используя точечную нотацию:
      p = currentProject;
      p.addFile("myfile");
      Если тип не объявлен p явно, анализатор зависимостей может спутать вызов метода, который использует нотацию функции с вызовом функции. Отчеты анализатора addFile как отсутствующая зависимость.

      Чтобы обойти это ограничение, используйте точечную нотацию для вызова метода или используйте аргументы для явного объявления типа переменной в функции:

      function myfunction(p)
      
         arguments
            p matlab.project.Project
         end
      
         addFile(p,"myfile");
      end

  • Анализатор зависимостей может не сообщать о некоторых блоках, необходимых для модели.

    Анализатору зависимостей не удается обнаружить блоки, которые не содержат зависимостей от файлов, таких как Fixed-Point Designer™.

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

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

  • Анализатор зависимостей может не сообщать о зависимостях для динамического содержимого в маскированных блоках.

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

  • Анализатор зависимостей не поддерживает функции Simulink ®, вызываемые из функциональных блоков MATLAB.

  • Анализатор зависимостей не поддерживает диаграммы Stateflow, использующие MATLAB в качестве языка действий.

  • Некоторые продукты и дополнения MathWorks ® совместно используют библиотеки кода и Simulink. Анализатор зависимостей может сообщать о зависимостях для всех из них.

    Чтобы выяснить, где используется общий код, на панели «Свойства» в разделе «Продукты» укажите продукт в разделе «Общие функции среди:» и щелкните значок папки поиска.

  • Анализатор зависимостей анализирует код проекта без оценки его содержимого, поэтому:

    • Анализатор зависимостей не добавляет глобальные переменные в выполняемые функции.

    • Анализатор зависимостей анализирует код внутри логических операторов, даже если он не выполняется. В следующем примере код не выполняется, но анализатор зависимостей сообщает об отсутствующей зависимости от Simulink.

      if false
          load_system(vdp)
      end

Связанные темы