exponenta event banner

Начало работы с анализом полиспейса с помощью MATLAB

В этом учебном пособии показано, как анализировать рукописный код C/C + + с помощью анализа Polyspace ® из окна команд MATLAB ® или редактора MATLAB. Анализ кода, созданного в модели Simulink ®, см. в разделе Выполнение анализа полиспейса для кода, созданного в модели Simulink.

Предпосылки

Интеграция Polyspace с MATLAB перед выполнением анализа Polyspace из окна команд MATLAB. См. раздел Интеграция полиспейса с MATLAB и Simulink.

Выполнение анализа в пространстве с помощью MATLAB

Рукописный код 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\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 содержит путь к текущей рабочей папке. Дополнительные сведения о конфигурируемых опциях анализа Полиспейса см. в разделе Полиспейс. Свойства Project.Configuration.

Запустите анализ 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() используется в коде C.
visdiffСравнивает два файла или папки. Например, используйте эту функцию для сравнения результатов различных анализов Polyspace, чтобы увидеть разницу.
ismemberОпределяет, присутствуют ли элементы в одном массиве также в другом массиве. Например, используйте эту функцию, чтобы проверить, включена ли проверка или правило кодирования в анализе Polyspace, или чтобы отфильтровать результаты для поиска определенной проверки.
anyОпределяет, являются ли элементы массива ненулевыми. Например, эта функция используется для проверки новых результатов.
nnzВозвращает число ненулевых элементов матрицы. Например, эта функция используется для проверки новых результатов.
fieldnamesСчитывает структуру, объект Java или объект Microsoft COM и возвращает имена полей. Например, эта функция используется для чтения таблиц и управления ими.

См. также

| |

Связанные темы