代码质量管理工具--checkpatch

Posted coding码场

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代码质量管理工具--checkpatch相关的知识,希望对你有一定的参考价值。

       代码质量,关乎软件的稳定性和生命力,能不能给客户提供持续优良的服务!说起来,大家都在做软件开发,代码质量在大多数公司都还是一个口头强调,实际放开的一个状态。有时候,我也给团队培训代码质量规范,这样写,那样写,会上大家感觉也很有用,会后持续的效果又不大好,那时候还比较勤奋,经常去review同事们提交的代码,我们在项目会议上也拿出来分析,哪里写得不错,哪里那样写不规范,时间长了大家的水平就提高了一些,但是后面新来的同事因为没有经历过这样的一个阶段,往往写的代码达不到要求,项目急得时候就直接push上去了,日积月累,慢慢得就积累了大量的问题,有时查一个疑难问题很费解,有些概率性出现的问题由于某些坏习惯埋下的,比如变量没有赋初值,想当然的认为申请的变量初值就是0,拿起来就去做判断。

针对这种问题,我的原则能依赖工具的尽量依赖工具来保障,人是有惰性的,百密一疏不就是这个道理嘛!今天推荐一个工具:checkpatch,Linux kernel里自带的一个功能强大的工具,路径:/kernel/linux-3.12.1/scripts/checkpatch.pl,这个脚本可以直接执行。

下来看看执行一下的效果:

一下子这个文件就检查出29个错误,18个警告,一共猜114行的代码。还看得下去不,得大修啊!

实际上,这个程序又是可以正常跑的,只是很多东西不规范,比如新的一行得以TAB开头,不直接用空格,每一行尾部不要有空格,有空格有时间长了就可能有隐患,这种问题太多了。以前用代码工具检查工具sonar也可以,这个可以对整个工程来扫描,功能比较强大,平时开发常用也不是很合适。checkpatch灵活一些。

     在编辑完一段代码后,就可以直接运行这个脚本带上需要解析得文件名,就可以去解析了。可以把checkpatch脚本的路径及常用参数写入到一个环境变量里面去,然后调用,比如:

export CKFILE="$PWD/kernel/scripts/checkpatch.pl -f --ignore NEW_TYPEDEFS --ignore CONSTANT_COMPARISON --max-line-length=150 --show-types "

在kernel上层目录执行这个就可以,跑里面去也行,注意路径对的上就行。然后在命令行里执行:$CKFILE XXX_FILE,这样不管是头文件还是源代码C文件都可以检查,挺方便的。

  这样可以单个单个的去检查。也可以把这个脚本执行加载到git commit检查里面去,pre-commit里执行脚本。在.git/hooks下面,如下图,

  

 

 先通过git status把改动的文件检查出来,再挨个遍历执行一下checkpatch。错误和警告为0的时候才会commit成功,否则退出commit重新修正错误。

  这样走工具化的检查,在代码提交前强制检查,是不是比较有效。

以上是关于代码质量管理工具--checkpatch的主要内容,如果未能解决你的问题,请参考以下文章

代码质量管理工具--checkpatch

checkpatch海思SDK代码遇见的常见错误《一》

checkpatch海思SDK代码遇见的常见错误《一》

checkpatch海思SDK代码遇见的常见错误《一》

checkpatch海思SDK代码遇见的常见错误《二》

checkpatch海思SDK代码遇见的常见错误《二》