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