美文网首页PHP经验分享
PHP代码规范检测 - SVN服务端配置

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

作者: Dorm_Script | 来源:发表于2016-11-15 09:41 被阅读281次

代码质量的检测插件有很多,这里只拿最基本的PSR做介绍。
长期以来,我们一直再做自己的代码规范,对新入职的员工进行培训。然而,效果却不是特别好。

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

  • 1:技术行业人员流动性太大
  • 2:培训后,没有后续的监督,因此执行情况不乐观
  • 3:有些有争议的点,内部制定的规范很难做出让人信服的标准(比如是用tab还是4个空格,真是一件值得干一架的事)

PSR规范的优势:

  • 1:PSR由一批行业的知名人士制定,基本能使大多数人信服(解决以上第3个问题)
  • 2:PSR规范自带了规范检测程序。代码只需要经过检测程序,就可以知道代码是否符合规范。(解决以上第2个问题)
  • 3:规范检测程序可以安装在svn/git服务端,就算开发人员离职。新的开发人员只需要按照PSR规范来执行即可(解决以上第1个问题)

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

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

  • 1:PSR检测程序“PHP_CodeSniffer”的安装:
    github地址:https://github.com/squizlabs/PHP_CodeSniffer

    • 安装方式一(如果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服务端会返回不规范代码所在行号及代码的错误

相关文章

  • PHP代码规范检测 - SVN服务端配置

    代码质量的检测插件有很多,这里只拿最基本的PSR做介绍。长期以来,我们一直再做自己的代码规范,对新入职的员工进行培...

  • 无标题文章

    # SVN 代码提交规范 --- [TOC] ## 1. 提交前配置忽略文件 首次提交前需要先配置忽略文件,防止将...

  • 2019-11-06 Windows系统下使用PHPCS+PHP

    前言 0.介绍 PHP_CodeSniffer php代码嗅探器是一个代码风格检测工具,着重代码规范它包含两类脚本...

  • docker svn服务器

    使用docker搭建svn服务器 安装centos 安装apache 安装SVN服务端 在apache下配置svn...

  • SVN

    SVN是集中式源代码管理工具,包括服务端和客户端。 服务端SVN搭建 服务端工具下载地址[https://pan....

  • PHP代码规范

    PHP代码规范 本规范希望通过制定一系列规范化PHP代码的规则,以减少在浏览不同作者的代码时,因代码风格的不同而造...

  • PHP基于PSR代码规范 --- 2019-08-30

    PHP 代码规范 FIG 制定的 PHP 规范,简称 PSR,是 PHP 开发的事实标准。FIG 是 Framew...

  • SVN服务器搭建

    1.创建svn库 svnadmin create /Users/ztw/svn 2.配置svn (代码要置顶,否则...

  • (转载)如何写出优雅耐看的PHP代码?

    如何写出优雅耐看的PHP代码?本篇文章带大家了解一下PHP代码的基本书写规范和框架规范,了解它们让你的PHP代码优...

  • 代码风格

    代码风格 代码风格 必须 严格遵循 PSR-2 规范。 PHP编码规范(中文版)

网友评论

    本文标题:PHP代码规范检测 - SVN服务端配置

    本文链接:https://www.haomeiwen.com/subject/tmmkpttx.html