exponenta event banner

Аннотировать код для известных или приемлемых результатов (не рекомендуется)

Примечание

Начиная с R2017b, Polyspace использует более простой формат аннотаций. См. разделы Аннотирование кода и скрытие известных или приемлемых результатов.

Если Polyspace обнаруживает в коде дефекты, которые невозможно или не будут устранены, можно добавить в код аннотации. Эти аннотации представляют собой комментарии к коду, которые указывают на известные или приемлемые дефекты или нарушения правил кодирования. Используя эти аннотации, можно:

  • Избегайте повторного просмотра дефектов или нарушений правил кодирования из предыдущих анализов.

  • Сохранение замечаний по обзору и классификаций.

Примечание

Аннотации исходного кода не применяются к комментариям кода. Нельзя аннотировать следующие правила:

  • MISRA C ®: 2004 Правила 2.2 и 2.3

  • MISRA C:2012 Правила 3.1 и 3.2

  • MISRA-C + + Правило 2-7-1

  • Правила JSF++ 127 и 133

Добавление аннотаций из интерфейса Polyspace

Этот метод показывает, как преобразовать комментарии обзора и классификации в интерфейсе Polyspace в аннотации кода.

  1. На панели Список результатов (Results List) или Сведения о результатах (Result Details) назначьте результат Серьезность (Severity), Статус (Status) и Комментарий (Comment).

    1. Щелкните результат.

    2. В выпадающих списках Серьезность и Состояние выберите параметр.

    3. В поле Комментарий введите комментарий или ключевое слово, которое поможет легко распознать результат.

  2. На панели «Список результатов» щелкните правой кнопкой мыши комментируемый результат и выберите «Добавить предварительное выравнивание в буфер обмена». Программа копирует степень серьезности, состояние и комментарий в буфер обмена.

  3. Щелкните результат правой кнопкой мыши еще раз и выберите «Открыть редактор». Программа открывает исходный файл в месте дефекта.

  4. Вставьте содержимое буфера обмена в строку непосредственно перед строкой, содержащей дефект или нарушение правила кодирования.

    Комментарии к рецензии можно увидеть как комментарий к коду в синтаксисе аннотаций Polyspace ®, который Polyspace использует для повторного заполнения комментариев к рецензии в следующем анализе.

  5. Сохраните исходный файл и повторите анализ.

    На панели Список результатов (Results List) программа заполняет столбцы Серьезность (Severity), Статус (Status) и Комментарий (Comment) для дефекта или нарушения правила, к которому были добавлены аннотации. Эти поля доступны только для чтения, поскольку они заполняются из аннотации кода. Если для аннотаций используется определенное ключевое слово или статус, можно фильтровать результаты для скрытия или отображения аннотированных результатов. Дополнительные сведения о фильтрации см. в разделе Фильтрация и группирование результатов в пользовательском интерфейсе Polyspace Desktop.

Добавление аннотаций вручную

Этот метод показывает, как вводить комментарии непосредственно в исходные файлы с помощью синтаксиса аннотации кода Polyspace. Синтаксис не учитывает регистр и применяется к первой незакомментированной строке кода C/C + +, следующей за примечанием.

  1. Откройте исходный файл в редакторе и найдите строку или раздел кода, который требуется аннотировать.

  2. Добавьте одну из следующих аннотаций:

    • Для одной строки кода добавьте следующий текст непосредственно перед строкой кода, которую требуется аннотировать.

      /* polyspace<Type:Kind1[,Kind2] : [Severity] : [Status] > [Notes] */

    • Для раздела кода используйте следующий синтаксис.

      /* polyspace:begin<Type:Kind1[,Kind2] : [Severity] : [Status] > [Notes] */
      
      ... Code section ...
      
      /* polyspace:end<Type:Kind1[,Kind2] : [Severity] : [Status] >  */

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

  3. Заменить слова Type, Kind1, [Kind2], [Severity], [Status], и [Additional text] с разрешенными значениями, указанными в следующей таблице. Текст, заключенный в квадратные скобки [] является необязательным и его можно удалить. См. примеры синтаксиса.

    WordДопустимые значения
    Type

    Тип результатов:

    • Defect (Polyspace Bug Finder™)

    • RTE, для проверок во время выполнения (Polyspace Code Prover™)

    • VARIABLE, для глобальных переменных (средство проверки кода Polyspace)

    • CODE-METRIC, для показателей сложности кода.

    • MISRA-C, для MISRA C:2004

    • MISRA-AC-AGC

    • MISRA-C3, для MISRA C:2012

    • MISRA-CPP

    • JSF

    • Custom, для пользовательских нарушений правил кодирования.

    Kind1,[Kind2],...

    Для дефектов, проверок времени выполнения и метрик кода используйте короткие имена шашек. См.:

    Для нарушений правил кодирования укажите номер правила или номера.

    Для глобальных переменных единственным допустимым значением является ALL.

    Если комментарий должен применяться ко всем возможным дефектам или правилам кодирования, укажите ALL.

    Severity

    Текст, указывающий, насколько критичным вы считаете дефект. Введите одно из следующих значений:

    • Unset

    • High

    • Medium

    • Low

    Этот текст заполняет столбец Серьезность (Severity) на панели Список результатов (Results List).

    Status

    Текст, указывающий способ исправления ошибки в коде. Введите один из следующих или любой другой текст:

    • Unreviewed

    • To investigate

    • To fix

    • Justified

    • No action planned

    • Not a defect

    • Other

    Этот текст заполняет столбец Статус (Status) на панели Список результатов (Results List). Статус также используется в метриках Polyspace для определения того, является ли результат обоснованным. Для выравнивания результата используйте Justified, No action planned или Not a defect.

    NotesДополнительные комментарии, такие как ключевое слово или объяснение состояния и серьезности.

Примеры синтаксиса

  • Единственный дефект:

    /* polyspace<Defect:HARD_CODED_BUFFER_SIZE:Medium:To investigate> Known issue */
    int table[100];
    

  • Одиночная проверка времени выполнения:

    /* polyspace<RTE: ZDV : High : To Fix > Denominator cannot be zero */
    y=1/x;
  • Нарушение правил C:2012 MISRA:

    /* polyspace<MISRA-C3: 13.1 : Low : Justified> Known issue */
    int arr[2] = {x++,y}; 

  • Неиспользуемая глобальная переменная:

    /* polyspace<VARIABLE: ALL : Low : Justified> Variable to use later*/
    int var_unused;
    

  • Множественные дефекты:

    polyspace<Defect:USELESS_WRITE,DEAD_CODE:Low:No Action Planned> OK issue
    

  • Несколько нарушений правил JSF ®:

    polyspace<JSF:9,13:Low:Justified> Known issue