Linux 静态代码检查工具:Coccinelle 的安装和使用

描述

主页:http://coccinelle.lip6.fr

Coccicheck是一个可定制程度很高的静态代码分析工具,kernel/script/coccicheck只是一个脚本,最终它依赖 Spatch 和*.cocci semantic patch,所以不能直接用,要安装。

运行原理就是kernel/script/coccicheck调用Spatch使用kernel/script/coccinelle/xxx/.cocci 语法patches来分析代码,每一个.cocci都是一个类型的错误检测,在Kernel/script/coccinelle会有一些基本的静态检测Patch.

coccicheck特别之处就是可以提供一个像补丁的参考建议给你修改,官网还记录了一些用coccicheck发现并修正的linux patch 见http://coccinelle.lip6.fr/impact_linux.php .

安装

  • git clone https://github.com/coccinelle/coccinelle.git

  • ./autogen

  • ./configure
    configure: error: OCaml >= 3.12 is required to compile Coccinelle
    然后安装:sudo apt-get install ocaml

  • make

  • sudo make install

使用

一个 Coccinelle 指定的目标定义在顶级的 makefile 中,目标命名为 coccicheck,在 scripts 目录中从前向后调用coccicheck。后端使用 spatch 处理。

支持4种模式:

  • patch:可能的话,提供一个修复建议。
  • report:以file:line:column-column:message生成报告列表
  • context:把感兴趣的行以高亮显示,感兴趣的行以-标识。
  • org:以Emacs的Org模式格式生成报告。

为了使用的简单,默认模式是report。另外还有两种模式是混合模式:

  • chain:以上述顺序尝试执行,直到一个成功为止。
  • rep+ctxt:依次执行report和context模式,而且要添加C选择,这样可以基于文件检查代码。

如:

make coccicheck M=drivers/soc/qcom J=8 MODE=patch DEBUG_FILE=“all.err”

注意,有些规则只支持 report, 如果 MODE=patch,则会报:“virtual rule patch not supported”

指定使用某个 cocci 文件

make coccicheck M=net J=8 MODE=report DEBUG_FILE=all.err COCCI=scripts/coccinelle/misc/newline_in_nl_msg.cocci

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值