Запуск с анализом 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 и проверить на нарушение конкретных правил кодирования. Можно также задать папку, в которой хранятся сгенерированные результаты. Например, результаты хранятся в папке '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');
В Командном Окне MATLAB появляется прогресс анализа Polyspace. Когда анализ успешен, 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 и возвращает имена полей. Например, используйте эту функцию для чтения таблиц и управления ими.

См. также

| |

Похожие темы