Запустите анализ 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
объект. Объект имеет свойства, соответствующие опциям анализа. Для получения дополнительной информации об этих свойствах см. Полипространство. Строения.
Можно сохранить опции по умолчанию или изменить их одним из следующих способов:
Установите язык исходного кода на '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 slbuild(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 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.