团队搞驱动开发,可能一开始配置差异,提交代码格式各异,日积月累,出现各种令人不爽的细节。
趁着最近内核升级,内核移植工作,给团队代码格式进行下了优化,现在分享给大家,仅供参考。
1. 所有文件转unix
find . -iname "*.h" -o -iname "*.c" | xargs dos2unix
==>针对的问题: 由于dos和unix换行符的不同,dos格式的文件,在git diff时修改的行尾会出现^M
2. 字符编码转utf-8
find . -iname "*.h" -o -iname "*.c" | xargs enca -L zh_CN -x UTF-8
注:
如果遇到如下报错
enca: Cannot convert `./hw/eponmac_api.c’ from unknown encoding
可使用vi打开文件,并使用命令
:set fileencoding=utf-8
之后保存
==>针对的问题: 由于很多文件的编码格式是GB2312等国标格式,在有些代码查看或比对工具中会出现中文乱码,所以统一转为UTF-8
3. 代码格式化
将linux目录下的.clang-format拷贝至命令执行目录之后执行 – 针对驱动代码
find . -iname "*.h" -o -iname "*.c" | xargs clang-format-8 -style=file -i
==>针对的问题: 很多代码空格和tab混用,缩进混乱,该命令可以按规则进行格式化/美化
clang-format-8 命令可能有些服务器需要安装:
sudo apt install clang-format-8
其中参数
-style=file 意思是按照命令执行目录下的.clang-format文件规则进行格式化
-i 原地修改文件
对于内核代码驱动,可以直接使用linux根目录下的.clang-format文件
4. 去除行尾空格
find . -iname "*.h" -o -iname "*.c" | xargs sed -i -e 's/\s*$//'
==>针对的问题: git工具比较在意这个,diff的时候行尾空格会呈现一段红色
命令简单说明
针对上面出现的命令说明下,感兴趣的再自行学习
find命令格式
find pathname -options [-print -exec -ok...] {} \;
pathname 表示find命令所查找的文件或者目录的路径,如果路径为空,则使用当前路径,
-print :find 命令将匹配的文件输出到标准输出
-exec:find命令对匹配的文件执行该参数给出的shell命令,相应命令的形式为’command’ {} \;注意{} 和 \ 之间的空格
-ok:和-exec的作用相同,只不过以一种更为安全的形式来执行该参数给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执。
. :表示当前路径;
-iname:按文件名搜索,i表示忽略大小写;
-o:或者
xargs(eXtended ARGuments)
是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。
可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。一般是和管道一起使用。
参考:https://www.runoob.com/linux/linux-comm-xargs.html
sed (Stream Editor文本流编辑)可依照脚本的指令来处理、编辑文本文件。
sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
sed 's/要被取代的字串/新的字串/g'
-e表示多点编辑
-i 表示可以直接修改文件内容(慎用于系统文件)