Возможности анализатора зависимостей и ограничения

Возможности анализа

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

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

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

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

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

ОпцияДефолтОписание
C/C++ CodeНаАнализируйте зависимости, введенные C/C++ файлы кода.
Add-OnsПрочьАнализируйте зависимости внутри дополнений.
Model ParametersПрочьАнализируйте зависимости, введенные кодом MATLAB в параметрах блока модели.
Generated Code TraceabilityПрочьАнализируйте зависимости, введенные кодом, сгенерированным из модели.

Ограничения, накладываемые на анализ

  • Анализатор Зависимостей имеет ограничения, характерные для анализа кода 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 function.

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

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

    Чтобы выяснить, где используется общий код, на панели Properties, в разделе Products, укажите продукт под Shared Functionalities Among: и щелкните значок папки поиска.

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

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

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

      if false
          load_system(vdp)
      end

Похожие темы