环境: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

请到如下提示的 行,根据 问题原因 做相应的代码调整。

下面是推送成功提示:

钩子代码:

 #!/bin/bash

 ############################################
# .编辑代码库所在的[ 代码库/.hg/hgrc ]文件
# .添加如下节点
# [hooks]
# pretxnchangegroup = /home/hg/php_codesniffer/scripts/hg_pretxnchangegroup_hook.sh
#
# .赋予该脚本可执行权限 chmod a+x
# 以上
############################################ echo -e "\n==========================Starting PHP Syntax Check==========================\n" #在/tmp目录下创建临时目录
TEMP_DIR=`mktemp -dt php_syntax_files.XXXXXX` #临时测试
#TEMP_DIR="/tmp/test/"
#HG_NODE="d0a1ccf22a26dfe62ae1db932dcc4972509b8f0b" HG_BIN="/usr/bin/hg"
CHECK_CMD="/usr/bin/php /home/hg/php_codesniffer/scripts/phpcs --standard=PHPdragon --tab-width=4 --extensions=php $TEMP_DIR"
FORCE_CHECK_CMD="/usr/bin/php /home/hg/php_codesniffer/scripts/phpcs --standard=PHPdragonForce --tab-width=4 --extensions=php $TEMP_DIR" #输出临时目录
echo "temp dir : "$TEMP_DIR #导出当前至最新
#hg archive -r $HG_NODE:tip -t files /tmp/test
#导出当前
#hg archive -r $HG_NODE -t files /tmp/test
#全量导出
#hg archive -r tip -t files /tmp/test
#导出修改部分的代码
echo $HG_BIN" archive -I \"set:added() or modified()\" -r "$HG_NODE":tip -t files "$TEMP_DIR
$HG_BIN archive -I "set:added() or modified()" -r $HG_NODE:tip -t files $TEMP_DIR #检测代码,输出提示
echo "$CHECK_CMD"
$CHECK_CMD echo -e "\n\n\n\n=========================Force Check PHP Code Syntax=========================\n" #强制检测代码
echo "$FORCE_CHECK_CMD"
TEST_SYNTAX=`$FORCE_CHECK_CMD`
echo -e "$TEST_SYNTAX" #删除目录
echo "rm -rf "$TEMP_DIR
rm -rf "$TEMP_DIR" if [ "" == "${TEST_SYNTAX}" ] || [ "" == "${TEST_SYNTAX}" ];then
echo -e "\n\nThrough code detection, allowed to push! Push successfully!"
echo -e "\n===============================================================================\n\n"
exit
fi echo -e "\n\nServer detected the code has a problem, please check to submit the push again!"
echo -e "\n===============================================================================\n\n"
exit

PHP_CodeSniffer HG 服务端部署篇的更多相关文章

  1. 内网穿透神器(ngrok)服务端部署【分享一台自己的ngrok服务器】【多平台】

    Ngrok为何物 “ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道.ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放.”这是百度百科上给Ng ...

  2. CAS单点登录之服务端部署

    一.CAS服务端搭建 1.1 CAS支持Http登录配置 CAS默认是要https的链接才能登录的,不过学习的话是可以先去掉https限制,本博客介绍的是基于Cas4.2.7的,之前改过4.0的,详情 ...

  3. Rsync服务端部署流程

    Rsync服务端部署流程       Rsync服务端部署流程: 一.rsync服务端配置流程 配置rsync配置文件/etc/rsyncd.conf 创建同步的本地目录/dingjian 并根据需要 ...

  4. Zabbix5.0服务端部署

    Zabbix5.0服务端部署 基础环境配置 [root@localhost ~]# systemctl disable --now firewalld Removed symlink /etc/sys ...

  5. 使用Cobbler批量部署Linux和Windows:Cobbler服务端部署(一)

    本文记录了我使用Cobbler批量安装部署Linux和Windows系统的过程,文章主要分为三部分:Cobbler服务端的安装配置.Linux发行版CentOS和Ubuntu的自动安装部署.Windo ...

  6. (转)使用Cobbler批量部署Linux和Windows:Cobbler服务端部署(一)

    原文:http://www.cnblogs.com/pluse/p/8316914.html http://blog.51cto.com/dreamway/1166589---------Cobble ...

  7. nodejs 开发服务端 部署到 iis 服务器环境 -- iisnode 安装问题解决记录

    开发环境 nodejs: v10.15.3 windows: 10 iis: 10 需求: 用Nodejs开发了服务端,要部署到IIS 需要在IIS服务器上安装iisnode,结果遇到问题:安装不上 ...

  8. 【Azure 应用服务】Azure Mobile App (NodeJS) 的服务端部署在App Service for Windows中出现404 Not Found -- The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.

    问题描述 使用NodeJS的后端应用,开发一个Mobile App的服务端,手机端通过REST API来访问获取后端数据.在本地编译好后,通过npm start启动项目,访问效果如下: 但是,当把项目 ...

  9. Onvif开发之服务端发现篇

    服务端的开发相对来说比客户端稍微难一点,也就是给填充相关结构体的时候,需要一点一点的去查阅,验证各个结构中各个成员各自代表什么意思,以及对应的功能需要是那个接口实现,这是开发服务端最头疼的事情.(在开 ...

随机推荐

  1. vs2008快捷键

    Ctrl+E,D ----格式化全部代码 Ctrl+E,F ----格式化选中的代码 CTRL + SHIFT + B生成解决方案 CTRL + F7 生成编译 CTRL + O 打开文件 CTRL  ...

  2. Linux TC(Traffic Control)框架原理解析

    近日的工作多多少少和Linux的流控有点关系.自打几年前知道有TC这么一个玩意儿而且多多少少理解了它的原理之后,我就没有再动过它,由于我不喜欢TC命令行,实在是太繁琐了.iptables命令行也比較繁 ...

  3. Shutting down CodePlex 03/31/2017

    Almost 11 years after we created CodePlex, it’s time to say goodbye.  We launched CodePlex in 2006 b ...

  4. android:各种访问权限Permission

    在Android的设计中,资源的访问或者网络连接,要得到这些服务都需要声明其访问权限,否则将无法正常工作.在Android中这样的权限有很多种,这里将各类访问权限一一罗列出来,供大家使用时参考之用. ...

  5. Directx11代码下载

    很多年前的代码,看还有朋友需要,上传到百度网盘了 https://pan.baidu.com/s/1pnGFt84htvdXeK86pvyR8Q https://pan.baidu.com/s/1zT ...

  6. 详细解读Android中的搜索框(三)—— SearchView

    本篇讲的是如何用searchView实现搜索框,其实原理和之前的没啥差别,也算是个复习吧. 一.Manifest.xml 这里我用一个activity进行信息的输入和展示,配置方式还是老样子,写一个输 ...

  7. Spark机器学习(11):协同过滤算法

    协同过滤(Collaborative Filtering,CF)算法是一种常用的推荐算法,它的思想就是找出相似的用户或产品,向用户推荐相似的物品,或者把物品推荐给相似的用户.怎样评价用户对商品的偏好? ...

  8. pid 控制算法

    http://blog.csdn.net/huangkangying/article/details/78129148 https://zh.wikipedia.org/wiki/PID%E6%8E% ...

  9. 深入理解JS执行细节(写的很精辟)

    来源于:http://www.cnblogs.com/onepixel/p/5090799.html javascript从定义到执行,JS引擎在实现层做了很多初始化工作,因此在学习JS引擎工作机制之 ...

  10. MongoDB中的explain和hint提的使用

    一.简介 这里简单介绍一下各个工具的使用场景,一般用mysql,redis,mongodb做存储层,hadoop,spark做大数据分析. mysql适合结构化数据,类似excel表格一样定义严格的数 ...