В этой теме показано, как просмотреть результаты Bug Finder в пользовательском интерфейсе десктопных продуктов Polyspace. Для аналогичного рабочего процесса в веб-интерфейсе Доступ смотрите Interpret Bug Finder Results in Polyspace Access Web Interface (Polyspace Bug Finder Access). Чтобы увидеть, как просмотреть результаты Polyspace в качестве кода в IDE, смотрите Запуск Polyspace в качестве кода в IDE и Просмотр результатов (Polyspace Bug Finder Access).
Когда вы открываете результаты Polyspace® Bug Finder™ анализ, вы видите список на панели Results List. Результаты состоят из дефектов, нарушений правил кодирования или метрик кода.
Вы можете сначала сузить особое внимание вашего обзора:
Используйте фильтры в столбцах списка результатов, чтобы сузить список. Например, вы можете фокусироваться на высокоударных дефектах.
Организуйте результаты по файлу или семейству результатов. Используйте значок над списком.
После сужения списка можно начать просмотр отдельных результатов. В этом разделе описывается, как просмотреть результат.
Чтобы начать проверку, выберите результат в списке.
Первый шаг - понять, что не так. Прочитайте сообщение на панели Result Details и связанную строку кода на панели Source.
Иногда для определенных результатов нужна дополнительная помощь. Щелкните значок, чтобы открыть страницу справки для выбранного результата. См. примеры кода, иллюстрирующие результат. Проверьте внешние стандарты, такие как CWE или CERT-C, которые обеспечивают дополнительное обоснование для устранения проблемы.
На данной точке, вы можете быть готовы решить, исправить ли проблему или нет. Как только вы идентифицируете исправление, это может помочь просмотреть все результаты этого типа вместе.
Иногда первопричина может быть далека от фактического местоположения, где отображается результат. Например, считанная переменная может быть неинициализирована, поскольку инициализация недоступна. Дефект отображается, когда вы читаете переменную, но первопричина, возможно, является предыдущей if
или while
условие, которое всегда ложно.
Как правило, на панели Result Details отображается одна последовательность событий, которая приводит к результату. На панели Source также отображаются эти события.
В трассировке вышеуказанных событий эта последовательность показана:
Переменная value
объявляется.
Путь выполнения обходит if
оператор. Эта информация может быть релевантной, если переменная инициализирована внутри if
блок.
Расположение дефекта тока: Non-initialized variable
Обычно traceback показывает основные точки в потоке управления: ввод или обход условных операторов или циклов, ввод функции и так далее. Для конкретных дефектов в трассировке показаны другие виды событий, имеющих отношение к дефекту. Для образца, для дефекта Declaration mismatch, 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.
После перехода от текущего результата используйте значок на панели Result Details, чтобы вернуться.
При клике лексемы исходного кода, содержащего результат, предыдущий выбор результата на Results List и сведения на панели Result Details не изменяются. Можно сохранить результат в списке результатов и закрепить подробные данные результатов во время навигации в исходном коде. Иногда можно хотеть увидеть результат, связанный с лексемой. Чтобы обновить выбор результата и детали, Ctrl
- щелкните лексема или щелкните правой кнопкой мыши и выберите Select Results At This Location.
Если просмотр результата требует более глубокой навигации в исходном коде, можно создать повторяющееся окно исходного кода, которое фокусируется на результате во время навигации в исходном окне исходного кода.
Щелкните правой кнопкой мыши на панели Source и выберите Create Duplicate Code Window. Щелкните правой кнопкой мыши на вкладке, показывающей повторяющееся имя файла (заканчивается на -spawn 1
) и выберите New Vertical Group.
Выполните шаги навигации в повторяющемся окне файла, пока дефект все еще появится в исходном окне файла. После завершения расследования закройте повторяющееся окно.