PHP_CodeSniffer HG 服务端部署篇

Posted PHPdragon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于PHP_CodeSniffer HG 服务端部署篇的主要内容,如果未能解决你的问题,请参考以下文章

Serverless(无服务器架构)初识篇

Docker部署sonarqube代码质量检查

postfix邮件服务器搭建-安装篇

Zabbix实战之部署篇Zabbix使用SNMP监控Linux系统

网络云盘项目——服务端部署客户端部署演示运行效果

服务端CVS本地Git的版本控制:利用git钩子自定义工作流