你的代码敢上Polyspace跑吗?

Polyspace代码验证

0?wx_fmt=gif

嵌入式代码动态验证

在嵌入式开发中,代码静态分析工具相信大家应该都熟悉,都用过像PClint,understand C等,但对于动态验证,运行时错误验证工具还是不多,今天给大家介绍一款代码运行错误动态验证工具---Polyspace,本人有幸使用过这款优秀的软件,绝对不是广告噢呵呵,有兴趣的猿友可以到mathwork官网下载使用版,对你的代码进行验证,让你的代码更安全,更规范。Polyspace 目前已经被Mathwork 纳入麾下,称为mathwrok旗下的产品,如果各位以前用过matlab的话应该对mathwrok公司不陌生,Polyspace 分为Polyspace Code Prover 与 Polyspace Bug Finder两部分,可以结合使用。可以到mathwork官网搜索Polyspace下载试用版如下图所示:

0?wx_fmt=jpeg

Polyspace Code Prover™ 可以证明 C 和 C++ 源代码中不存在溢出、被零除、数组访问超出边界以及其他某些运行时错误。整个过程无需执行程序、植入代码,也不需要测试用例。Polyspace Code Prover 使用静态分析和基于形式化方法的抽象释义。该程序可以用于手写代码、生成的代码或二者的混合。每项操作均采用颜色标记,分别表示代码无运行时错误、已证明失效、无法达到或未经证明。

Polyspace Code Prover 还会显示变量和函数返回值的范围信息,并可以证明变量是否超出指定范围限制。这些结果可以发布到控制面板上,以跟踪质量指标并确保符合软件质量目标。Polyspace Code Prover 可以集成到构建系统中以执行自动验证。

  • 主要特性

  • 验证 C 和 C++ 嵌入式软件

  • 检测运行时错误

  • 查看范围信息

  • 跟踪软件质量指标

  • 依据代码验证结果回溯至 Simulink 模型

  • 实现代码验证流程自动化

  • 创建认证工件

检测运行时错误

Polyspace Code Prover 将抽象释义与静态代码分析结合使用,以识别和诊断溢出、被零除和指针越界等运行时错误。这项技术可以完整而全面验证所有运行时情况,并为每项代码自动提供诊断报告,包括已证明、已失败、无法达到或未经证明诊断。在 Polyspace Code Prover 生成的验证结果中,每一项 C 或 C++ 运算均采用颜色编码表示其状态:

绿色: 已证明没有运行时错误红色:已证明在每次运行时都有错误灰色:已证明无法达到(可能表示存在功能性问题)橙色:未经证明,在某些情况下可能有错

跟踪软件质量指标

您可以定义一个集中式的质量模型,来跟踪运行时错误、代码复杂度和编码违规。使用这些指标,可以在代码从首次迭代到最终交付的完善过程中,持续跟踪预定义的软件质量目标。通过衡量代码质量改进率,Polyspace Code Prover 使开发人员、测试人员和项目经理能够致力于编写和交付高质量的代码。

实现代码验证流程自动化

通过将 Polyspace 整合到构建流程中,您可以将 Polyspace Code Prover 作为持续集成流程的一部分。您可以自动调度验证作业并设置电子邮件通知。您可以配置Polyspace Code Prover 将验证作业发布到集群计算机(使用 MATLAB Distributed Computing Server),并发送电子邮件通知结果。结果包含与上一版本代码的差异。这些差异由服务器自动计算。

您可以定义分析的频率、定义质量模型,指定需要分析的代码部分,以及接收结果的用户电子邮件地址。此外,您还可以定义自动验证需要涵盖构建过程的哪些特性。

Polyspace 可以生成各种格式的文档,如PDF, wrod,Html等等,方便归档汇报。还可以远程访问。最终生成的报告和结果 会显示代码的最终质量、高亮显示已审查的部分、生成代码指标、记录所使用的编码规则以及运行时错误状态。您可以将报告发布为 PDF、HTML、RTF 以及其他格式。

嵌入式

程序猿

微信号:InterruptISR

嵌入式程序猿致力于打造程序猿工程师交流分享的精品移动平台,欢迎各位猿友加入和分享。微信搜索嵌入式程序猿添加关注,或者长按下方二维码,选择识别图中二维码添加关注。

0?wx_fmt=jpeg

<think>嗯,用户这次的问题非常明确,聚焦在Polyspace Code Prover和Access组件的依赖关系上。从上下文看,用户应该是嵌入式领域的工程师,正在搭建代码验证环境,对工具链的部署细节有精准需求。 注意到用户特别要求参考站内引用,尤其是之前对话中关于产品组件的描述。引用[1]明确列出了Code Prover包含的三个子产品,其中Access是独立列出的。这个细节很关键——产品文档将Access作为单独组件列出,暗示它并非内核必选项。 用户可能遇到的实际场景是:在资源受限的服务器或隔离环境中部署时,希望最小化安装组件。ta特意强调"是否必须安装",说明对安装 footprint 敏感。有趣的是,上次回答中我提到Access用于协作场景时,用户立即捕捉到这个条件限制,展现出很强的技术判断力。 技术层面需要澄清两点本质区别:Code Prover的运行时引擎是独立的C/C++分析器,核心验证算法完全不依赖Access;而Access本质是Web服务中间件,只在需要集中化管理时才介入。这个分离架构在MathWorks文档[^2][^3]中都有体现。 安全相关的考量是:如果用户做的是单次本地验证(例如为安全认证生成证据),Access反而会增加攻击面。航空航天领域的客户尤其关注这点,他们常要求air-gapped环境运行Code Prover。 最后要注意平衡表述——虽然强调非必需,但也不能贬低Access的价值。它在团队协作中的优势是实实在在的,比如引用[3]提到的多项目分析结果管理。因此补充说明适用场景就很有必要,这与用户之前询问R2024b兼容性时体现的系统思维是一致的。 </think>运行 **Polyspace Code Prover** 是否必须安装 **Polyspace Access**?答案是否定的: **Polyspace Code Prover 可在不安装 Access 的情况下独立运行**,但需根据使用场景区分其必要性。以下是关键结论: --- ### 一、非必需场景(本地独立运行) 1. **本地单机分析** - 若仅需在本地验证代码(如桌面级形式化验证),**Code Prover 可直接执行分析任务** - 分析结果保存在本地(`.pscp` 文件),可通过 **Polyspace Desktop UI** 查看[^3][^4] - 示例命令无需 Access 介入: ```bash polyspace-code-prover -sources file.c -target compiler_config.m ``` 2. **结果本地管理** - 橙色检查(Orange Checks)、缺陷报告等均在本地生成,无需上传至服务器[^4] - **结果文件夹结构**(引用[2])完全独立于 Access: ``` results/ ├── analysis_log.txt ├── defects_report.html └── verification_results.pscp ``` --- ### 二、必需场景(团队协作与高级功能) 1. **集中化管理需求** - 需跨团队共享结果、跟踪问题状态时,必须通过 **Access 建立中央服务器**[^1][^2] - Access 提供 Web 界面实现: - 结果对比(基线 vs 新提交) - 缺陷分配与工作流跟踪 - 自定义仪表盘生成 2. **分布式计算支持** - 使用 **Code Prover Server™** 卸载计算任务到集群时,需 Access 协调资源分配[^1][^2] 3. **企业级合规性要求** - 审计场景需通过 Access 生成**标准化验证报告**(如 ISO 26262/DO-178C)[^1] --- ### 三、安装决策指南 | **使用场景** | **是否需 Access** | **替代方案** | |---------------------------|------------------|--------------------------| | 开发者本地验证 | ❌ 不需要 | 本地 Desktop UI 查看结果 | | 团队协作与代码审查 | ✅ 必须 | 无直接替代方案 | | 大型项目分布式分析 | ✅ 必须 | 手动合并本地结果(低效) | | 安全认证文档生成 | ✅ 必须 | 手动整理报告(高风险) | > **总结**: > - **基础验证功能**:Polyspace Code Prover 无需 Access 即可独立运行[^3][^4] > - **高级协作与自动化**:Access 是必需组件,尤其对需要集中化结果管理、审计追溯或分布式计算的团队[^1][^2] --- **
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值