Начало работы с анализом Polyspace при помощи MATLAB

Этот пример показывает, как анализировать рукописный код C/C++ путем выполнения анализа Polyspace® из Командного окна MATLAB® или редактора MATLAB. Чтобы анализировать код, сгенерированный из модели Simulink®, смотрите Анализ Polyspace Запуска Кода, Сгенерированного из Модели Simulink.

Необходимые условия

Интегрируйте Polyspace с MATLAB, прежде чем вы запустите анализ Polyspace от командного окна MATLAB. Смотрите Интегрируют Polyspace с MATLAB и Simulink.

Запустите анализ Polyspace при помощи MATLAB

Вы анализируете рукописный код С путем конфигурирования и затем запуска анализа 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\sources. Здесь, polyspaceroot местоположение папки установки 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');
Прогресс анализа Polyspace появляется в командном окне MATLAB. Когда анализ успешен, bfStatus установлен в 0.

Результат анализа Polyspace состоит из списка дефектов Bug Finder. Чтобы просмотреть сводные данные дефектов Bug Finder в таблице MATLAB, используйте функцию getSummary. Для получения дополнительной информации о получении сводных данных различных видов результатов, смотрите getSummary.

% Obtain list of Bug Finder defects
resObj = psPrj.Results;
bfSummary = getSummary(resObj, 'defects');
Дефекты Bug Finder перечислены в 9x4 таблица bfSummary.

Часто используемые функции MATLAB

Эта таблица приводит некоторые функции 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 и возвращает имена полей. Например, используйте эту функцию, чтобы считать и управлять таблицами.

Смотрите также

| | |

Похожие темы