本主题说明如何通过修改现有规则或创建自定义规则来检查自定义需求或根据您的独特需求自定义现有规则。
各节内容包括:

说明

使用 C/C++test 进行静态分析的基础是能够自定义静态分析测试配置(要检查的规则集)和特定规则(包括创建新的自定义规则)。

C/C++test 提供的规则是可供选择的综合设置,但是具体的编码准则可能会略有不同,或者需要明确定义的规则例外,具体取决于编码的样式或应用程序的性质。因此,至关重要的是了解如何在团队中自定义、部署和共享 C/C++test 测试规则。

C/C++test 具有以下类型的规则:

  • 基于模式的规则 检查规则中规定的特定模式,并且在代码与该模式匹配时触发。这种类型的分析是基于编译单元本地的 (包含所有头文件的单一文件)。许多基于模式的规则都可以使用规则向导进行参数化(请参见 使用规则向导自定义规则)。
  • 基于流程(流程分析)规则 检查编码模式以及跨多个函数和源文件的数据流。通过直接在 C++test 图形用户界面中更改其配置参数,可以对许多基于流的规则进行参数化(请参见 自定义参数化规则)。规则向导不用于配置基于流的规则。

自定义参数化规则

通过修改可用的规则参数,可以自定义许多规则。在【测试配置】对话框的静态> 规则树 选项卡中,已参数化的规则用特殊图标标记(带有单选按钮的向导帽):

规则文档中介绍了可用的规则参数。要查看规则的描述,请右键单击代表该规则的节点,然后从快捷菜单中选择查看规则文档

修改规则参数:

  1. 通过选择Parasoft> 测试配置或在运行测试工具栏按钮的下拉菜单中选择测试配置,打开【测试配置】对话框。
  2. 打开任何测试配置的静态> 规则树选项卡。修改后的规则参数将应用于所有测试配置,因此在此步骤中选择哪个测试配置都没有关系。
  3. 展开规则的类别分支。
  4. 右键单击要修改的参数化规则,然后从快捷菜单中选择查看/变更规则参数
  5. 在打开的对话框中修改规则参数。
  6. 点击确定保存您的变更。

创建参数化规则的多个版本

如果要创建参数化规则的多个版本(例如寻找用户指定的泄漏定义的流分析规则),请创建该规则的“克隆”(如指定规则映射中所述),然后参数化每个规则实例。

使用规则向导自定义和创建规则

本节说明了使用规则向导自定义现有规则和创建新规则的一般工作流程。有关规则向导功能和用法的详细信息,请参见规则向导用户指南

使用规则向导自定义规则

许多 C/C++test 基于模式的规则都是使用规则向导编辑的。C/C++test 规则是可以加载到规则向导中并根据需要进行更改的物理文件。内建的 C/C++test 规则包含在安装目录中。

在【测试配置】面板的规则树中,可自定义的规则用以下向导帽+向导棒图标标记:

(info) 我们强烈建议您保留 C/C++test 内建规则不变。若要自定义规则,请复制内建规则,然后修改复制的规则。

(info) 规则是通过图形用户界面自定义的,不需要修改实际规则。

使用规则向导自定义规则:

  1. 通过选择Parasoft> 测试配置或在运行测试工具栏按钮的下拉菜单中选择测试配置 ,打开【测试配置】对话框。
  2. 打开任何测试配置的 静态> 规则树 选项卡。
  3. 右键单击要修改的规则,然后从快捷菜单中选择复制
  4. 带有文件图标的重复规则节点将添加到规则树中。
    • 规则文件的副本将添加到用户指定的磁盘位置。规则 ID 随此操作而更改,因此重复的规则不会屏蔽内建规则 (有关详细信息,请参见有关重复规则 ID 的注释)
  5. 右键单击重复的规则,然后从快捷菜单中选择在规则向导中编辑规则 以在规则向导中打开规则。
  6. 在规则向导中编辑此规则,然后将其保存。有关如何修改和保存自定义规则的信息,请参见【规则向导用户指南】(可通过在规则向导图形用户界面中选择帮助> 文档进行访问)。
  7. 将规则上传到 DTP 或团队服务器,以便其他团队成员可以访问:
    -上传到 DTP:请参见【DTP 用户指南】的【管理自定义规则】部分。
    -上传到团队服务器:右键单击编辑后的规则,然后选择上传到团队服务器
  8. 在测试配置中启用编辑后的规则。

使用规则向导创建新规则

您可以使用规则向导模块轻松地创建自己的规则,规则向导模块是 C/C++test 中提供的图形化规则创建和自定义工具。使用 RuleWizard,可以以图形方式(通过创建规则的流程图表示形式)或自动(通过提供示例违反规则的代码)来创建规则。

要打开规则向导,请从 IDE 菜单中选择Parasoft>启动规则向导

请参见【规则向导用户指南】(规则向导图形用户界面中的帮助>文档),以获取有关如何修改和保存自定义规则的信息。

部署自定义规则或完全自定义规则

您可以在 DTP 上,在团队服务器上或通过手动导入规则文件来部署自定义规则。

规则 ID 注意事项

导入到工具中的每个规则都必须具有唯一的规则 ID。有关详细信息,请参见有关复制的规则 ID 的注释。要使用规则 ID 指定规则类别,请使用以下格式 <rule_category>-<rule_uid>。例如,"myrule-123” 将自动分配给 "myrule” 类别。

使用团队服务器部署自定义规则

请参见在团队中部署自定义规则

在 DTP 上部署自定义规则

有关如何在 DTP 上部署自定义规则的信息,请参见 DTP 用户指南中的“管理自定义规则”部分。

手动导入自定义规则

  1. 通过选择Parasoft> 测试配置或在运行测试工具栏按钮的下拉菜单中选择 Parasoft> 测试配置,打开“测试配置”对话框。
  2. 选择任一测试配置类别。新规则将在所有可用的测试配置中可用。
  3. 打开静态>规则树 >选项卡。
  4. 如果任一新规则应属于一个新类别,请按如下方式创建一个新类别:
    1. 点击编辑 Rulemap按钮。
    2. 打开类别选项卡。
    3. 点击新建。新条目将添加到类别表。
    4. 在新条目中输入类别 ID 和类别说明。例如,组织可能选择使用 ACME 作为类别 ID,并选择 ACME 内部规则作为说明。
    5. 单击 确定 以保存新的类别
  5. 单击规则树右侧的导入按钮。 将打开导入规则向导规则对话框。
  6. 使用“导入规则向导”规则对话框可以指定要导入的规则,以及是否要覆盖现有规则文件(如果导入的规则文件与现有规则文件具有相同的名称)。
  7. 点击 确定。该规则将显示在分配的类别下,并且默认情况下将禁用。
  8. 启用要检查的新规则。
  9. 单击应用关闭以提交修改的设置。

有关重复的规则 ID 的注释

在 C/C++test 中由规则 ID 识别规则。如果您的规则与内建、用户或团队类别中已有的规则具有相同的 Id,则使用优先级依次为团队/ 用户/内建。因此,如果导入与内建规则 ID 匹配的规则,则导入的规则将物理位于“首选项”面板中设置的默认规则目录中,并且规则配置将改用导入的规则而不是具有相同名称的内建规则。如果将规则上传到团队服务器,则团队服务器上的规则将屏蔽具有相同 ID 的所有用户规则以及具有相同 ID 的内建规则。

  • No labels