主要内容

polyspaceCodeProver

MATLAB 运行 Polyspace Code Prover 验证

为了更轻松地编写脚本,请使用 polyspace.Project 对象运行 Polyspace® 分析。

说明

polyspaceCodeProver 打开 Polyspace Code Prover™

status = polyspaceCodeProver(projectFile)Polyspace Code Prover 中打开一个 Polyspace 工程文件。

示例

status = polyspaceCodeProver(optsObject) 对 MATLAB® 中的 Polyspace 选项对象运行验证。

注意

使用 Polyspace 选项对象运行分析时,仅使用 Polyspace 选项对象指定分析选项。第一个参量是 Polyspace 选项对象时,不支持使用名称-值参量。

status = polyspaceCodeProver(projectFile, '-nodesktop') 对 MATLAB 中的 Polyspace 工程文件运行验证。如果您有多个模块或配置,则 Polyspace 将运行活动配置和活动模块。要查看哪个模块和配置处于活动状态,请在 Polyspace 界面中打开工程并查找粗体、选中的模块和配置。要将某个模块或配置更改为活动状态,请在关闭 Polyspace 界面之前选择您要验证的模块和配置。

status = polyspaceCodeProver(resultsFile)Polyspace Code Prover 中打开一个 Polyspace 结果文件。

status = polyspaceCodeProver('-results-dir',resultsFolder)Polyspace Code Prover 中的 resultsFolder 打开一个 Polyspace 结果文件。

示例

status = polyspaceCodeProver('-help') 显示可以提供给 polyspaceCodeProver 命令来运行 Polyspace Code Prover 验证的所有选项。

status = polyspaceCodeProver('-sources',sourceFiles) 对在 sourceFiles 中指定的源文件运行 Polyspace Code Prover 验证。

示例

polyspaceCodeProver('-sources',sourceFiles,Name,Value) 使用一个或多个 Name,Value 对组参量指定的附加选项对源文件运行 Polyspace Code Prover 验证。

注意

在从 MATLAB 中运行 Polyspace 之前,必须将已安装的 Polyspace 与 MATLAB 相关联。请参阅将 Polyspace 与 MATLAB 和 Simulink 集成

示例

[status, jobID] = polyspaceCodeProver(___,'-batch','-scheduler',scheduler) 将分析负载转移到远程集群。其中,scheduler 指定集群的主节点,该节点管理来自多个客户端的分析提交。另请参阅操作集群中的两个作业

示例

MATLAB 打开 Polyspace 工程

此示例显示了如何从 MATLAB 打开具有扩展名 .psprj 的 Polyspace 工程文件。在此示例中,打开工程文件 Code_Prover_Example.psprj

将完整的工程文件路径指定给 MATLAB 变量 prjFile

prjFile = fullfile(polyspaceroot, 'polyspace', 'examples', 'cxx', ...
         'Code_Prover_Example', 'Code_Prover_Example.psprj');

打开该工程。

polyspaceCodeProver(prjFile)

MATLAB 打开 Polyspace 结果

此示例显示了如何从 MATLAB 打开一个 Polyspace 结果文件。在此示例中,您从文件夹 polyspaceroot\polyspace\examples\cxx\Code_Prover_Example\Module_1\CP_Result 打开结果文件。

将完整的文件夹路径指定给 MATLAB 变量 resFolder

resFolder = fullfile(polyspaceroot, 'polyspace', 'examples', ...
       'cxx', 'Code_Prover_Example', 'Module_1', 'CP_Result');

打开结果。

polyspaceCodeProver('-results-dir',resFolder)

使用选项对象运行 Polyspace 验证

此示例显示了如何使用对象在 MATLAB 中运行 Polyspace 验证。

创建一个选项对象并将源文件和包含文件夹添加到属性中。

opts = polyspace.Options;
opts.Sources = {fullfile(polyspaceroot, 'polyspace', 'examples',...
    'cxx', 'Code_Prover_Example', 'sources', 'single_file_analysis.c')};
opts.EnvironmentSettings.IncludeFolders = {fullfile(polyspaceroot, 'polyspace', 'examples',...
    'cxx', 'Code_Prover_Example', 'sources')};
opts.ResultsDir = fullfile(pwd,'results');

运行验证并查看结果。

polyspaceCodeProver(opts);
polyspaceCodeProver('-results-dir',opts.ResultsDir)

使用 DOS/UNIX 选项从 MATLAB 运行 Polyspace 验证

此示例显示了如何使用 DOS/UNIX 样式的选项在 MATLAB 中运行 Polyspace 验证。

运行分析并打开结果。

sourceFiles = fullfile(polyspaceroot, 'polyspace', 'examples',...
    'cxx', 'Code_Prover_Example', 'sources', 'single_file_analysis.c');
includeFolders = fullfile(polyspaceroot, 'polyspace', 'examples',...
    'cxx', 'Code_Prover_Example', 'sources');
resultsDir = fullfile(pwd,'results');
polyspaceCodeProver('-sources',sourceFiles, ...
             '-I',includeFolders, ...
             '-results-dir',resultsDir,...
             '-main-generator');
polyspaceCodeProver('-results-dir',resultsDir);

运行带编码规则检查的 Polyspace 验证

此示例显示了在 MATLAB 中自定义验证的两种不同方法。您可以通过更改选项对象中的属性或使用名称-值对组,自定义任意数量的附加选项。您可以指定检查 MISRA C™ 2012 编码规则,从编码规则检查中排除头文件,并生成 main。

为源文件路径、包含文件夹路径和结果文件夹路径创建变量,以便可以将其用于任一分析方法。

sourceFileName = fullfile(polyspaceroot, 'polyspace','examples', 'cxx', 'Code_Prover_Example','sources','example.c');
includeFileName = fullfile(polyspaceroot, 'polyspace','examples', 'cxx', 'Code_Prover_Example','sources','include.h');
resFolder1 = fullfile('Polyspace_Results_1');
resFolder2 = fullfile('Polyspace_Results_2');

使用选项对象验证编码规则。

opts = polyspace.Options('C');
opts.Sources = {sourceFileName};
opts.EnvironmentSettings.IncludeFolders = {includeFileName};
opts.ResultsDir = resFolder1;
opts.CodingRulesCodeMetrics.MisraC3Subset = 'mandatory';
opts.CodingRulesCodeMetrics.EnableMisraC3 = true;
opts.CodeProverVerification.EnableMain = true;
opts.InputsStubbing.DoNotGenerateResultsFor = 'all-headers';
polyspaceCodeProver(opts);
polyspaceCodeProver('-results-dir',resFolder1);

使用 DOS/UNIX 选项验证编码规则。

polyspaceCodeProver('-sources',sourceFileName,...
     '-I',includeFileName, ...
     '-results-dir',resFolder2,...
     '-misra3','mandatory',...
     '-do-not-generate-results-for','all-headers',...
     '-main-generator');
polyspaceCodeProver('-results-dir',resFolder2);

输入参数

全部折叠

Polyspace 选项对象名称,指定为对象句柄。

要创建选项对象,请使用以下 Polyspace 选项类之一:polyspace.Optionspolyspace.ModelLinkOptions

示例: opts

具有 .psprj 扩展名的工程文件名称,指定为字符向量。

如果文件不在当前文件夹中,则 projectFile 必须包含完整路径或相对路径。要标识当前文件夹,请使用 pwd。要更改当前文件夹,请使用 cd

示例: 'C:\Polyspace_Projects\myProject.psprj'

具有 .pscp 扩展名的结果文件名称,指定为字符向量。

如果文件不在当前文件夹中,则 resultsFile 必须包含完整路径或相对路径。

示例: 'myResults.pscp'

结果文件夹的名称,指定为字符向量。该文件夹必须包含扩展名为 .pscp 的结果文件。如果结果文件位于指定文件夹的子文件夹中,则此命令不会打开结果文件。

如果文件夹不在当前文件夹中,则 resultsFolder 必须包含完整路径或相对路径。

示例: 'C:\Polyspace\Results\'

以逗号分隔的、扩展名为 .c.cpp 的源文件名称,指定为单个字符向量。

如果文件不在当前文件夹中,则 sourceFiles 必须包含完整路径或相对路径。

示例: 'myFile.c', 'C:\mySources\myFile1.c,C:\mySources\myFile2.c'

名称-值参数

将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

在 R2021a 之前,使用逗号分隔每个名称和值,并将 Name 用引号引起来。

示例: '-target','i386','-compiler','gnu4.6' 指定该源代码用于 i386 处理器,并包含 GCC 4.6 编译器的非 ANSI C 语法。

有关分析选项的完整列表,请参阅Polyspace Code Prover 分析选项的完整列表

输出参量

全部折叠

如果 Code Prover 验证完成且无错误,则 statusfalse。否则为 true

验证可能因多种原因而失败,包括:

  • 您提供了不存在的源文件、工程文件或结果文件。

  • 您指定的路径无效。

  • 您的某个文件未编译。

如果您将 Polyspace 分析负载转移到远程集群,则该命令将返回与远程集群上提交的分析关联的作业的 ID。您可以使用此 ID 管理作业或在作业完成后下载分析结果。另请参阅 polyspaceJobsManager

版本历史记录

在 R2013b 中推出