首页 > 代码库 > PHP_CodeSniffer HG 服务端部署篇

PHP_CodeSniffer HG 服务端部署篇

环境: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_DIR28 29 #导出当前至最新30 #hg archive -r $HG_NODE:tip -t files /tmp/test31 #导出当前32 #hg archive -r $HG_NODE -t files /tmp/test33 #全量导出34 #hg archive -r tip -t files /tmp/test35 #导出修改部分的代码36 echo $HG_BIN" archive -I \"set:added() or modified()\" -r "$HG_NODE":tip -t files "$TEMP_DIR37 $HG_BIN archive -I "set:added() or modified()" -r $HG_NODE:tip -t files $TEMP_DIR38 39 #检测代码,输出提示40 echo "$CHECK_CMD"41 $CHECK_CMD42 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_DIR52 rm -rf "$TEMP_DIR"53 54 if [ "0" == "${TEST_SYNTAX}" ] || [ "" == "${TEST_SYNTAX}" ];then55     echo -e "\n\nThrough code detection, allowed to push! Push successfully!"56     echo -e "\n===============================================================================\n\n"57     exit 058 fi59 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

 

PHP_CodeSniffer HG 服务端部署篇