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

Можно автоматизировать анализ кода C/C++ при помощи скриптов MATLAB®. В вашем скрипте вы задаете свои исходные файлы и аналитические опции, такие как компилятор, запускаете анализ и читаете результаты анализа в таблицы MATLAB.

Например, используйте этот скрипт, чтобы запустить анализ Polyspace® Bug Finder™ файла примера:

proj = polyspace.Project

% Specify sources and includes
sourceFile = fullfile(polyspaceroot, 'polyspace', ... 
    'examples', 'cxx', 'Bug_Finder_Example', 'sources', 'numerical.c');
includeFolder = fullfile(polyspaceroot, 'polyspace', ... 
    'examples', 'cxx', 'Bug_Finder_Example', 'sources');

% Configure analysis
proj.Configuration.Sources = {sourceFile};
proj.Configuration.TargetCompiler.Compiler = 'gnu4.9';
proj.Configuration.EnvironmentSettings.IncludeFolders = {includeFolder};
proj.Configuration.ResultsDir = fullfile(pwd,'results');

% Run analysis
bfStatus = run(proj, 'bugFinder');

% Read results
bfSummary = proj.Results.getSummary('defects');

См. также polyspace.Project.

Предпосылки

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

Задайте несколько исходных файлов

Можно задать папку, содержащую все исходные файлы. Например, если proj polyspace.Project, объект, введите:

sourceFolder = fullfile(polyspaceroot, 'polyspace', ... 
    'examples', 'cxx', 'Bug_Finder_Example', 'sources');
proj.Configuration.Sources = {fullfile(sourceFolder,'*')};
Можно также задать несколько исходных папок в массиве ячеек.

Можно задать папку, которая содержит все исходные файлы и непосредственно и в подпапках. Например:

sourceFolder = fullfile(polyspaceroot, 'polyspace', ... 
    'examples', 'cxx', 'Bug_Finder_Example', 'sources');
proj.Configuration.Sources = {fullfile(sourceFolder,'**')};

Если вы не хотите анализировать все файлы в папке, можно явным образом задать который файлы анализировать. Например:

sourceFolder = fullfile(polyspaceroot, 'polyspace', ... 
    'examples', 'cxx', 'Bug_Finder_Example', 'sources');
file1 = fullfile(sourceFolder,'numerical.c');
file2 = fullfile(sourceFolder,'staticmemory.c');
proj.Configuration.Sources = {file1, file2};

Можно явным образом исключить файлы из анализа. Например:

% Specify source folder.
sourceFolder = fullfile(polyspaceroot, 'polyspace', ... 
    'examples', 'cxx', 'Bug_Finder_Example', 'sources');
proj.Configuration.Sources = {fullfile(sourceFolder,'**')};

% Specify files to exclude.
file1 = fullfile(sourceFolder,'security.c');
file2 = fullfile(sourceFolder,'tainteddata.c');
proj.Configuration.InputsStubbing.DoNotGenerateResultsFor = ['custom=' file1 ...
     ',' file2];
Однако этот метод исключения не применяется к проверке ошибки времени выполнения Программы автоматического доказательства Кода.

Проверяйте на нарушения MISRA C:2012

Можно настроить анализ Polyspace, чтобы проверять на нарушения правила MISRA C®:2012.

Установите опции для проверки правил MISRA C:2012. Отключите регулярный анализ Средства поиска Ошибки, который ищет дефекты.

Если proj polyspace.Project объект, чтобы запустить анализ Средства поиска Ошибки со всем обязательным MISRA C:2012 управляет, введите:

% Enable MISRA C checking
proj.Configuration.CodingRulesCodeMetrics.EnableMisraC3 = true;
proj.Configuration.CodingRulesCodeMetrics.MisraC3Subset = 'mandatory';

% Disable defect checking
proj.Configuration.BugFinderAnalysis.EnableCheckers = false;

% Run analysis
bfStatus = run(proj, 'bugFinder');

% Read summary of results
misraSummary = proj.Results.getSummary('misraC2012');

Проверяйте на определенные дефекты или кодирующий нарушения правила

Вместо набора по умолчанию дефекта или кодирующий средства проверки правила, можно задать собственный набор.

Если proj polyspace.Project объект, чтобы отключить MISRA C:2012 управляет 8.1 к 8,4, введите:

% Disable rules
misraRules = polyspace.CodingRulesOptions('misraC2012');

misraRules.Section_8_Declarations_and_definitions.rule_8_1 = false;
misraRules.Section_8_Declarations_and_definitions.rule_8_2 = false;
misraRules.Section_8_Declarations_and_definitions.rule_8_3 = false;
misraRules.Section_8_Declarations_and_definitions.rule_8_4 = false;

% Configure analysis
proj.Configuration.CodingRulesCodeMetrics.EnableMisraC3 = true;
proj.Configuration.CodingRulesCodeMetrics.MisraC3Subset = misraRules;

См. также polyspace.CodingRulesOptions.

Чтобы включить дефекты Средства поиска Ошибки, используйте класс polyspace.DefectsOptions. Одно различие между кодированием правил и классом дефектов - то, что кодирующие средства проверки правила включены по умолчанию. Вы отключаете тех, что вы не хотите. Все дефектные средства проверки отключены по умолчанию. Вы включаете тем, что вы хотите.

Можно также задать кодирующий стандартный XML-файл, который позволяет кодировать правила из различных стандартов. При проверке на кодирование нарушений правила можно обратиться к файлу. Например, чтобы использовать XML-файл шаблона StandardsConfiguration.xml предоставленный продукт в подпапке polyspace\examples\cxx\Bug_Finder_Example\sources, Введите:

pathToTemplate = fullfile(polyspaceroot,'polyspace','examples',...
    'cxx','Bug_Finder_Example','sources','StandardsConfiguration.xml');
proj.Configuration.CodingRulesCodeMetrics.EnableMisraC3 = true;
proj.Configuration.CodingRulesCodeMetrics.MisraC3Subset = 'from-file';
proj.Configuration.CodingRulesCodeMetrics.EnableCheckersSelectionByFile = true;
proj.Configuration.CodingRulesCodeMetrics.CheckersSelectionByFile = pathToTemplate;

Найдите файлы, которые не компилируют

Если один или несколько ваших файлов содержит ошибку компиляции, анализ продолжает остающиеся файлы. Можно принять решение остановить анализ ошибок компиляции.

Если proj polyspace.Project объект, чтобы остановить анализ ошибок компиляции, введите:

proj.Configuration.EnvironmentSettings.StopWithCompileError = true;

Однако более удобно позволить анализу завершить и получить все ошибки компиляции от аналитического файла журнала. Для получения дополнительной информации смотрите Анализ Polyspace Поиска и устранения неисправностей из MATLAB.

Запустите анализ сервера

Можно запустить анализ удаленного сервера вместо локального рабочего стола. Если вы настроили связь с сервером, можно запустить анализ в пакетном режиме. Дополнительные сведения см. в продуктах Установки для Представления Анализа Polyspace с Рабочих столов на Удаленный сервер.

Укажите, что анализ должен работать на сервере. Задайте папку на своем рабочем столе, где результаты загружаются после анализа. Если proj polyspace.Project объект, чтобы сконфигурировать анализ сервера, введите:

proj.Configuration.MergedComputingSettings.BatchBugFinder = true;
proj.Configuration.ResultsDir = fullfile(pwd,'results');

Запустите анализ, как обычно.

run(proj, 'bugFinder');

Откройте результаты местоположения папки результатов.

pslinkfun('openresults', '-resultsfolder', proj.Configuration.ResultsDir);
Если анализ завершен, и результаты были загружены, они открываются в пользовательском интерфейсе Polyspace.

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

|

Похожие темы