polyspace.Project
对 C 和 C++ 代码运行 Polyspace 分析并查看结果
说明
使用此 MATLAB® 对象对 C 和 C++ 源文件运行 Polyspace® 分析。要指定源文件和自定义分析选项,请使用 Configuration
属性。要运行分析,请使用 run
方法。要读取分析后的结果,请使用 Results
属性。
注意
在从 MATLAB 中运行 Polyspace 之前,必须将已安装的 Polyspace 与 MATLAB 相关联。请参阅将 Polyspace 与 MATLAB 和 Simulink 集成或将 Polyspace Server 产品与 MATLAB 集成。
创建对象
proj = polyspace.Project
创建一个对象,您可以使用该对象来配置和运行 Polyspace 分析,然后读取分析结果。
属性
运行 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 = 'model'; 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'); % Generate code slbuild(modelName); % Obtain configuration from model proj = polyspace.Project; proj.Configuration = polyspace.ModelLinkOptions(modelName);
使用选项分析从模型生成的代码。
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 | Run a Polyspace analysis |
示例
对示例文件 numerical.c
运行 Polyspace Bug Finder™ 分析。配置以下选项:
指定 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');
对示例文件 single_file_analysis.c
运行 Polyspace Code Prover™ 分析。配置以下选项:
指定 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');
对示例文件 single_file_analysis.c
运行 Polyspace Bug Finder 分析。配置以下选项:
指定 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, 'codingStandards');
版本历史记录
在 R2017b 中推出
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)