php代码规范检查,PHP代码规范检测 - SVN服务端配置

代码质量的检测插件有很多,这里只拿最基本的PSR做介绍。

长期以来,我们一直再做自己的代码规范,对新入职的员工进行培训。然而,效果却不是特别好。

代码规范不能顺利执行的主要原因有以下几点:

1:技术行业人员流动性太大

2:培训后,没有后续的监督,因此执行情况不乐观

3:有些有争议的点,内部制定的规范很难做出让人信服的标准(比如是用tab还是4个空格,真是一件值得干一架的事)

PSR规范的优势:

1:PSR由一批行业的知名人士制定,基本能使大多数人信服(解决以上第3个问题)

2:PSR规范自带了规范检测程序。代码只需要经过检测程序,就可以知道代码是否符合规范。(解决以上第2个问题)

3:规范检测程序可以安装在svn/git服务端,就算开发人员离职。新的开发人员只需要按照PSR规范来执行即可(解决以上第1个问题)

** PSR还自带了自动修复程序,可以自动修复代码中不规范的地方。以后再介绍在sublime中配置代码的自动检测、修复。以下介绍在svn服务端安装规范检测。安装之后,不符合规范的代码将不再允许提交。**

PSR检测程序在SVN服务端的配置(Linux为例):

安装方式一(如果linux服务端已经安装了php的工具pear):

pear install PHP_CodeSniffer

安装之后 php/bin目录会多3个可执行文件: phpcbf、phpcs、scripts/phpcs-svn-pre-commit。svn服务端主要使用的是:scripts/phpcs-svn-pre-commit*

安装方式二(如果linux服务端已经安装了composer)

composer global require "squizlabs/php_codesniffer=*"

会安装到目录: ~/.composer/vendor/bin/ 。

但是phpcs-svn-pre-commit不在这个目录,而是在目录 ~/.composer/vendor/squizlabs/php_codesniffer/scripts/。下面使用时要注意目录路径

2:svn服务端配置hooks

vim /svndir/projectDir/hooks/pre-commit

#!/bin/bash

REPOS="$1"

TXN="$2"

SVNLOOK="/usr/bin/svnlook"

PHP="/usr/bin/php"

LOG=$($SVNLOOK log -t "$TXN" "$REPOS")

if [ "$LOG" = "" ]; then

echo "Please input log" 1>&2

exit 1

fi

FILES=$($SVNLOOK changed -t "$TXN" "$REPOS" | awk '/^[AU]/ {print $NF}')

for FILE in $FILES; do

CONTENT=$($SVNLOOK cat -t "$TXN" "$REPOS" "$FILE")

if echo "$CONTENT" | grep -q $'\xEF\xBB\xBF'; then

echo "Please remove BOM from $FILE" 1>&2

exit 1

fi

if [[ "$FILE" =~ \.(php|html)$ ]]; then

MESSAGE=$(echo "$CONTENT" | $PHP -l 2>&1)

if [ $? -ne 0 ]; then

echo "$MESSAGE" | sed "s/ -/ $FILE/g" 1>&2

exit 1

fi

fi

done

/path/to/PHP_CodeSniffer/scripts/phpcs-svn-pre-commit "$REPOS" -t "$TXN" 1>&2 || exit 1

exit 0

3:特别重要:一定要给pre-commit加可执行权限

chmod +x /path/pre-commit

4:安装之后,写一个不符合PSR规范的代码,执行svn commit试一下,svn服务端会返回不规范代码所在行号及代码的错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值