环境:CentOs 6.7
语言:PHP5.4
PHP_CodeSniffer: https://github.com/phpdragon/PHP_CodeSniffer
本地代码检测请查看该文章:http://www.cnblogs.com/phpdragon/p/5199011.html
1.从github下载代码,解压到 /home/hg/php_codesniffer/ 目录下。
拷贝 CodeSniffer.conf.dist 文件为 CodeSniffer.conf,调整内容如下:、
<?php $phpCodeSnifferConfig = array ( ‘php_path‘ => ‘/usr/bin/php‘, ‘default_standard‘ => ‘PHPdragon‘, ‘report_format‘ => ‘summary‘, ‘show_warnings‘ => ‘0‘, ‘show_progress‘ => ‘1‘, ‘report_width‘ => ‘120‘, ) ?>
2.编辑代码库所在的[ 代码库/.hg/hgrc ]文件。
3.添加如下节点。
[hooks] pretxnchangegroup = /home/hg/php_codesniffer/scripts/hg_pretxnchangegroup_hook.sh
4.赋予该脚本可执行权限 chmod a+x 。
# chmod a+x /home/hg/php_codesniffer/scripts/hg_pretxnchangegroup_hook.sh
5.配置完毕,提交代码测试:
=========================================================以下是钩子的说明内容============================================================
1. 审核标准有两个:
一个是全量检测,但允许提交代码,
一个是强制规范,是这个判断来决定是否允许推送。
如果发现代码无法提交,请点击查看log, log中会提示为何无法提交代码。
2.代码检测提示文本格式如下:
==========================Starting PHP Syntax Check==========================
//建议的规范,检测报错提示内容
=========================Force Check PHP Code Syntax=========================
//强制要求的规范,检测报错提示内容
===============================================================================
3.报错内容以 =========================Force Check PHP Code Syntax========================= 标记为开始,该标记以上的内容为建议规范检测的报错提示。
这是报错,要求检查代码:
FILE: /tmp/php_syntax_files.xxxxx/src/server/userxxxxxxage_update_service.php //表示不符合规范的文件路径,那么实际地址是 工程路径/src/server/userxxxxxxage_update_service.php
请到如下提示的 45 行,根据 问题原因 做相应的代码调整。
下面是推送成功提示:
钩子代码:
1 #!/bin/bash 2 3 ############################################ 4 # 1.编辑代码库所在的[ 代码库/.hg/hgrc ]文件 5 # 2.添加如下节点 6 # [hooks] 7 # pretxnchangegroup = /home/hg/php_codesniffer/scripts/hg_pretxnchangegroup_hook.sh 8 # 9 # 3.赋予该脚本可执行权限 chmod a+x 10 # 以上 11 ############################################ 12 13 echo -e "\n==========================Starting PHP Syntax Check==========================\n" 14 15 #在/tmp目录下创建临时目录 16 TEMP_DIR=`mktemp -dt php_syntax_files.XXXXXX` 17 18 #临时测试 19 #TEMP_DIR="/tmp/test/" 20 #HG_NODE="d0a1ccf22a26dfe62ae1db932dcc4972509b8f0b" 21 22 HG_BIN="/usr/bin/hg" 23 CHECK_CMD="/usr/bin/php /home/hg/php_codesniffer/scripts/phpcs --standard=PHPdragon --tab-width=4 --extensions=php $TEMP_DIR" 24 FORCE_CHECK_CMD="/usr/bin/php /home/hg/php_codesniffer/scripts/phpcs --standard=PHPdragonForce --tab-width=4 --extensions=php $TEMP_DIR" 25 26 #输出临时目录 27 echo "temp dir : "$TEMP_DIR 28 29 #导出当前至最新 30 #hg archive -r $HG_NODE:tip -t files /tmp/test 31 #导出当前 32 #hg archive -r $HG_NODE -t files /tmp/test 33 #全量导出 34 #hg archive -r tip -t files /tmp/test 35 #导出修改部分的代码 36 echo $HG_BIN" archive -I \"set:added() or modified()\" -r "$HG_NODE":tip -t files "$TEMP_DIR 37 $HG_BIN archive -I "set:added() or modified()" -r $HG_NODE:tip -t files $TEMP_DIR 38 39 #检测代码,输出提示 40 echo "$CHECK_CMD" 41 $CHECK_CMD 42 43 echo -e "\n\n\n\n=========================Force Check PHP Code Syntax=========================\n" 44 45 #强制检测代码 46 echo "$FORCE_CHECK_CMD" 47 TEST_SYNTAX=`$FORCE_CHECK_CMD` 48 echo -e "$TEST_SYNTAX" 49 50 #删除目录 51 echo "rm -rf "$TEMP_DIR 52 rm -rf "$TEMP_DIR" 53 54 if [ "0" == "${TEST_SYNTAX}" ] || [ "" == "${TEST_SYNTAX}" ];then 55 echo -e "\n\nThrough code detection, allowed to push! Push successfully!" 56 echo -e "\n===============================================================================\n\n" 57 exit 0 58 fi 59 60 echo -e "\n\nServer detected the code has a problem, please check to submit the push again!" 61 echo -e "\n===============================================================================\n\n" 62 exit 1