exponenta event banner

Интерпретировать результаты поиска ошибок в интерфейсе пользователя Polyspace Desktop

В этом разделе показано, как просмотреть результаты поиска ошибок в пользовательском интерфейсе настольных продуктов Polyspace. Аналогичный рабочий процесс в веб-интерфейсе Polyspace Access см. в разделе Интерпретация результатов поиска ошибок в веб-интерфейсе Polyspace Access (Polyspace Bug Finder Access). Сведения о том, как просматривать результаты работы Polyspace с кодом в IDE, см. в разделах Запуск Polyspace с кодом в IDE и Просмотр результатов (Polyspace Bug Finder Access).

При открытии результатов анализа Finder™ ошибок Polyspace ® на панели Список результатов (Results List) появляется список. Результаты состоят из дефектов, нарушений правил кодирования или метрик кода.

Сначала можно сузить фокус обзора:

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

  • Упорядочить результаты по файлу или семейству результатов. Используйте значок над списком.

После сужения списка можно начать просмотр отдельных результатов. В этом разделе описывается, как просмотреть результат.

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

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

Интерпретировать сообщение

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

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

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

На этом этапе вы можете быть готовы решить, исправить проблему или нет. После определения исправления, это может помочь просмотреть все результаты этого типа вместе.

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

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

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

Обычно на панели Сведения о результате (Result Details) отображается одна последовательность событий, которые приводят к результату. Эти события также подсвечиваются на панели «Источник».

В приведенном выше отслеживании событий показана следующая последовательность:

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

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

  3. Местоположение текущего дефекта: Неинициализированная переменная

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

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

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

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

  • Чтобы исследовать дефект неинициализированной переменной, можно убедиться, что переменная не инициализирована вообще. Чтобы найти предыдущие экземпляры переменной, на панели Источник (Source) щелкните ее правой кнопкой мыши и выберите Поиск всех привязок (Search For All References). Либо дважды щелкните переменную. Эти параметры показывают только экземпляры определенной переменной, но не другие переменные с тем же именем в других областях.

  • Расследование нарушения MISRA C:2012 Правило 17.7:

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

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

Если щелкнуть маркер исходного кода, содержащий результат, предыдущий выбор результата в списке результатов и сведения на панели Сведения о результате не изменяются. При навигации по исходному коду можно сохранить результат в списке результатов и сведения о результатах. Иногда может потребоваться просмотреть результат, связанный с маркером. Чтобы обновить выбор результата и подробные данные, Ctrl- щелкните маркер или щелкните правой кнопкой мыши и выберите Выбрать результаты в этом расположении.

Навигация в отдельном окне

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

Щелкните правой кнопкой мыши на панели «Источник» и выберите «Создать окно повторяющегося кода». Щелкните правой кнопкой мыши на вкладке с повторяющимся именем файла (оканчивающимся на -spawn 1) и выберите «Создать вертикальную группу».

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

Связанные темы