В этом руководстве показано, как анализировать рукописный код C/C + + путем запуска Polyspace® анализ из MATLAB® Командное окно или Редактор MATLAB. Чтобы проанализировать код, сгенерированный из Simulink® модель, см. Запуск анализа Polyspace на коде, сгенерированном из модели Simulink.
Интеграция Polyspace с MATLAB перед запуском анализа Polyspace из Командного окна MATLAB. См. «Интеграция Polyspace с MATLAB и Simulink».
Вы анализируете рукописный код С, конфигурируя и затем запуская анализ Polyspace из Командного окна MATLAB или редактора MATLAB.
Чтобы выполнить анализ Polyspace, создайте polyspace.Project
задайте исходные файлы и опции анализа, а затем запустите анализ с помощью этого объекта. Как создать polyspace.Project
объект, используйте функцию polyspace.Project
.
psPrj = polyspace.Project;
В этом руководстве рукописный код в файле numerical.c
анализируется. Файл numerical.c
является частью вашего программного обеспечения Polyspace. Этот исходный файл и заголовочные файлы , требуемый для анализа его можно найти в папке
. Здесь, polyspaceroot
\ polyspace\examples\cxx\Bug _ Finder _ Example\sourcespolyspaceroot
- расположение папки установки Polyspace в среде разработки. Создайте пути к этим исходным и заголовочным файлам с помощью функции fullfile
.
% Create the Path to source and header files sourceFile = fullfile(polyspaceroot, 'polyspace', ... 'examples', 'cxx', 'Bug_Finder_Example', 'sources', 'numerical.c'); includeFolder = fullfile(polyspaceroot, 'polyspace', ... 'examples', 'cxx', 'Bug_Finder_Example', 'sources');
Связать исходный код и заголовочные файлы с psPrj
объект.
% Associate the source and header files
psPrj.Configuration.Sources = {sourceFile};
psPrj.Configuration.EnvironmentSettings.IncludeFolders = {includeFolder};
Настройте опции анализа Polyspace. Например, можно задать компилятор для анализа Polyspace и проверить на нарушение конкретных правил кодирования. Можно также задать папку, в которой хранятся сгенерированные результаты. Например, результаты хранятся в папке 'results' в текущей рабочей директории.
% Specify target compiler psPrj.Configuration.TargetCompiler.Compiler = 'gnu4.9'; % Enable Mchecking for MISRA C violation psPrj.Configuration.CodingRulesCodeMetrics.EnableMisraC3 = true; psPrj.Configuration.CodingRulesCodeMetrics.MisraC3Subset = 'mandatory'; % Specify results folder psPrj.Configuration.ResultsDir = fullfile(pwd,'results');
pwd
содержит путь к текущей рабочей директории. Для получения дополнительной информации о конфигурируемых опциях анализа Polyspace, смотрите полипространство. Строения.Запустите анализ Polyspace с помощью функции run
.
% start BugFinder analysis bfStatus = run(psPrj, 'bugFinder');
bfStatus
установлено в 0
. Результат анализа Polyspace состоит из списка дефектов Bug Finder. Чтобы просмотреть сводные данные дефектов Bug Finder в таблице MATLAB, используйте функцию getSummary
. Для получения дополнительной информации о получении сводных данных по различным видам результатов смотрите getSummary
.
% Obtain list of Bug Finder defects resObj = psPrj.Results; bfSummary = getSummary(resObj, 'defects');
9x4
таблица bfSummary
.
В этой таблице перечислены некоторые функции MATLAB, которые можно использовать для автоматизации анализа Polyspace из редактора MATLAB или Командного окна.
Функция | Приложение |
---|---|
fopen | Открывает файл для двоичного доступа для чтения. Например, используйте эту функцию для чтения файла журнала ошибок. |
fclose | Закрывает файл, который был открыт при помощи fopen . Например, используйте эту функцию, чтобы закрыть файл журнала ошибок после его чтения. |
open | Открывает файл вне MATLAB в соответствующем приложении. Например, используйте эту функцию для открытия psprj файлы в пользовательском интерфейсе Polyspace. |
exist | Проверяет существование сущности. Например, используйте эту функцию, чтобы проверить, существует ли конкретная папка или файл. |
delete | Удаляет файл или объект. Например, используйте эту функцию для удаления старых результатов или ненужных объектов опций. |
questdlg | Создает конфигурируемое диалоговое окно. Используйте эту функцию для изменения различных настроек анализа Polyspace в скрипте. Например, можно принять решение включить различные правила кодирования на основе выхода этой функции. |
clearv | Очищает рабочую область путем удаления всех объектов. Можно использовать эту функцию в начале анализа Polyspace. |
clc | Удаление всего текста из Командного окна MATLAB. |
fullfile | Создает полные имена файлов из его деталей. Например, используйте эту функцию, чтобы создать полные пути к исходным файлам. |
char | Преобразует массив в символьный массив. Например, используйте эту функцию, чтобы создать входные параметры для функций, которые берут символьные массивы. |
string | Преобразует переменную в строковые массивы. Например, используйте эту функцию для создания входных параметров для функций, которые берут строки. |
dir | Список содержимого текущей рабочей папки. Например, используйте эту функцию для поиска определенных файлов или папок в текущей папке. |
system | Выполняет команды операционной системы и возвращает их выходы. Например, используйте эту функцию для выполнения скрипта командной строки без выхода из MATLAB. |
disp | Отображение значения переменного входа. Например, используйте эту функцию для отладки кода, подобно тому, как printf() используется в коде С |
visdiff | Сравнение двух файлов или папок. Для образца используйте эту функцию, чтобы сравнить результаты другого анализа Polyspace, чтобы увидеть различие. |
ismember | Определяет, присутствуют ли элементы в одном массиве также в другом массиве. Например, используйте эту функцию, чтобы проверить, включена ли проверка или правило кодирования в анализе Polyspace, или чтобы фильтровать результаты, чтобы найти конкретную проверку. |
any | Определяет, являются ли какие-либо элементы массива ненулевыми. Для образца используйте эту функцию для проверки новых результатов. |
nnz | Возвращает количество ненулевых элементов матрицы. Для образца используйте эту функцию для проверки новых результатов. |
fieldnames | Считывает структуру, объект Java или объект Microsoft COM и возвращает имена полей. Например, используйте эту функцию для чтения таблиц и управления ими. |
polyspace.Project
| polyspaceCodeProver
| run
| run