主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

Polyspace 编码规范支持

Polyspace® Bug Finder™ 和 Polyspace as You Code® 支持多种编码标准。通过在 IDE 中分析各个翻译单元,然后在集成期间分析整个源代码,检查代码是否符合这些标准。Polyspace as You Code 支持 Bug Finder 支持的部分规则。请参阅Checkers Deactivated in Polyspace as You Code Analysis (Polyspace Access)

Polyspace 支持摘要

标准版本静态可执行规则必需或强制规则
MISRA C++:20232023 年 10 月156 条可判定规则(标准中共 156 条)。

  • 5 条强制规则(共 5 条)

  • 124 条必需规则(共 124 条)。

AUTOSAR C++142018 年 10 月 31 日349 条规则(标准中共 349 条)。337 条规则(标准中共 362 条)。
MISRA C++:20082008 年 6 月 a 195 条规则(标准中共 198 条)。
MISRA C:20232023 年 4 月141 条规则(标准中共 149 条)。146 条规则(标准中共 160 条)。
CERT C2016120 条规则(标准中共 120 条)120 条规则(标准中共 120 条)
MISRA C:2012

  • 2013 年 3 月

  • 2016 年 4 月 (Amendment 1)

  • 2017 年 6 月 (TC1)

  • 2018 年 1 月 (Amendment 2)

  • 2022 年 3 月 (TC2)

  • 2022 年 10 月 (Amendment 3)

141 条规则(标准中共 149 条)。146 条规则(标准中共 160 条)。

a MISRA C++:2008 standard does not categorize rules based on their static enforceability

编码规范根据规则的更性级别或静态强制执行情况对规则进行分类。Polyspace 支持被规范视为不可强制或部分可强制执行的规则。执行这些规则需要人工审查流程,Polyspace 结果可为此提供帮助。

MISRA C++:2023

MISRA C++:2023 标准将规范分为规则和指令两类。

MISRA C++:2023 规则

规则是一种可以完全描述的规范。对规则的遵守情况可以进行静态检查,但存在一定限制。规则根据不同的属性进一步分类。

硬性级别

类别在 Bug Finder 中实现的规则标准中的规则
强制:这些是合规 C 代码必须遵守的规范。该标准不允许偏离这些规范。55
必需:这些是合规 C 代码必须遵守的规范。该标准仅允许您正式记录并授权的偏离。122122
建议:这些是建议规范。该标准允许在无正式记录的情况下偏离这些规范。最佳做法是,在合理范围内遵守这些规范,并记录偏离情况。4848
 总计:175175

合规 C++ 代码必须遵守强制必需规则。Polyspace 支持这两种类别的所有规则。

静态可执行性

类别在 Bug Finder 中实现的规则标准中的规则
可判定:如果静态分析工具能够在所有可能的情况下检查规则的遵守情况,则该规则是可判定的。155155
不可判定:如果静态分析工具只能在某些情况下检查规则的遵守情况,则该规则是不可判定的。Polyspace 仅显示所有可能问题的一个子集。有关 Polyspace 针对特定规则检测哪些问题的详细信息,请参阅该规则参考页面中的 Polyspace 实现部分。2020

有关 Polyspace 对可判定 MISRA 编码规则支持的详细信息,请参阅Polyspace Bug Finder 支持的可判定 MISRA 编码规则

MISRA C++:2023 指令

指令是无法完全描述的规范。除了代码之外,还需要更多信息来检查这些指令的遵守情况。静态分析可能有助于检查代码指令的遵守情况。指令根据硬性级别进行分类。

硬性级别

类别在 Bug Finder 中实现的指令标准中的指令
必需:这些是合规 C 代码必须遵守的规范。该标准仅允许您正式记录并授权的偏离。22
建议:这些是建议规范。该标准允许在无正式记录的情况下偏离这些规范。最佳做法是,在合理范围内遵守这些规范,并记录偏离情况。22

静态可执行性

类别在 Bug Finder 中实现的指令标准中的指令
可判定:如果静态分析工具能够在所有可能的情况下检查指令的遵守情况,则该指令是可判定的。11
不可判定:如果静态分析工具只能在某些情况下检查指令的遵守情况,则该指令是不可判定的。Polyspace 仅显示所有可能问题的一个子集。有关 Polyspace 针对特定指令检测哪些问题的详细信息,请参阅该指令参考页面中的 Polyspace 实现部分。33

AUTOSAR C++14

AUTOSAR C++14 标准根据规则的更性级别和通过静态分析进行的强制执行情况对规则进行分类。

硬性级别

类别在 Bug Finder 中实现的规则标准中的规则
必需:代码必须遵守的规则。337362
建议:建议代码在实际可行范围内遵守的规则。3335
 总计:370 

通过静态分析工具强制执行

类别在 Bug Finder 中实现的规则标准中的规则
自动:静态分析工具可以检测所有违规情况。327327a
半自动化:静态分析工具无法检测到所有可能的违规情况。您需要手动代码审查或其他工具来强制执行这些规则。Polyspace 仅显示所有可能问题的一个子集。有关 Polyspace 针对特定规则检测哪些问题的详细信息,请参阅该规则参考页面中的 Polyspace 实现部分。2222
非自动:静态分析工具无法检测到所有可能的违规情况。您需要手动代码审查或其他工具来强制执行这些规则。Polyspace 仅显示所有可能问题的一个子集。有关 Polyspace 针对特定规则检测哪些问题的详细信息,请参阅该规则参考页面中的 Polyspace 实现部分。2146

a The AUTOSAR C++14 standard contains 329 Automated rules. The rules A0-4-3 and A1-4-3 are not enforceable by a static analysis tool. These rules might be enforced by a compiler.

自动半自动规则是可静态强制执行的规则。Polyspace 共支持 349 条静态强制执行的规则和 337 条必需规则。请参阅:

MISRA C++:2008

MISRA C++:2008 标准根据规则的硬性级别对规则进行分类。

类别在 Bug Finder 中实现的规则标准中的规则
必需:代码必须遵守的规则。195198
建议:建议代码在实际可行范围内遵守的规则。1818
文档:这些规则与不同的功能相关,包括 #pragmas、浮点算术或位字段。每次使用这些功能时,代码必须遵守相应的规则。112
 总计:214 

请参阅Required or Mandatory MISRA Coding Rules Supported by Polyspace Bug Finder

MISRA C:2023

MISRA C:2023 标准将规范分为规则和指令两类。Polyspace 对 MISRA C:2012 标准的支持与对 MISRA C:2023 标准的支持完全相同。

MISRA C:2023 规则

规则是一种可以完全描述的规范。对规则的遵守情况可以进行静态检查,但存在一定限制。规则根据不同的属性进一步分类。

硬性级别

类别在 Bug Finder 中实现的规则标准中的规则
强制:这些是合规 C 代码必须遵守的规范。该标准不允许偏离这些规范。1823
必需:这些是合规 C 代码必须遵守的规范。该标准仅允许您正式记录并授权的偏离。128137
建议:这些是建议规范。该标准允许在无正式记录的情况下偏离这些规范。最佳做法是,在合理范围内遵守这些规范,并记录偏离情况。3940
 总计:185 

静态可执行性

类别在 Bug Finder 中实现的规则标准中的规则
可判定:如果静态分析工具能够在所有可能的情况下检查规则的遵守情况,则该规则是可判定的。141149
不可判定:如果静态分析工具只能在某些情况下检查规则的遵守情况,则该规则是不可判定的。Polyspace 仅显示所有可能问题的一个子集。有关 Polyspace 针对特定规则检测哪些问题的详细信息,请参阅该规则参考页面中的 Polyspace 实现部分。4451

分析范围

类别在 Bug Finder 中实现的规则标准中的规则
单一翻译单元:您可以通过单独检查工程中的每个翻译单元来查找所有违规情况。128135
系统:只有分析整个工程或系统,才能找到所有违规情况。5765

MISRA C:2023 指令

指令是无法完全描述的规范。除了代码之外,还需要更多信息来检查这些指令的遵守情况。静态分析可能有助于检查代码指令的遵守情况。指令根据硬性级别进行分类。

硬性级别

类别在 Bug Finder 中实现的指令标准中的指令
必需:这些是合规 C 代码必须遵守的规范。该标准仅允许您正式记录并授权的偏离。1214
建议:这些是建议规范。该标准允许在无正式记录的情况下偏离这些规范。最佳做法是,在合理范围内遵守这些规范,并记录偏离情况。67

静态可执行性

类别在 Bug Finder 中实现的指令标准中的指令
可判定:如果静态分析工具能够在所有可能的情况下检查指令的遵守情况,则该指令是可判定的。00
不可判定:如果静态分析工具只能在某些情况下检查指令的遵守情况,则该指令是不可判定的。Polyspace 仅显示所有可能问题的一个子集。有关 Polyspace 针对特定指令检测哪些问题的详细信息,请参阅该指令参考页面中的 Polyspace 实现部分。1821

CERT C

Polyspace 支持 CERT C 标准中所有可静态强制执行的规则。该标准将规范分为规则和建议。Polyspace 不支持正在删除或制定中的规则。

类别在 Bug Finder 中实现的检查标准中的检查项
规则:这些规范是必须遵守的。违反这些规范可能会危及系统的安全性、可靠性或稳定性。静态分析工具可强制执行这些规范。120120
推荐:这些规范旨在提高系统的可读性、安全性和安全性。静态分析只能检测到这些规范的部分违规情况。Polyspace 仅显示所有可能问题的一个子集。有关 Polyspace 检测哪些问题的详细信息,请参阅这些规则的参考页面。94183

其他

Polyspace 还支持下面这些编码规范标准。

标准在 Bug Finder 中实现的规则
ISO/IEC TS 1796146 条(标准中共 46 条)
JSF AV C++160 条(标准中共 234 条)
CERT C++163 条(标准中共 163 条)
CWE

192 条(基于版本 4.12),包括:

  • 76 条(共 82 条)C 特定规则 (CWE-658)。

  • 81 条(共 86 条)C++ 特定规则 (CWE-659)。

另请参阅

| | | | | | |

主题