Coccinelle是一个文本模式转换的正则式匹配的工具。
获取Coccinelle
大部分Linux分支版本都有这个工具。
- Debian
- Fedora
- Ubuntu
- OpenSUSE
- Arch Linux
- NetBSD
- FreeBSD
还可以从http://coccinelle.lip6.fr/下载最新版,执行:
./configure
make
如果你是普通用户,安装需要:
sudo make install
在Linux 内核中使用Coccinelle
一个Coccinelle指定的目标定义在顶级的makefile中,目标命名为coccicheck,在scripts目录中从前向后调用coccicheck。
支持4种模式:
- patch:可能的话,提供一个修复建议。
- report:以file:line:column-column:message生成报告列表
- context:把感兴趣的行以高亮显示,感兴趣的行以-标识。
- org:以Emacs的Org模式格式生成报告。
为了使用的简单,默认模式是report。另外还有两种模式是混合模式:
- chain:以上述顺序尝试执行,直到一个成功为止。
- rep+ctxt:依次执行report和context模式,而且要添加C选择,这样可以基于文件检查代码。
Coccinelle 并行化
默认coccicheck是尽力并行化运行的,如果改变并行化行为,使用J变量。例如,运行在4个CPU上
make coccicheck MODE=report J=4
控制哪些文件Coccinelle处理
默认情况下,整个内核源码树都需要进行检查。可以使用M=来指定处理的目录。例如,只检查driver/net/wireless/
make coccicheck M=drivers/net/wireless/
如果指定的文件,可以
make C=1 CHECK="scripts/coccicheck"
如果只检查新编辑的代码,可以使用值2或C标志。
make C=2 CHECK="scripts/coccicheck"
最后欢迎大家访问我的个人网站:1024s