В этом учебном пособии показано, как анализировать рукописный код C/C + + с помощью анализа Polyspace ® из окна команд MATLAB ® или редактора MATLAB. Анализ кода, созданного в модели Simulink ®, см. в разделе Выполнение анализа полиспейса для кода, созданного в модели Simulink.
Интеграция Polyspace с MATLAB перед выполнением анализа Polyspace из окна команд MATLAB. См. раздел Интеграция полиспейса с MATLAB и Simulink.
Рукописный код C анализируется путем настройки и последующего запуска анализа 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 содержит путь к текущей рабочей папке. Дополнительные сведения о конфигурируемых опциях анализа Полиспейса см. в разделе Полиспейс. Свойства Project.Configuration.Запустите анализ 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() используется в коде C. |
visdiff | Сравнивает два файла или папки. Например, используйте эту функцию для сравнения результатов различных анализов Polyspace, чтобы увидеть разницу. |
ismember | Определяет, присутствуют ли элементы в одном массиве также в другом массиве. Например, используйте эту функцию, чтобы проверить, включена ли проверка или правило кодирования в анализе Polyspace, или чтобы отфильтровать результаты для поиска определенной проверки. |
any | Определяет, являются ли элементы массива ненулевыми. Например, эта функция используется для проверки новых результатов. |
nnz | Возвращает число ненулевых элементов матрицы. Например, эта функция используется для проверки новых результатов. |
fieldnames | Считывает структуру, объект Java или объект Microsoft COM и возвращает имена полей. Например, эта функция используется для чтения таблиц и управления ими. |
polyspace.Project | polyspaceCodeProver | run | run