checkpatch.pl工具使用心得

checkpatch工具是一种代码检查工具,主要是对Linux编程代码进行静态检查,会指出编程的一些规范和代码风格问题。最近用来对U-Boot框架下编写的驱动代码进行检查,记录一些心得。

一、如何使用

1.使用指令

find -name "checkpatch.pl" 

查找工具脚本路径。

2.使用指令

pwd 

查看需要检查的文件路径(用这个确保不会错,被自以为是坑过)。

3.cd切换到Checkpatch脚本所在路径,使用指令

./checkpatch.pl --no-tree -f /路径/文件.c

就会输出文件的检查结果。

二、常见错误与警告

1.代码行末尾多余的空格;

2.块注释的*是否对齐,正确如下;

/*
 * This function performs some important
 * operation and needs a detailed comment.
 * asterisk, aligned properly.
 */

3.换行符在Linux下应该是LF(\n),而不是CRLF(\r\n)(注:在windows系统下)

以Vscode为例:在vscode上的右下角将CRLF(windows风格行结尾)改为LF(linux或unix行结尾)

4.缩进的正确用法应该是Tab,而不是空格,必须先用Tab、再用空格(这种组合是可以用的);

提示错误:code  indent should  use tabs where possible

5.大括号还有运算符两侧应该要有缩进;

提示错误:space required  after  that  close brace  '}'

6.变量声明代码段结束后需要加一个空行。

int x = 10;
int y = 20;

x = x + y;

7.大括号 { 不应该单独放在新的一行,而是应该和它前面的代码在同一行。

void my_function() {
    // function body
}

三、未完待续

解决windows环境下编辑的uboot代码使用linux环境下checkpatch.pl工具检查后,每一句后面有+^M$的错误提示;使用下面语句进行解决:

e ++ff=unix
%s/[^[:print:]]$//g

1)Tab键与空格键能混用,但要先tab、后空格;

2)变量声明、定义要与后面的赋值操作语句空一行;

3)+^I$ 表示行尾存在制表符:

# 使用sed删除行尾制表符和空格 sed -i 's/[ \t]*$//' your_file.c

your_file.c是文件路径+文件

4) ++前不能有空格:fnum++

5)for、if只有一行不需要加括号{}; 

6) 在使用printf之前的 \n 不需要空格符;

比如:printf("A is b\n"); b与\n就不需要空格;

  1. 内核编码规范要求
    • 控制语句:关键字后必须添加空格,如 if (condition)
    • 函数定义与调用:函数名与左括号之间不添加空格,如 void func(void)
    • 宏定义:宏名称与参数列表之间不添加空格,如 #define MACRO(arg)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值