(一)
一条规则rule_1:逻辑表达式中常量应该放==号的左边。
void foo()
{
if(nFlag == 0) /* Violation 此语句就违反了rule_1*/
{
return (Ok);
}
else
{
return (ERROR);
}
}
方法如下:
1、 在C++Test菜单栏Tools中选择RuleWizard
2、 在规则编写工具RuleWizard中新建Rule
3、 在出现的对话框中Dictionary选择C,C++,还有一个选项是C++Test一般用于C++文本规则的制作,Rule Creation选择By Node,Auto-Create用于手动书写代码而自动生成规则,但是自动生成的规则往往不尽人意,所以一般不用。Node Selections选择if,因为此次书写的规则跟if有关,完成了点击ok。
4、 在工具的右边,显示一个if,外面包围一个红圈,在if上点击右键,因为是一个if条件,所以选择Condition […],否则选择其他。
5、 在弹出的树形选择框中选择表达式a==b,因为if的条件中是这个形式
6、 选择表达式形式后,对这个形式要进行约束,常量应该放在==号的左边,因此右键点击图中表达式,选择Right Hand Side […]。
7、 因为规则说,常量应该放在左边,因此,在弹出的树形选择框中应选择Constants(常量),如果规定了具体类型的常量,那么就选择具体的常量类型,如bool,string等等。
8、 这样,规则就编写好了,但是现在不能保存,规则还没有生效,右键点击选择Create OutputàDisplay,并在弹出的message对话框中写入:“常量应放在==号左边”,点击OK后,图中的红色变为了黄色,说明生效了。
9、 现在可以保存这条规则了,fileàSave As…,填写此条规则的基本信息。
10、测试这条规则,建立测试工程,测试如图所示的代码,可以看到此代码不符合规范
11、在Test configurations中添加此规则,并在添加的规则前的方框中打勾,apply后,可以开始测试了。
12、测试的结果显示如下图所示: