Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Published by Scroll Versions from space CPPTDESKDEV and version 2020.2

...

抑制可以存储在源代码中或本地抑制文件中,可以在源控制系统中对其进行检查,以便在团队中共享它们。您可以使用 Parasoft GUI 创建抑制或在源代码或抑制文件中手动添加有关禁止的信息。此外,可以通过配置文件以编程方式定义抑制。

Info
iconfalse
title抑制 MISRA 合规工作流程中的误报

如果您实施工作流程以实现对 MISRA 标准的遵从性,则可以从 DTP 上创建的 MISRA 遵从性报告中排除误报违规行为。当您抑制违规并指定以“误报”开头的抑制原因时,该违规将不会包括在 MISRA 遵从性报告中。

Image Removed

有关 Parasoft 遵从性解决方案的详细信息,请参见 DTP 用户指南。

...

如果您使用的是 DTP 的 MISRA 合规性包,请参阅 DTP 用户指南以了解有关 DTP 上的 MISRA 合规性报告如何处理抑制的更多信息。

Anchor
在 GUI 中定义抑制
在 GUI 中定义抑制

...

在 GUI 中定义抑制

抑制显示在【质量任务】视图中的静态分析任务:抑制【质量任务】视图中显示的静态分析任务:

  1. 右键单击代表要抑制的任务的【质量任务】视图项,然后选择抑制任务...  。
    要抑制多个任务,请右键单击代表一组任务的节点(规则类别,指定规则,文件),然后选择要抑制多个任务,请右键单击代表一组任务的节点(规则类别、指定规则、文件),然后选择抑制所有任务
  2. 选择抑制的存储位置。您可以选择以下选项之一:
    - 在抑制文件中抑制 - 抑制将存储在与相应源文件位于同一目录中的 a 一个 parasoft.suppress 文件中。有关详细信息,请参见 suppress  文件中。有关详细信息,请参见  在抑制文件中定义抑制  。
    - 源代码中的抑制 - 在源代码管理系统中选中时,所选任务将在代码中被抑制并在团队中共享。在源代码管理系统中检入时,所选任务将在代码中被抑制并在团队中共享。
    - 本地抑制(不建议使用) 本地抑制 (不建议使用) - 抑制将存储在本地不推荐使用的 XML 样式格式。有关详细信息,请参见 Using the Deprecated Suppression Format 使用已弃用的抑制格式 。
  3. 输入抑制原因。
  4. 单击确定以完成抑制。被抑制的任务将从【质量任务】视图中删除。以完成抑制。 被抑制的任务将从【质量任务】视图中删除。

Anchor
In-file Suppressions
In-file Suppressions
在抑制文件中定义抑制

如果选择将抑制存储在文件中,它将被存储在 parasoft.suppress 文件中,该文件与包含违反规则的源文件位于同一目录中。您可以通过以下方式之一定义文件内抑制:suppress文件中,该文件与包含违反规则的源文件位于同一目录中。您可以通过以下方式之一定义文件内抑制:

  • 通过手动创建 通过手动创建  parasoft.suppress 文件,可以在其中添加抑制条目。如果您手动创建抑制文件,请确保该文件与包含要抑制任务的源文件位于同一目录中。
  • 通过在 GUI 中选择 在抑制文件中抑制 选项(请参见选项 (请参见在 GUI 中定义抑制)。).

    新创建的抑制文件不包括在您的项目中。要将抑制文件添加到项目中:新创建的抑制文件不包括在您的项目中。要添加抑制文件到您的项目中:

    1. 启用 Visual Studio 解决方案资源管理器工具栏上的显示所有文件选项,或者如果已启用该选项,则刷新解决方案资源管理器。这将显示项目外部的文件,包括 选项,如果已启用该选项,则刷新解决方案资源管理器。 这将显示项目外部的文件,包括 Parasoft 抑制文件。
    2. 右键您添加到您项目的抑制文件然后从菜单中选择右键单击添加到项目的抑制文件,然后从菜单中选择包含在项目中

我们建议您在源代码控制系统中检查抑制文件。这使您可以与其他团队成员共享有关抑制的信息,并在将代码合并到主要开发流(例如 "master","trunk'等)中之前轻松查看 SCM 存储库中分支上的抑制。

使用以下格式将抑制条目添加到 parasoft.suppress 文件中:

Code Block
suppression-begin
file: Account.cpp                 (required)
line: 12                          (optional)
rule-id: CODSTA-123               (optional)
message: Exact violation message  (optional)
reason: Approved                  (optional)
author: devel                     (optional)
date: 2020-09-21                  (optional)
suppression-end

...

至少,您必须指定检测到问题的源文件。这将抑制报告针对指定文件的所有发现。在下面的例子中,在 帐户 Account 文件中检测到的所有结果将被抑制:

Code Block
suppression-begin
file: Account.cpp
suppression-end

其他属性是可选的,可帮助您微调抑制。在以下示例中,将忽略在 帐户 Account 文件中检测到的 PB.TYPO.TLS 规则的所有发现,无论它们出现在哪条代码行上:

Code Block
suppression-begin
file: Account.cpp
rule-id: PB.TYPO.TLS
reason: false positive
suppression-end

属性说明

  • 最好指定抑制的原因。指定抑制的原因是很好的做法。
  • 使用应谨慎使用 line 属性时应格外小心,因为如果在修改源文件时将代码移到另一行,则可能会使抑制无效。属性,因为如果在修改源文件时将代码移动到另一行,它可能会使抑制无效。

在源代码中定义抑制

在源代码中定义抑制时:

  • 您确保在您或团队成员测试该代码时都应用相同的抑制。您确保在您或团队成员测试该代码时应用相同的抑制。
  • 您可以添加解释每个抑制的代码注释,因此当您或团队成员查看代码时,每次抑制的原因总是很清楚。
  • 您可以获得对在文件、类或行级别强制执行哪些规则的细粒度控制。

您可以在源代码中定义抑制,方法是在 您可以通过在 GUI 中选择适当的选项(请参阅中选择适当的选项 (请参阅在 GUI 中定义抑制),也可以使用以下抑制语法在源代码中手动抑制它们。) 或在源代码中手动定义抑制 – 使用以下抑制语法。

行抑制

Code Block
<suppression keyword> [<rule category> | <rule category> . <rule id> | <rule category > - <rule severity> | ALL ] <suppression comment>

...

Info
iconfalse

不建议使用以下抑制指令:

  • parasoft off: 抑制报告在此行代码与文件末尾之间发生的所有静态分析违例。
  • parasoft on: 取消抑制此代码行与文件末尾之间发生的所有静态分析冲突的报告。
  • parasoft suppress/unsuppress [line <linewildcard>][class <classnamewildcard>][file <filenamewildcard>] [item <ruleid>][type <severity>] [reason <comment>]: 使用所需参数创建抑制。 创建具有所需参数的抑制。

Anchor

...

基于正则表达式模式定义行抑制
基于正则表达式模式定义行抑制

...

基于正则表达式模式定义行抑制

您可以配置 C/C++test 来自动抑制在与正则表达式模式匹配的行上检测到的静态规则冲突。当您想抑制难以使用行内或代码内抑制来抑制的任务(例如 来自动抑制在与正则表达式模式匹配的行上检测到的静态规则违规。当您想抑制难以使用行内或代码内抑制来抑制的任务(例如 Qt macros)时,这可能很有用。macros)时,这可能很有用。

要定义正则表达式模式以指定代码行:

  1. 创建一个高级设置文件,其中包含以下 C/C++test 的高级设置:

    Code Block
    cpptest.result.line.suppressions.enabled=true          // Enables creating regex-based suppressions.
    cpptest.result.line.suppressions.pattern=[regex;regex] // Specifies a semicolon-separated list of regex patterns.
    
  2. 指定高级设置的路径。请参见 配置高级设置文件

在与配置的正则表达式模式匹配的行上发生的静态规则冲突将被抑制。例如,以下配置将抑制在行上任何位置包含 在与配置的正则表达式模式匹配的行上发生的静态规则违规将被抑制。例如,以下配置将抑制在代码行上任何位置包含 "Q_” 的代码行上检测到的所有发现。的代码行上检测到的所有结果。

Code Block
cpptest.result.line.suppressions.enabled=true
cpptest.result.line.suppressions.pattern=.*Q_.*


Anchor

...

使用已弃用的抑制格式
使用已弃用的抑制格式

...

处理弃止的抑制

不建议在本地或团队服务器上以 XML-style 格式存储抑制。从 C/C++test 2020.2 开始,直接以代码或新的文件内格式创建抑制 (请参见 在抑制文件中定义抑制)。如果您的项目可以使用弃止的格式的抑制(通常,将 C/C++test 升级到 2020.2 或更高版本,并且使用以前的 C/C++test 版本创建了抑制),它们仍然会应用于您的代码,然后可以在弃止的【抑制】视图中对其进行查看。

迁移弃止的抑制

您可以使用 C/C++test 的功能将本地抑制迁移为新格式。如果您需要迁移存储在团队服务器上的抑制信息,请联系 的功能将本地抑制迁移为新格式。如果您需要迁移存储在团队服务器上的抑制,请联系 Parasoft 支持。

迁移弃止的本地抑制:

  1. 从 IDE 菜单中选择 Parasoft > 显示视图 > 抑制(弃止的) 以打开弃止的抑制视图。
  2. 从菜单中选择迁移抑制...
  3. 按照打开的对话框中显示的说明进行操作。

迁移具有以下后果:迁移具有以下结果:

  • 弃止的格式的抑制将转换为纯文本,并保存在与相应源文件位于相同位置的 parasoft.suppress 文件中。
  • 将创建一个备份文件,其中包含弃止的格式。文件的位置将打印到控制台。
  • 弃止格式的抑制从工作空间和弃止的【抑制】视图中删除。将从工作空间和弃止的【抑制】视图中删除弃止格式的抑制。

如果您想从备份文件中恢复已弃止的抑制:如果您想从备份文件中恢复已弃止的抑制执行以下步骤:

  1. 关闭您的 IDE。
  2. 转到存储备份文件的位置(该位置已打印到控制台)。它包括 local_suppressions_backup.zip 文件。

  3. local_suppressions_backup.zip 的内容提取到同一位置。

您可以在下次 IDE 启动时重新迁移恢复的抑制。

...

启用弃止的抑制功能可以使您以弃止格式创建抑制并将其存储在本地或团队服务器上。

  1. 从 IDE 菜单中选择 Parasoft > 显示视图 > 显示视图> 抑制(弃止的) 以打开弃止的抑制视图。
  2. 在菜单中启用 启用弃止的抑制 用弃止的抑制 选项。