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_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

 

posted @ 2016-08-28 18:12  phpdragon  阅读(583)  评论(0编辑  收藏  举报