Этот пример показывает, как анализировать рукописный код 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 и проверки на нарушение определенных правил кодирования. Можно также задать папку, где вы храните сгенерированные результаты. Например, сохраните результаты в папке 'результаты' в текущей рабочей директории.
% 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.Project.Configuration Properties.Запустите анализ 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 object и возвращает имена полей. Например, используйте эту функцию, чтобы считать и управлять таблицами. |
polyspace.Project
| polyspaceCodeProver
| run
| run