Main Content

检查并审查编码标准违规

使用 Polyspace®,您可以检查您的 C/C++ 代码是否违反了 MISRA C™:2023 等多种外部编码标准。遵守编码标准可以减少缺陷数量并提高代码质量。

Polyspace 可以检测多种标准的编码违规,包括 MISRA C++:2023、MISRA C:2023 和 AUTOSAR C++:14。有关支持的标准的列表,请参阅编码标准

配置编码规则检查

Example Coding Standards & Code Metrics pane

指定标准和预定义检查项子集

通过 Polyspace 分析选项指定编码规则。当您运行 Bug Finder 时,分析会查找编码违规并运行其他检查。您可以禁用其他检查并仅查找编码违规。

在 Polyspace 用户界面中(桌面端产品),相应选项位于编码标准和代码度量节点下的配置窗格中。

对于 C 代码,请使用下列选项之一:

对于 C++ 代码,请使用下列选项之一:

您可以指定预定义的规则子集,例如 MISRA C:2012 的 mandatory 子集。这些子集通常由标准定义。

您还可以使用正则表达式定义标识符的命名约定。请参阅Enforce Naming Conventions for C/C++ Variables and Functions

自定义检查项子集

您还可以根据编码标准自行指定规则子集,而非指定预定义子集。

用户界面(仅限桌面端产品)

  1. 选择编码标准。从规则子集的下拉列表中,选择 from-file。点击编辑

  2. 检查项选择窗口中,编码标准将突出显示在左侧窗格中。在右侧窗格中,选择您要在分析中包含的规则。

A snapshot of the Findings selection window.

保存规则选择时,配置将保存到一个 XML 文件中,您可以重复使用该文件以进行多个分析。针对所有编码标准选择的规则都包含在这一个文件中。您可以在多个工程中重复使用此文件,以在团队或组织中强制应用通用的编码标准。要在 Polyspace 用户界面中的另一个工程中重复使用此文件,请执行以下操作:

命令行.  使用 Polyspace 桌面端产品,您可以在用户界面中创建一个编码标准 XML 文件,然后使用此文件进行命令行分析。请使用使用文件设置检查项 (-checkers-selection-file) 选项提供此 XML 文件。

使用 Polyspace Server 产品时,您必须从头开始创建编码标准 XML。根据您要启用的标准,为 polyspaceserverroot\polyspace\examples\doc_cxx\coding_standards_XML 中的某个文件创建一个可写副本,并使用该 XML 文件中的条目关闭规则(模板中启用了对应标准的所有规则)。其中,polyspaceserverroot 是 Polyspace Server 产品的根安装文件夹,例如 C:\Program Files\Polyspace Server\R2024b

例如,要关闭 MISRA C:2012 规则 8.1,请在文件 misra_c_2012_rules.xml 的副本中使用以下条目:

<standard name="MISRA C:2012">
  ...
  <section name="8 Declarations and definitions">
      ...
      <check id="8.1" state="off">
      </check>
      ...
  </section>
  ...
</standard>

使用规范检查项时,请在 threshold 标记之间指定它们的阈值。例如,要激活圈复杂度超出阈值检查项,并将该检查项的阈值设置为 5,请在 guidelines.xml 的副本中使用以下条目:

<check id="SC18" state="on">
        <threshold>5</threshold>
</check>

要在 Bug Finder 中使用此 XML 文件进行 MISRA C:2012 分析,请输入以下命令:

polyspace-bug-finder -sources filename -misra3 from-file -checkers-selection-file misra_c_2012_rules.xml

有关规则 ID 和节名称的完整列表,请参阅编码标准

注意

在以后的版本中,检查项配置文件的 XML 格式可能会有所变化。

仅检查编码标准

Bug Finder 分析会检查 C/C++ 代码是否:

  • 存在一组默认的缺陷 (Bug)

  • 遵守您指定的任何编码标准。

要仅检查编码标准,请完全禁用缺陷检查。为查找缺陷 (-checkers) 选项指定 none

审查编码违规

A snapshot of a typical Polyspace result showing a coding rule violation.

分析完成后,您可以在结果列表窗格中查看编码标准违规。选择某个违规可在结果详细信息窗格中查看更多详细信息,还可在窗格中查看源代码。

编码标准违规在源代码中用 图标指示。

有关进一步的步骤,请参阅审查分析结果在 Web 浏览器中审查 Polyspace Bug Finder 结果

生成报告

您可以使用针对编码标准明确定义的模板生成报告。请使用 CodingStandards 模板。此模板:

  • 仅报告分析结果中的编码标准违规,并忽略其他类型的结果,例如缺陷、运行时错误或代码度量。

  • 在报告中为每个编码标准创建单独的章节,这些章节将概述并列出违反该标准的所有违规项。

要指定报告模板,请使用 Bug Finder 和 Code Prover 报告 (-report-template) 选项。

相关主题