Klocwork扩展规则KAST Checker的定制一例

目的:检查代码中case语句后面没有跟break的情况。

 

我是用Klocwork 8.2环境做的KAST表达式测试。

 

由于KAST中case与break属于同样的层级,因此需要考虑没有break的各种情况。

 

我这里定制了两条规则,可以识别下面两种情况。

 

第一条:前一个case语句有执行体,但没有break,就直接进入下一个case或default了。

 

//SwitchStmt/Stmt::CompoundStmt/Stmts::LabeledStmt/following-sibling::LabeledStmt

 

比如:

case 1:

printf("");

case 2:

 ...

 

第二条:多个case共用执行体的情况。

 

//SwitchStmt/Stmt::CompoundStmt/Stmts[*]::LabeledStmt/Stmt::LabeledStmt

 

如:

case 1:

 case 2: ...

 

两条规则都试过了,可以的。

 

发布的话照着手册的指导就可以了。

 

官方手册上关于KAST表达式的语法不够规范,主要是关于限定、条件部分的说明太少,涉及到的东西没讲明白,例子也太简单。

 

尽量在Checker Studio中多试验一下,我的体会是节点的层次一定要对,但不一定从根上开始。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值