Прежде чем вы включите Polyspace® как инструмент в процессе разработки программного обеспечения вашей организации, сначала решите, как вы планируете использовать Polyspace для улучшения своего кода. Выберите исходные компоненты для анализа, проблемы для проверки и т.д. Затем можно подготовить файлы строения анализа, которые отражают выбранные вами варианты.
В общем, строение анализа Bug Finder состоит из двух частей:
Построение строения включая источники и целевые системы
Шашки строения
В этом разделе описывается рабочий процесс создания строения шашек в типичном сценарии развертывания. Можно адаптировать этот рабочий процесс к конкретным требованиям проекта или организации.
Предположим, что необходимо установить определенные стандарты кодирования в организации. Вы можете следовать одному из нескольких подходов:
Придерживайтесь внешнего стандарта кодирования.
Если Bug Finder поддерживает стандарт кодирования, можно выбрать стандарт и предопределенный или пользовательский набор правил из стандарта.
Polyspace поддерживает эти внешние стандарты непосредственно. Для этих стандартов просто включите стандарт в своём строении и запустите анализ.
MISRA C®:2004
MISRA- C:2012
MISRA® C++
JSF AV C++
AUTOSAR C++ 14 (только Bug Finder)
СВИДЕТЕЛЬСТВО® C (только Bug Finder)
CERT C++ (только Bug Finder)
ISO®/ IEC TS 17961 (только для Bug Finder)
Инструкции (только для Bug Finder)
Смотрите раздел «Проверка на нарушения стандартов кодирования».
Разработка набора внутренних правил кодирования на основе внешних стандартов и ранее обнаруженных проблем.
Проверьте, можно ли автоматизировать проверку этих правил с помощью проверки дефектов Bug Finder и/или стандартных шашек внешнего кодирования.
Один из способов найти потенциальную проверяющую систему - это поиск по ключевым словам в документации. Предположим, что вы хотите обнаружить проблемы, которые могут возникнуть из-за использования вариадных функций.
Поиск ключевых слов, таких как variadic
или va_arg
и уточнить результаты поиска по продукту до Bug Finder, а затем по категориям до Review Analysis Results > Polyspace Bug Finder Results.
Идентифицируйте все шашки, связанные с вариативными функциями. Запишите шашки, которые вы хотите включить. Проверьте, есть ли перекрытие между шашками и устранить дубликаты.
Можно записать каждую проверку дефектов, которая была включена или отключена в соответствии с вашими требованиями к процессам. Можно начать с электронной таблицы шашек в
. В Your Notes столбце обратите внимание на свое обоснование включения или отключения проверки.polyspaceroot
\ polyspace\ресурсы\
Проверяйте только на дефекты (ошибки), которые чаще всего вызывают ошибки во время исполнения.
Возможно, вы не соблюдаете стандартные методы кодирования в своей организации, и вы можете найти внешние стандарты кодирования слишком сложными для ваших настроек.
Начните с дефектных шашек Bug Finder и определите подмножество шашек, для которых вы хотите иметь нулевые неоправданные дефекты. Одним из способов идентифицировать это подмножество может быть следующее:
Сначала выберите дефектные шашки с высоким влиянием. Эти шашки могут найти проблемы, которые могут иметь серьезные последствия.
См. также Классификация дефектов по влиянию.
Запустите первый проход анализа Bug Finder с высокими влияниями шашками и идентифицируйте шашки, которые производят слишком много шума, который вы не хотите немедленно адресовать. Можно отключить эти шашки для первоначального развертывания.
Смотрите также Выбор конкретного Bug Finder Дефект Шашки.
Подобной стратегии можно следовать с помощью шашек для внешних стандартов кодирования. Например, для C:2012 MISRA можно начать с обязательных или необходимых инструкций, а затем выбрать расширение позже.
В конце этого процесса вы определили некоторые шашки, которые можно включить в анализе Polyspace. Этими шашками могут быть все дефектные (bug) шашки, или все шашки от внешних стандартов кодирования, или смесь из двух. В следующем разделе описывается, как создать файлы строения шашек, которые можно развернуть для разработчиков.
Polyspace Bug Finder™ анализа строения является списком параметров анализа, заданных с помощью флагов командной строки. Можно хранить всё строение в одном файле опций, например, текстовом файле с именем allOptions.txt
, и указать файл используя -options-file
вот так:
polyspace-bug-finder -options-file allOptions.txt |
Или вот так:
polyspace-bug-finder-server -options-file allOptions.txt |
Для вашего удобства можно разделить строение на три части:
Создайте строение (источники, цели и так далее).
Предположим, что вы сохраняете все опции, связанные с вашей сборкой, в файле buildOptions.txt
. Вы можете создать этот файл вручную или автоматически из команды build (make-файл).
Дополнительные сведения о том, как создать этот файл, см. в разделе «Задание целевого окружения и поведение компилятора».
Строение дефектных шашек.
Предположим, что вы задаете проверки дефектов в файле defectCheckers.txt
.
Строение внешнего кодирования.
Предположим, что вы задаете стандарт кодирования и связанные шашки в файле externalRuleCheckers.txt
.
Вы можете строить файлы вместе в команде run так:
polyspace-bug-finder -options-file buildOptions.txt -options-file defectCheckers.txt -options-file externalRuleCheckers.txt |
Эта команда объединяет содержимое всех файлов опций в один файл. Разделение файла с одной опцией на несколько файлов имеет некоторые преимущества. Путем разделения на отдельные файлы опций можно, например, повторно использовать строение проверки дефектов между проектами при создании строения сборки индивидуально для каждого проекта.
Затем необходимо создать текстовые файлы, которые задают шашки, которые вы хотите включить:
Файл defectCheckers.txt
содержит -checkers
далее следует список , разделенный запятыми из дефектных шашек, которые вы решите включить. Для образца:
-checkers INT_ZERO_DIV, FLOAT_ZERO_DIV, INT_CONV_OVFL, UINT_CONV_OVFL, SIGN_CHANGE, ... |
См. также:
Файл externalRuleCheckers.txt
содержит стандарты кодирования, которые необходимо включить, а затем ссылается на отдельный XML- файл для определенных правил из стандартов.
Например, текстовый файл, который включает определенные правила из C:2012 MISRA и стандарта AUTOSAR C++ 14, содержит следующие опции:
-misra3 from-file -autosar-cpp14 from-file -checkers-selection-file externalRuleCheckers.xml |
Файл XML externalRuleCheckers.xml
которая включает или отключает проверки правил из конкретных стандартов, имеет следующую структуру:
<polyspace_checkers_selection> <standard name="MISRA C:2004" state="off"/> <standard name="MISRA AC AGC" state="off"/> <standard name="MISRA C:2012" state="off"/> <standard name="MISRA C++:2008" state="off"/> <standard name="JSF AV C++" state="off"/> <standard name="SEI CERT C" state="off"/> <standard name="SEI CERT C++" state="off"/> <standard name="ISO/IEC TS 17961" state="off"/> <standard name="AUTOSAR C++14"> <section name="0 Language independent issues"> <check id="M0-1-1" state="on"/> <check id="M0-1-2" state="on"/> <check id="M0-1-3" state="off"/> <check id="M0-1-4" state="on"> <comment>Not implemented</comment> </check> <check id="A0-1-1" state="on"> <comment>Not implemented</comment> </check> <check id="A0-1-2" state="on"/> <check id="M0-1-8" state="on"> <comment>Not implemented</comment> </check> . . </section> </standard> </polyspace_checkers_selection> |
Дополнительные сведения о создании XML- файл см. в разделе Проверка на нарушения стандартов кодирования.
Можно создать эти файлы и использовать окончательную команду Polyspace run в скриптах. Для образца:
В сборке Jenkins можно задать команду run в скрипте build, наряду с другими инструментами, которые вы запускаете. После отправки кода анализ Polyspace может выполняться на только что отправленном коде через скрипты сборки.
В IDE разработчика можно задать команду run через элемент меню, который запускает внешние инструменты. Разработчики могут запустить анализ Polyspace во время кодирования с помощью внешних инструментов.
Создание этих файлов опций вручную может быть подвержено ошибкам. Если у вас есть лицензия десктопного продукта Polyspace Bug Finder, можно сгенерировать эти файлы из пользовательского интерфейса Polyspace. См. также Настройка опций анализа Polyspace в интерфейсе пользователя и Генерация скриптов.