himl_0004: КОДЫ MATLAB Analyzer для генерации кода

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

Просмотрите сообщения КОД MATLAB Analyzer. Либо:

  • Осуществление рекомендаций или

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

Примечания

Предоставляемые сообщения КОД MATLAB Analyzer идентифицируют потенциальные ошибки, проблемы и возможности для улучшения кода.

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

    • Сгенерируйте эффективный код.

    • Следуйте лучшим практикам генерации кода

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

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

  • Не следующие рекомендации КОД MATLAB Analyzer обоснованы идентификатором сообщения (например %#ok<NOPRT>.

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

Проверки Model AdvisorПроверяйте сообщения анализатора кода MATLAB (Simulink Check)
Ссылки
  • IEC 61508-3, Таблица A.3 (3) 'Подмножество языка "
    IEC 61508-3, Таблица A.4 (3) «Оборонительное программирование »
    IEC 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) 'Language Subset'
    EN 50128, таблица A.3 (1) 'Defensive Programming'
    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 Analyzer для поколений кода:

    %#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]