Запустите анализ 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
объект orpolyspace.CodeProverResults
Объект (Polyspace Code Prover).
Чтобы считать результаты, используйте эти методы 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'); resObj = proj.Results; resTable = getSummary(resObj, 'defects');
Для получения дополнительной информации смотрите 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'); resObj = proj.Results; resTable = getResults(resObj, 'readable');
Для получения дополнительной информации смотрите 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 resObj = proj.Results; bfSummary = getSummary(resObj, '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 resObj = proj.Results; cpSummary = getSummary(resObj, '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 resObj = proj.Results; defectsSummary = getSummary(resObj, 'defects'); misraSummary = getSummary(resObj, 'misraC2012');
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.