Safe programming. MISRA C\C++ Практика #1

Поделиться
HTML-код
  • Опубликовано: 12 сен 2024
  • Скачать PVS-Studio бесплатно:
    www.viva64.com...
    Воспользуйтесь промокодом моего канала: #NR_MISRA и получите бесплатную лицензию анализатора на месяц! Вместо обычной стандартной недельной лицензии.
    В практическом видео, на примерах, демонстрировалась работа, смысл правил и анализ с помощью программы статического анализатора кода:
    1. MISRA C15.6 - ;
    2. MISRA C15.6 - {}
    3. MISRA C++ 6-4-1
    4. MISRA C15.2 - goto
    5. MISRA C8.12 - enum
    6. MISRA C17.4 - return
    7. MISRA C10.1 - ++
    8. MISRA C10.1 - char
    9. MISRA C10.4 - signed or unsigned
    10.MISRA C10.4 - =
    11.MISRA C13.6 - sizeof(n)
    12.MISRA C10.3 - size_t
    Стандарты из видео:
    github.com/nr-...

Комментарии • 3

  • @pitman716
    @pitman716 3 года назад

    Если внимательно прочитать правило 15.1. То в нем говорится, что использовать goto не нужно, если оно все таки используется, то это использование регулируется правилами ниже 15.2, 15.3. В правиле 15.2 написано, что переход на метку выше по программе запрещен. Но не написано что он запрещен на переход далее по программе, значит разрешено. И в драйверах ядра Linux, есть код типа такого
    func_exec_result_enum func(...)
    {
    func_exec_result_enum ret = failure_result:
    if ()
    {
    ret = problem1_result;
    goto func_ex;
    }
    ret = ok_result;
    func_ex:
    return ret;
    }
    Код вполне допустим по правилам MISRA C.

    • @NRelectronics
      @NRelectronics  3 года назад +1

      Если не запрещено, то разрешено. Этот подход безусловно имеет место) Для себя уяснил давно, что, использовать go to можно только для выходы из глубоких циклов/ветвлений и для себя никогда не использую вообще. Спасибо за качественный комментарий и пример.

    • @NRelectronics
      @NRelectronics  3 года назад

      Смотрите продолжение ;-)