主要内容

polyspaceBugFinder

MATLAB 中运行 Polyspace Bug Finder 分析

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

说明

status = polyspaceBugFinder 打开 Polyspace Bug Finder™

status = polyspaceBugFinder(projectFile)Polyspace Bug Finder 中打开一个 Polyspace 工程文件。

示例

status = polyspaceBugFinder(optsObject) 对 MATLAB® 中的 Polyspace 选项对象运行分析。

注意

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

示例

status = polyspaceBugFinder(projectFile, '-nodesktop') 对 MATLAB 中的 Polyspace 工程文件运行分析。

status = polyspaceBugFinder(resultsFile)Polyspace Bug Finder 中打开一个 Polyspace 结果文件。

status = polyspaceBugFinder('-results-dir',resultsFolder)Polyspace Bug Finder 中的 resultsFolder 打开一个 Polyspace 结果文件。

示例

status = polyspaceBugFinder('-help') 显示选项,这些选项可以提供给 polyspaceBugFinder 命令以运行 Polyspace Bug Finder 分析。

status = polyspaceBugFinder('-sources',sourceFiles) 对在 sourceFiles 中指定的源文件运行 Polyspace Bug Finder 分析。

示例

status = polyspaceBugFinder('-sources',sourceFiles,Name,Value) 使用一个或多个 Name,Value 对组参量指定的附加选项对源文件运行 Polyspace Bug Finder 分析。

注意

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

示例

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

示例

全部折叠

此示例显示了如何从 MATLAB 打开具有扩展名 .psprj 的 Polyspace 工程文件。在此示例中,您从文件夹 polyspaceroot\polyspace\examples\cxx\Bug_Finder_Example 打开工程文件 Bug_Finder_Example.psprj

在 Polyspace 界面中打开工程 Bug_Finder_Example.psprj

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

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

打开 resFolder 的结果。

resFolder = fullfile(polyspaceroot, 'polyspace', 'examples',  ...
         'cxx', 'Bug_Finder_Example', 'Module_1', 'BF_Result');
polyspaceBugFinder('-results-dir',resFolder)

此示例显示了如何使用对象从 MATLAB 命令行运行 Polyspace 分析。

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

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

运行分析并查看结果。

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

此示例显示了如何使用 DOS/UNIX-style 选项在 MATLAB 中运行 Polyspace 分析。

运行分析并打开结果。

sourceFiles = fullfile(polyspaceroot, 'polyspace', 'examples',...
    'cxx', 'Bug_Finder_Example', 'sources', 'numerical.c');
includeFolders = fullfile(polyspaceroot, 'polyspace', 'examples',...
    'cxx', 'Bug_Finder_Example', 'sources');
resultsDir = fullfile(pwd,'results');
polyspaceBugFinder('-sources',sourceFiles, ...
             '-I',includeFolders, ...
             '-results-dir',resultsDir);

要查看结果,请输入:

polyspaceBugFinder('-results-dir',resultsDir);

此示例显示了在 MATLAB 中自定义分析的两种不同方法。您可以通过更改选项对象中的属性或使用名称-值对组,自定义任意数量的附加选项。此处指定了检查 MISRA C™ 2012 编码规则。

创建变量以保存源文件路径和结果文件夹路径。您可以将这些变量用于任一分析方法。

sourceFileName = fullfile(polyspaceroot, 'polyspace','examples', 'cxx', 'Bug_Finder_Example','sources','dataflow.c');
resFolder1 = fullfile('Polyspace_Results_1');
resFolder2 = fullfile('Polyspace_Results_2');

使用选项对象分析编码规则。

opts = polyspace.Options();
opts.Sources = {sourceFileName};
opts.ResultsDir = resFolder1;
opts.CodingRulesCodeMetrics.MisraC3Subset = 'all';
opts.CodingRulesCodeMetrics.EnableMisraC3 = true;
polyspaceBugFinder(opts);
polyspaceBugFinder('-results-dir',resFolder1);

使用 DOS/UNIX 选项分析编码规则。

polyspaceBugFinder('-sources',sourceFileName,'-results-dir',resFolder2,'-misra3','all');
polyspaceBugFinder('-results-dir',resFolder2);

输入参数

全部折叠

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

要创建选项对象,请使用 Polyspace 选项类之一。

示例: opts

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

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

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

数据类型: char

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

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

示例: 'myResults.psbf'

数据类型: char

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

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

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

数据类型: char

以逗号分隔的 C 或 C++ 源文件名称,指定为单个字符向量。

如果文件不在当前文件夹中,则 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 Bug Finder 分析引擎选项的完整列表中的命令行信息部分。

输出参量

全部折叠

如果 Polyspace Bug Finder 分析完成且无错误,则 statusfalse。否则为 true

分析可能因多种原因而失败,包括:

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

  • 您指定的路径无效。

  • 您的某个文件未编译。

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

版本历史记录

在 R2013b 中推出