Интерпретируйте результаты Polyspace Bug Finder

Когда вы открываете результаты анализа Polyspace® Bug Finder™, вы видите список на панели Results List. Результаты состоят из дефектов, кодируя нарушения правила или метрики кода.

Можно сначала сузить особое внимание анализа:

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

  • Организуйте результаты семейством результатов или файлом. Используйте значок выше списка.

Если вы сужаете список, можно начать рассматривать отдельные результаты. Эта тема описывает, как рассмотреть результат.

Чтобы начать ваш анализ, выберите результат в списке.

Интерпретируйте сообщение деталей результата

Интерпретируйте сообщение

Первый шаг должен понять что не так. Считайте сообщение на панели Result Details и связанную строку кода на панели Source.

Ищите дополнительные ресурсы для справки

Иногда, вы нуждаетесь в дополнительной помощи для определенных результатов. Кликните по значку, чтобы открыть страницу справки для выбранного результата. Смотрите, что примеры кода иллюстрируют результат. Проверяйте внешние стандарты, такие как CWE или CERT-C, которые обеспечивают дополнительное объяснение для устранения проблемы.

На данном этапе вы можете быть готовы решить, устранить ли проблему или нет. Если вы идентифицируете фиксацию, она может помочь рассмотреть все результаты того типа вместе.

Найдите первопричину результата

Иногда, первопричина может быть далека от фактического местоположения, где результат отображен. Например, переменная, которую вы читаете, может быть не инициализирована, потому что инициализация не достижима. Дефект показывают, когда вы читаете переменную, но первопричиной является, возможно, предыдущий if или условие while, которое является всегда ложным.

Перейдите к связанным Событиям

Как правило, панель Result Details показывает одну последовательность событий, которая приводит к результату. Панель Source также подсвечивает эти события.

В вышеупомянутом событии traceback, показывают эту последовательность:

  1. Переменная value объявляется.

  2. Путь к выполнению обходит оператор if. Эта информация может быть релевантной, если переменная инициализируется в блоке if.

  3. Местоположение текущего дефекта: Non-initialized variable

Как правило, traceback показывает важные пункты в потоке управления: ввод или обход условных операторов или циклов, ввод функции, и так далее. Для определенных дефектов traceback показывает другие виды событий, относящихся к дефекту. Например, для дефекта Declaration mismatch, traceback показывает эти два места с конфликтными объявлениями.

Создайте свой собственный путь навигации

Если событие traceback не доступно, используйте другие инструменты навигации, чтобы проследить ваш собственный путь через код.

Прежде чем вы начнете перейти через трассы в вашем коде, зададите вопрос: Что я ищу? На основе вашего ответа выберите соответствующий инструмент навигации. Например:

  • Чтобы исследовать дефект Non-initialized variable, вы можете хотеть убедиться, что переменная не инициализируется вообще. Чтобы искать предыдущие экземпляры переменной, на панели Source, щелкают правой кнопкой по переменной и выбирают Search For All References. Также дважды кликните переменную. Эти опции показывают только экземпляры определенной переменной и не других переменных с тем же именем в других осциллографах.

  • Исследовать нарушение MISRA C:2012 Rule 17.7:

    The value returned by a function having non-void return type shall be used.
    вы можете хотеть перейти от вызова функции до функционального определения. Щелкните правой кнопкой по функции и выберите Go To Definition.

После того, как вы перейдете далеко от текущего результата, используйте значок на панели Result Details, чтобы возвратиться.

Если вы кликаете по лексеме исходного кода, содержащей результат, предыдущий выбор результата на Results List и детали о панели Result Details не изменяются. Можно сохранить результат в списке результатов и деталях результата прикрепленным при навигации в исходном коде. Иногда, вы можете хотеть видеть результат, сопоставленный с лексемой. Чтобы обновить выбор результата и детали, Ctrl - кликает по лексеме или щелкает правой кнопкой и выбирает Select Results At This Location.

Перейдите в отдельном окне

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

Щелкните правой кнопкой по Source, разделяют на области и выбирают Create Duplicate Code Window. Щелкните правой кнопкой по вкладке, показывающей дублирующееся имя файла (заканчивающийся -spawn 1), и выберите New Vertical Group.

Выполните шаги навигации в дублирующемся окне файла, в то время как дефект все еще появляется на исходном окне файла. После того, как расследование закончено, закройте дублирующееся окно.

Похожие темы