kernel代码根目录下的Makefile集成了coccicheck, 因此在根目录下执行 即可有效 PHONY += includecheck versioncheck coccicheck namespacecheck export_report
在根目录/ 下执行如下命令即可
#make coccicheck M=drivers/net/wireless > cccheck_result.txt
将检查结果输出到一个文件中,然后查看这个文件,可见这些告警,则可以修正,commit。
cc支持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 MODE=report M=drivers/net/wireless/
make coccicheck M=drivers/net/wireless/ //默认是 report mode
如果指定的文件,可以
make C=1 CHECK="scripts/coccicheck"
如果只检查新编辑的代码,可以使用值2或C标志。
make C=2 CHECK="scripts/coccicheck"