Запустите анализ Polyspace C и Кода С++ и считайте результаты
Запустите анализ Polyspace® C и исходных файлов C++ при помощи этого объекта MATLAB®. Чтобы задать исходные файлы и настроить аналитические опции, используйте Configuration
свойство. Чтобы запустить анализ, используйте run
метод. Чтобы считать результаты после анализа, используйте Results
свойство.
Прежде чем вы запустите Polyspace из MATLAB, необходимо соединить Polyspace и установки MATLAB. Смотрите Интегрируют Polyspace с MATLAB и Simulink.
proj = polyspace.Project
создает объект, который можно использовать, чтобы сконфигурировать и запустить анализ Polyspace, и затем считать результаты анализа.
Configuration
— Аналитические опцииpolyspace.Options
объектОпции для рабочего анализа Polyspace, реализованного как polyspace.Options
объект. Объект имеет свойства, соответствующие аналитическим опциям. Для получения дополнительной информации о тех свойствах смотрите polyspace.Project.Configuration Properties.
Можно сохранить опции по умолчанию или изменить их одним из этих способов:
Установите язык исходного кода на 'C
', 'CPP
', или 'C-CPP
'(значение по умолчанию). Некоторые аналитические опции не могут быть доступными в зависимости от установки языка объекта.
proj=polyspace.Project;
proj.Configuration=polyspace.Options('C');
Измените свойства непосредственно.
proj = polyspace.Project;
proj.Configuration.TargetCompiler.Compiler = 'gnu4.9';
Получите опции из другого polyspace.Project
объект.
proj1 = polyspace.Project;
proj1.Configuration.TargetCompiler.Compiler = 'gnu4.9';
proj2 = proj1;
Чтобы использовать общие аналитические опции через несколько проектов, следуйте за этим подходом. Например, вы хотите снова использовать все опции и изменить только исходные файлы.
Получите опции из проекта, созданного в пользовательском интерфейсе десктопных решений Polyspace (.psprj
файл).
proj = polyspace.Project; projectLocation = fullfile(polyspaceroot, 'polyspace', ... 'examples', 'cxx', 'Bug_Finder_Example', 'Bug_Finder_Example.psprj') proj.Configuration = polyspace.loadProject(projectLocation);
Чтобы определить оптимальный набор опций, установите свои опции в пользовательском интерфейсе и затем импортируйте их к polyspace.Project
объект. В пользовательском интерфейсе можно получить доступ к справке от функций, таких как Ассистент Компиляции и получить справку подсказки на опциях.
Получите опции из модели Simulink® (применяется только к десктопным решениям Polyspace). Прежде, чем получить опции, сгенерируйте код из модели.
modelName = 'rtwdemo_roll'; load_system(modelName); % Set parameters for Embedded Coder target set_param(modelName, 'SystemTargetFile', 'ert.tlc'); set_param(modelName,'Solver','FixedStepDiscrete'); set_param(modelName,'SupportContinuousTime','on'); set_param(modelName,'LaunchReport','off'); set_param(modelName,'InitFltsAndDblsToZero','on'); if exist(fullfile(pwd,'rtwdemo_roll_ert_rtw'), 'dir') == 0 rtwbuild(modelName); end % Obtain configuration from model proj = polyspace.Project; proj.Configuration = polyspace.ModelLinkOptions(modelName);
Используйте опции, чтобы анализировать код, сгенерированный из модели.
Results
— Результаты анализаpolyspace.BugFinderResults
или polyspace.CodeProverResults
объектРезультаты анализа Polyspace. Когда вы создаете polyspace.Project
объект, это свойство первоначально пусто. Свойство заполняется только после того, как вы выполните run
метод объекта. В зависимости от аргумента к run
метод, 'bugFinder'
или 'codeProver'
, свойство реализовано как polyspace.BugFinderResults
или polyspace.CodeProverResults
объект.
Чтобы считать результаты, используйте эти методы polyspace.BugFinderResults
или polyspace.CodeProverResults
объект:
getSummary
: Получите итоговый формат результатов в таблицу MATLAB.
proj = polyspace.Project; proj.Configuration.Sources = {fullfile(polyspaceroot, 'polyspace', 'examples',... 'cxx', 'Code_Prover_Example', 'sources', 'single_file_analysis.c')}; proj.Configuration.ResultsDir = fullfile(pwd,'results'); run(proj, 'bugFinder'); resTable = proj.Results.getSummary('defects');
Для получения дополнительной информации смотрите getSummary
или getSummary
.
getResults
: Получите полные результаты или более читаемый формат в таблицу MATLAB.
proj = polyspace.Project; proj.Configuration.Sources = {fullfile(polyspaceroot, 'polyspace', 'examples',... 'cxx', 'Code_Prover_Example', 'sources', 'single_file_analysis.c')}; proj.Configuration.ResultsDir = fullfile(pwd,'results'); run(proj, 'bugFinder'); resTable = proj.Results.getResults('readable');
Для получения дополнительной информации смотрите getResults
или getResults
.
run | Запустите анализ Polyspace |
Запустите анализ Polyspace Bug Finder™ файла в качестве примера numerical.c
. Сконфигурируйте эти опции:
Задайте GCC 4.9 как свой компилятор.
Сохраните результаты в results
подпапка текущей рабочей папки.
proj = polyspace.Project % Configure analysis proj.Configuration.Sources = {fullfile(polyspaceroot, 'polyspace', ... 'examples', 'cxx', 'Bug_Finder_Example', 'sources', 'numerical.c')}; proj.Configuration.TargetCompiler.Compiler = 'gnu4.9'; proj.Configuration.ResultsDir = fullfile(pwd,'results'); % Run analysis bfStatus = run(proj, 'bugFinder'); % Read results bfSummary = proj.Results.getSummary('defects');
Запустите анализ Polyspace Code Prover™ файла в качестве примера single_file_analysis.c
. Сконфигурируйте эти опции:
Задайте GCC 4.9 как свой компилятор.
Сохраните результаты в results
подпапка текущей рабочей папки.
Укажите что main
функция должна быть сгенерирована, если функция не существует в исходном коде.
proj = polyspace.Project % Configure analysis proj.Configuration.Sources = {fullfile(polyspaceroot, 'polyspace', 'examples',... 'cxx', 'Code_Prover_Example', 'sources', 'single_file_analysis.c')}; proj.Configuration.TargetCompiler.Compiler = 'gnu4.9'; proj.Configuration.ResultsDir = fullfile(pwd,'results'); proj.Configuration.CodeProverVerification.MainGenerator = true; % Run analysis cpStatus = run(proj, 'codeProver'); % Read results cpSummary = proj.Results.getSummary('runtime');
Запустите анализ Polyspace Bug Finder файла в качестве примера single_file_analysis.c
. Сконфигурируйте эти опции:
Задайте GCC 4.9 как свой компилятор.
Сохраните результаты в results
подпапка текущей рабочей папки.
Позвольте проверять правил MISRA C®:2012. Проверяйте на императивные нормы только.
proj = polyspace.Project % Configure analysis proj.Configuration.Sources = {fullfile(polyspaceroot, 'polyspace', ... 'examples', 'cxx', 'Bug_Finder_Example', 'sources', 'numerical.c')}; proj.Configuration.TargetCompiler.Compiler = 'gnu4.9'; proj.Configuration.ResultsDir = fullfile(pwd,'results'); proj.Configuration.CodingRulesCodeMetrics.EnableMisraC3 = true; proj.Configuration.CodingRulesCodeMetrics.MisraC3Subset = 'mandatory'; % Run analysis bfStatus = run(proj, 'bugFinder'); % Read results defectsSummary = proj.Results.getSummary('defects'); misraSummary = proj.Results.getSummary('misraC2012');
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.