PHP代码自动检测(git/svn集成PHP_CodeSniffer)

背景

在公司开发的时候,每次不管svn还是git提交代码的时候都会对代码进行简单的自动检测。检查不了代码逻辑,但是最起码能保证整体的编码格式保持一致。

代码审核与自动构建过程

大体流程如下图

 

工作流程

审核流程

 

 

实践部分

PHP_CodeSniffer的安装 参考资料

pear install PHP_CodeSniffer

我直接使用了pear方式安装,简单方便很多。使用pear安装的扩展库基本上默认在php的安装目录下,比如我的:/opt/php-7.1.9/lib/php/PHP/CodeSniffer。大家可以参考下自己的安装目录。
命令行直接使用PHP_CodeSniffer如下:

phpcs test.php

设置PHP_CodeSniffer的代码规范格式。

# /opt/php-7.1.9/lib/php/PHP/CodeSniffer/src/Standards 
# 这个目录下列出了所有可以设置的格式(PSR1,PSR2,PSR12,Zend,Squiz等)
phpcs --config-set default_standard Zend

svn/git安装

这里不展开描述了,由于我在虚拟机上安装也花了一些时间,都是参考网上的资料。

将PHP_CodeSniffer集成到git/svn中
每部署一个svn项目,都会对应的配置文件,其中有个hooks文件夹,其中有pre-commit,在这个文件中加上phpcs 的命令就好了。
git的原理是一样的,都是有个hooks的文件夹,其中都有pre-commit。
差别: svn是在commit的过程中进行的自动检测,git是在git push的时候进行检测操作的。猜想应该自动代码检测肯定是集成在工程代码所在的服务端是最好的。svn commit的时候就直接访问的远程主机。但是git commit的时候是将代码保存在本地分支,只有git push的时候才是提交到远程主机,所以git就是在git push的时候进行的自动检测操作。

参考文档
PHP_CodeSniffer安装

squizlabs / PHP_CodeSniffer 地址:https://github.com/squizlabs/PHP_CodeSniffer

 

centos下安装PHP_CodeSniffer并配置svn钩子实现svn代码提交时进行代码规范检查

PHP_CodeSniffer:这是php的一个代码规范检查的工具, 这里是用它来实现, 在svn提交代码前, 自动进行代码规范检查, 只有检查通过, 才能正式提交

1. 安装 pear

因为 PHP_CodeSniffer 是 pear中的一个包, 需要先安装 pear
yum install php56w-pear

2. 安装 PHP_CodeSniffer, 直接使用pear命令安装

pear install PHP_CodeSniffer

3. 配置svn 钩子 pre-commit

在svn服务端的仓库目录下有个hooks目录,关于hook目录下的文件说明, 可参考: http://www.sgzhang.com/article/37.html
这里, 我们的需求是svn提交之前,使用PHP_CodeSniffer进行代码规范检查,
所以只需要修改 post-commit , 该文件是svn提交代码前会调用的脚本, 如果该脚本 exit code 大于0, svn服务器会停止提交代码, 并返回错误信息至svn客户端

这里有两种情况,

1) 如果 hooks 目录下已经有 pre-commit 文件, 只需要在 pre-commit 文件的 exit 0 之前 添加一行代码即可:

  1. /usr/bin/scripts/phpcs-svn-pre-commit --standard=PEAR --tab-width=4 "$REPOS" -t "$TXN" 1>&2 || exit 1

2) 如果hooks目录下还没有 pre-commit 文件, 需要先新建一个, 并且要把权限修改为可执行, 命令如下:

  1. touch pre-commit;
  2. chmod +x pre-commit;

然后把下面代码完整地复制到 pre-commit 文件:

  1. #!/bin/sh
  2. REPOS="$1"
  3. TXN="$2"
  4. /usr/bin/scripts/phpcs-svn-pre-commit --standard=PEAR --tab-width=4 "$REPOS" -t "$TXN" 1>&2 || exit 1
  5. exit 0

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值