Main Content

MATLAB Coder 生成的 C/C++ 代码的 Polyspace 验证

要检查从 MATLAB® 代码生成的 C/C++ 代码中的运行时错误,您可以使用 Polyspace® Code Prover™。要检查缺陷,您可以使用 Polyspace Bug Finder™。如果您有 Polyspace 和 Embedded Coder®,则 Polyspace 会集成到 MATLAB Coder™ 工作流中。

  • MATLAB Coder 中,您无需额外设置即可运行 Polyspace 分析。

  • 在命令行中,在使用 codegen 生成代码后,您可以通过向 pslinkrun (Polyspace Bug Finder) 提供代码生成输出文件夹对生成的代码运行 Polyspace 分析。

MATLAB Coder 中运行 Polyspace 分析

  1. 生成独立的 C/C++ 代码(静态库、动态链接库或可执行程序)。

  2. 生成代码页上,点击 Polyspace

  3. 选择选项。请参阅在 MATLAB Coder 中配置高级 Polyspace 选项 (Polyspace Code Prover)

  4. 点击运行

    该 App 在 Polyspace 日志选项卡上记录分析输出并打开 Polyspace 用户界面。

对由 codegen 生成的代码运行 Polyspace 分析

  1. 创建一个 pslinkoptions 对象,用于验证由 MATLAB Coder 生成的代码。

  2. 根据需要,更改对象属性:

    • ResultDir 属性中,指定用于存储 Polyspace 结果的文件夹的名称。

    • VerificationMode 属性中,指定 Polyspace 验证产品。

  3. 使用 pslinkrun 运行验证。提供 pslinkoptions 对象和包含生成代码的文件夹。

  4. 要查看验证结果,请打开 Polyspace 用户界面。

例如,假设您为 MATLAB 函数 myFunction 生成了静态库,并且代码生成输出文件夹是 codegen/lib/myFunction。要对生成的代码运行 Polyspace Code Prover,请使用以下代码:

opts = pslinkoptions('codegen');
opts.ResultDir = 'polyspace';
opts.VerificationMode = 'CodeProver';
pslinkrun('-codegenfolder', 'codegen/lib/myFunction', opts);
polyspaceCodeProver('polyspace/myFunction.psprj');

您还可以将 VerificationMode 属性设置为 'BugFinder',并使用 polyspaceBugFinder 查看验证结果。

查看分析结果

在 Polyspace 用户界面的结果列表窗格中,查看运行时检查。看看您能否将问题追溯到最初的 MATLAB 代码。请参阅Interactively Trace Between MATLAB Code and Generated C/C++ Code

例如,C 代码中的运算可能导致溢出,因为 Polyspace 假设函数输入的范围为无界。请考虑对输入指定约束,并用 Polyspace 重新分析代码。请参阅对从 MATLAB 代码生成的 C/C++ 代码运行 Polyspace (Polyspace Code Prover)

另请参阅

(Polyspace Code Prover) | (Polyspace Code Prover)

相关主题