代码文件格式化/美化命令

团队搞驱动开发,可能一开始配置差异,提交代码格式各异,日积月累,出现各种令人不爽的细节。
趁着最近内核升级,内核移植工作,给团队代码格式进行下了优化,现在分享给大家,仅供参考。

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 表示可以直接修改文件内容(慎用于系统文件)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值