exponenta event banner

himl_0004: Рекомендации анализатора кода MATLAB для создания кода

Идентификатор: Заголовокhiml_0004: Рекомендации анализатора кода MATLAB ® для создания кода
ОписаниеПри использовании кода MATLAB:
AДля активации сообщений анализатора кода MATLAB для генерации кода используйте %#codegen директива во внешних функциях MATLAB.
B

Просмотрите сообщения анализатора кода MATLAB. Либо:

  • Выполнить рекомендации или

  • Обосновать несоблюдение рекомендаций с %#ok<message-ID(S)> директивы в функции MATLAB. Не использовать %#ok без определенных идентификаторов сообщений.

Примечания

В сообщениях анализатора кода MATLAB определяются возможные ошибки, проблемы и возможности для улучшения кода.

ОбъяснениеAВо внешних функциях MATLAB %#codegen директива активирует сообщения анализатора кода MATLAB для генерации кода.
B
  • Следующие рекомендации анализатора кода MATLAB помогают:

    • Создание эффективного кода.

    • Следовать передовым практикам создания кода

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

    • Избегайте шаблонов кода, которые потенциально влияют на безопасность.

  • Несоблюдение рекомендаций анализатора кода MATLAB оправдано идентификатором сообщения (например, %#ok<NOPRT>.

    В функции MATLAB с помощью %#ok без идентификатора сообщения оправдывает полную строку, потенциально скрывая проблемы.

Проверки помощника по моделиПроверка сообщений анализатора кода MATLAB (Simulink Check)
Ссылки
  • IEC 61508-3, Таблица A.3 (3) 'Поднабор языка "
    IEC 61508-3, таблица A.4 (3) «Оборонительное программирование »
    МЭК 61508-3, Таблица A.4 (5) «Стандарты проектирования и кодирования»

  • МЭК 62304, 5.5.3 - Критерии приемки установки программного обеспечения

  • ISO 26262-6, Таблица 1 (1b) «Использование языковых поднаборов»
    ISO 26262-6, Таблица 1 (1d) «Использование защитных технологий реализации»
    ISO 26262-6, Таблица 1 (1e) «Использование надежных принципов проектирования»
    ISO 26262-6, Таблица 1 (1f) «Использование однозначного графического представления»
    ISO 26262-6, Таблица 1 (1g) «Использование руководств по стилю»
    ISO 26262-6, Таблица 1 (1h) «Использование условных обозначений»

  • EN 50128, Таблица A.4 (11) «Поднабор языка»
    EN 50128, таблица A.3 (1) «Оборонительное программирование»
    EN 50128, Таблица A.12 (1) «Стандарт кодирования»
    EN 50128, Таблица A.12 (2) «Руководство по стилю кодирования»

  • DO-331, Раздел MB.6.3.1.b «Точность и последовательность»
    DO-331, Раздел MB.6.3.2.b «Точность и последовательность»

См. также

Проверка кода на наличие ошибок и предупреждений

Последнее изменениеR2016a
Примеры

Рекомендуется

  • Активировать сообщения анализатора кода MATLAB для генерации кода:

    %#codegen
      function y = function(u)
        y = inc_u(u));     
      end
      function yy = inc_u(uu)
        yy = uu + 1;
      end
    

  • Оправдать отсутствие ; и value assigned might be unused:

    y = 2*u %#ok<NOPRT,NAGSU> output for debugging
    ...
    y = 3*u;

  • Если вывод не требуется и назначенное значение не используется, удалите строку y = 2*u ...:

    y = 3*u;

Не рекомендуется

  • Внешний файл MATLAB, используемый в Simulink ® с отсутствующими%#codegen директива:

    function y = function(u)
        % nested functions can't be used for code generation
        function yy = inc_u(uu)
          yy = uu + 1;
        end
        y = inc_u(u));     
      end
    

  • Все сообщения в строке оправдываются с помощью %#ok без идентификатора сообщения:

    % missing ';' and the value might be unused
      y = 2*u %#ok 
      …
      y = 3*u;
    

  • Без обоснования:

    % missing justification for missing ';' and unnecessary '[..]'
    y= [2*u]