对从 MATLAB 代码生成的 C/C++ 代码运行 Polyspace
从 MATLAB® 代码生成 C/C++ 代码后,您可以独立地检查生成的代码是否存在以下情况:
Bug 或缺陷和编码违规:使用 Polyspace® Bug Finder™。
运行时错误:使用 Polyspace Code Prover™。
无论您是使用 MATLAB Coder™ 还是使用 codegen 命令来生成代码,您都可以遵循相同的工作流来检查生成的代码。
前提条件
要运行本教程,需要满足以下条件:
您必须拥有 Embedded Coder® 许可证。MATLAB Coder 不会显示用于运行 Polyspace 的选项,除非您拥有 Embedded Coder 许可证。
您必须熟悉如何打开和使用 MATLAB Coder 或
codegen命令。否则,请参阅 MATLAB Coder 快速入门。您必须将 Polyspace 与 MATLAB 安装相关联。请参阅将 Polyspace 与 MATLAB 和 Simulink 集成。
示例文件
本教程使用 中的 MATLAB Coder 示例 polyspaceroot\polyspace\examples\doc_cxx\matlab_coderaveraging_filter。其中, 是 Polyspace 的安装文件夹,例如 polyspacrootC:\Program Files\Polyspace\R2024b。此示例显示了 Code Prover 的分析。对于 Bug Finder,您可以遵循类似的工作流。
运行 Polyspace 分析
在 MATLAB Coder 中,从 M 文件 averaging_filter 生成代码并分析生成的代码。
要打开 MATLAB Coder,请在 MATLAB 工具条中的 App 选项卡的代码生成下,点击 MATLAB Coder 图标。
在 MATLAB Coder 中生成独立的 C/C++ 代码(静态库、动态链接库或可执行程序):
在选择源文件页面上,导航到文件夹
并添加 M 文件polyspaceroot\polyspace\examples\doc_cxx\matlab_coderaveraging_filter。函数averaging_filter会被自动检测为代码生成的入口函数。如果 M 文件位于只读位置,则该 App 可能会提示您将底层 MATLAB Coder 工程保存在可写位置。选择另存为以将工程保存在可写位置。
在定义输入类型页面上,指定输入的数据类型。在此示例中,函数
averaging_filter只有一个输入。您可以选择让我直接输入或输入全局类型,然后输入一个double类型的 1 X 100 向量您可以跳过检查运行时问题页面(在常规工作流中,您将提供测试文件、生成 MEX 文件并检查运行时问题)。
在生成代码页面上,选择以下选项:
编译类型:源代码
语言:C
硬件板设备:MATLAB 主机
工具链:自动定位已安装的工具链
点击生成按钮。
生成代码后,要分析生成的代码,请点击页面右上角的 Polyspace。在 Polyspace 页面上,点击运行。

如果分析完成且无错误,则 Polyspace 结果会自动打开。
如果您关闭结果,则可以从该 App 中的最终页面重新打开它们(位于生成的输出部分下)。结果存储在
results_averaging_filter子文件夹中,该文件夹位于包含 MATLAB Coder 工程的文件夹中。
要为前面的工作流编写脚本,请运行:
% Generate code matlabFileName = fullfile(polyspaceroot, 'polyspace',... 'examples','doc_cxx','matlab_coder','averaging_filter.m'); codegenFolder = fullfile(pwd, 'codegenFolder'); codegen(matlabFileName, '-config:lib', '-c', '-args', ... {zeros(1,100,'double')}, '-d', codegenFolder); % Configure Polyspace analysis opts = pslinkoptions('ec'); opts.ResultDir = [tempdir 'results']; opts.OpenProjectManager = 1; % Run Polyspace [polyspaceFolder, resultsFolder] = pslinkrun('-codegenfolder', codegenFolder, opts);