banner cpptest
首页 > C++test > 最新的 C++test 7.2 的RuleWizard自定义规则创建教程

最新的 C++test 7.2 的RuleWizard自定义规则创建教程

2009年8月28日 浏览: 

本文原载于软件测试人专业博客,任何转载请保留原址:http://www.mytestlife.com/post/15.html

网上找到C++test自定义规则创建的文档,文档内容蛮好,不过是针对C++test 6.5,目前C++test最新版为7.2。将其更新到针对C++test 7.2 RuleWizard自定义规则创建。

(注:若需完整的 C++test 7.2  的RuleWizard自定义规则创建.doc文档,请留下email,统一发送。)

以下是主要更新部分:

    C++ Test内置了1400多个静态规则,一般的情况下其实也就够用了。但是如果有特殊的测试要求,动辄几十K的代码,用眼睛看,脑子想,太辛苦,也不安全。如果我们用C++Test图形化的RuleWizard,结合公司的编码规范来制定规则,一来方便,高效,二来可以节约人工检查所带来的不必要的成本。Rule的创建有2种方式,一种是手工写规则,让RuleWizard去帮你生成规则。我这里主要重点放在自己写规则方面,下面介绍基本步骤:

    2.1 C++Test的基本设置

    首先使用C++Test静态规则集检查,可以直接使用C++test内建的测试配置或者自定义测试配置

    新建工程:选择导入VC6.0或者新建一个工程

 

自定义测试配置,可根据项目和团队自身需求启用相应的规则,选择C++test -> Test Configurations

2.2 内建测试配置

 

    C++Test内置了1400多条规则包括Effective C++Security,以及一些行业性规范,如MISRA C, MISRA 2004, MISRA 2008等各个方面的C\C++规则,应该能够满足大多数公司编码规范,启用某某规则只要勾选checkbox即可。另外,如果不会写规则的话,也可以参看默认的规则和C++Testmanual\Parasoft\C++Test7.2\manuals\rulewizard文件夹下。 

2.3 制作规则

    首先介绍一下基本规则的制作方法

 

    在出现的对话框中Dictionary选择CC++,还有一个选项是C++Test一般用于C++文本规则的制作,Rule Creation选择By NodeAuto-Create用于手动书写代码而自动生成规则,但是自动生成的规则往往不尽人意,所以一般不用。Node Selections选择if,因为此次书写的规则跟if有关,完成了点击ok.

 

    以上制作的规则是在逻辑表达式中常量应该放==号的左边,这样可以避免漏写一个“=”号后造成分支判断出现永真或者永假式即:

void foo() 
{
    
if(nFlag = 0)        /* Violation */
 
    {
        
return
 (Ok);
    }
    
else

    {
        
return (ERROR);
    } 
}

以上条件判断永远只会走 return ERROR)这个分支。

2.4  Rulewizard定义的基本组成部分

 

    Node:规则的基本组成部分,通过Node你可以很清楚的知道它的功能。比如表达式a=b、变量的类型测试分为:

    parentNode:规则中的主分支Node或者次分支的主Node.内容可以是表达式、变量、函数等

    childNode:规则的组成单元。

    Commands:用来在NodeNodes之间建立关联关系。形象一点就是点中一个Node然后右键显示出的快捷菜单的上半部分。如下图:

    介绍一下主要的Command

    Collector:集合。这个概念更像数学中的集合而不是Java中的广义集合。满足一定条件的数据或者方法或者变量的全体。比如,所有被声明过的变量,如下图

    isDecl是用来返回前边的node是不是一个声明。那么bodymembervariable返回了所有的包涵指定类型变量得语句(包括 变量付值、声明、判断等)那么这个图被理解为,所有不是声明得语句内使用的变量的集合。

    没有被声明的变量,如下图。

    这里的意思是所有作为声明语句的变量的集合。

    那么通常情况下,A集合和B集合应该是相等的,也就是说所有被声明过的变量(B集合内容)应该都被使用/赋值/判断(A集合的内容)。

    Node SetNodeNode集合的处理。分为Union(合并)、Intersection(交叉)、Difference(差值,左差/右差)、Xor(异或)。如下图:

    如果 满足这个规则,那么输出相应得警告信息。

    Output:如果满足check的条件,向用户返回一个消息(箭头表示)

2.5  导入已制作的规则

  点击Import,如图:

    弹出如下窗口:


 

   点击Browse,导入之前创建的规则,如图:

选择已制作规则的文件夹,添加完毕后启用。

   2.6 修改规则Category

     规则导入后,在Rule Tree里显示为”UNKNOWN[Nick]”类别,如下图:

  我们需要编辑Rulemap,点击旁边的“Edit Rulemap”,弹出如下窗口,选择“Categories”面板:

 在该窗口我们可以修改新添加的规则类别。填写如下:

 填写之后,点击”OK”。(注:Nick,是原本UNKOWN[Nick]里的默认类别ID,该ID一般与所导入规则的Rule ID一致)可以看到原本的规则类别发生变化,如图:

    2.7 运行已制作的规则

    当导入制作好的规则后,点击toolbar上的运行button(三角形的按钮)即可对工程进行静态测试。

    运行完毕后,出现出错信息,并且出错的行号和出错的文件也被指明出来了

原文链接:http://www.mytestlife.com/post/15.html

withdreamer C++test Ctest RuleWizard 教程  自定义规则  

  1. 2010-1-28 15:33:00 | #1

    sngmd@yeah.net,需要一份。

  2. 2010-3-19 13:00:05 | #2

    wujignlucky@163.com ,需要,谢谢!

    withdreamer 于 2010-3-24 11:47:59 回复
    angel,你的邮件发布过去,退信了。。。
    请从新给个邮件地址

  3. 2010-3-29 12:56:33 | #3

    急需!!!感谢分享!!!

  4. 2010-3-29 12:57:58 | #4

    我的邮箱是:1073057383@qq.com

    withdreamer 于 2010-4-2 9:24:10 回复
    已发送,请查收!

  5. 2010-4-6 20:57:35 | #5

    请给我一份,谢谢了

    withdreamer 于 2010-4-7 10:44:49 回复
    请给邮件地址

  6. 2010-4-21 16:11:27 | #6

    您好!请问您有可以使用bugDetective的c++test版本吗?能给我一份吗?我的邮箱:jiangboy123@gmail.com 非常感谢!

  7. 2010-4-27 13:26:02 | #7

    您好!请问您有可以使用bugDetective, rule wizard的c++test版本吗?能给我一份吗?我的邮箱:jiangboy123@gmail.com 非常感谢!

    withdreamer 于 2010-4-27 18:44:01 回复
    你好,可以直接找Parasoft公司申请试用license,这个版本主要是有license控制的,安装文件都一样。

  8. 2010-4-28 14:16:17 | #8

    请给我一份,谢谢,我邮箱是332485730@qq.com

    withdreamer 于 2010-4-28 18:21:08 回复
    已发送,请查收

  9. 2010-4-30 8:39:17 | #9

    请给我一份 ,谢谢 ~ 邮箱地址:mola_zhang@126.com

  10. 2010-4-30 8:55:08 | #10

    能麻烦再加个好友么? 有写地方不懂 qq:49442315

    withdreamer 于 2010-8-13 13:53:51 回复
    多多交流

  11. 2010-9-9 13:29:48 | #11

    oo496324502@sina.com 谢谢!!!!!!!!!!!!!!!

    withdreamer 于 2010-9-10 18:06:10 回复
    已发送,有兴趣请加QQ群74287645

  12. 2010-9-13 13:45:14 | #12

    没有收到啊,能不能再发次。。。

    Olz496324502 于 2010-9-13 14:58:31 回复
    群我加了,不过没有同意我加进去哦,资源我也没有收到,55555555555
    mytestlife 于 2010-9-13 17:46:41 回复
    重新发送,请接受,QQ群已加

  13. 2010-10-11 10:14:27 | #13

    您好,可以发一份吗?
    liyan.leo@gmail.com

    withdreamer 于 2010-10-28 18:36:00 回复
    抱歉,最近较忙,有一阵没有搭理博客,我会发给你...

  14. leo的Gravatar头像
    leo
    2010-10-11 10:15:09 | #14

    liyan.leo@gmail.com
    谢谢

  15. wt的Gravatar头像
    wt
    2010-11-22 12:58:23 | #15

    能不能发我一份 谢谢

    withdreamer 于 2011-5-31 21:15:00 回复
    请提供Email

  16. 2011-4-19 16:35:17 | #16

    1227gezi@163.com
    最近正在研究,希望能得到完整的 C++test 7.2 的RuleWizard自定义规则创建文档,万分感谢!

    withdreamer 于 2011-5-31 21:13:48 回复
    已发送,另外后续有朋友需要C++test RuleWizard文档的朋友,请加软件测试QQ群:74287645,里面的共享文件中附有该文档

  17. 2011-12-5 16:49:58 | #17

    谢谢~~~急需 170368715@qq.com