Запустите анализ 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
resObj = proj.Results;
bfSummary = getSummary(resObj, '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];
Однако этот метод исключения не применяется к проверке ошибки времени выполнения Code Prover.

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

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

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

Если proj polyspace.Project объект, чтобы запустить анализ Bug Finder со всем обязательным 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
resObj = proj.Results;
misraSummary = getSummary(resObj, '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.

Чтобы включить дефекты Bug Finder, используйте класс 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.

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

|

Похожие темы