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

Примечание

Запуская R2017b, Polyspace использует более простой формат аннотации. Смотрите Аннотируют Код и Скрывают Известные или Приемлемые результаты.

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

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

  • Сохраните комментарии анализа и классификации.

Примечание

Аннотации исходного кода не применяются к комментариям к коду. Вы не можете аннотировать эти правила:

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

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

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

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

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

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

  1. На Results List или панели Result Details, присвойте Severity, Status и Comment к результату.

    1. Кликните по результату.

    2. Из выпадающих списков Severity и Status выберите опцию.

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

  2. На панели Results List щелкните правой кнопкой по прокомментированному результату и выберите Add Pre-Justification to Clipboard. Программное обеспечение копирует серьезность, состояние и комментарий к буферу обмена.

  3. Щелкните правой кнопкой по результату снова и выберите Open Editor. Программное обеспечение открывает исходный файл для местоположения дефекта.

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

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

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

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

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

Этот метод показывает вам, как ввести комментарии непосредственно в ваши исходные файлы при помощи синтаксиса аннотации 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]Состояние, и [Additional text] с позволенными значениями, обозначенными в следующей таблице. Текст с квадратными скобками [] является дополнительным, и можно удалить его. Смотрите Примеры Синтаксиса.

    WordПозволенные значения
    Type

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

    • Defect (Polyspace Bug Finder™)

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

    • VARIABLE, для глобальных переменных (Polyspace Code Prover)

    • 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;
  • Нарушение правила MISRA C:2012:

    /* 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