php git 钩子,2019-11-06 Windows系统下使用PHPCS+PHPMD+GIT钩子

前言

使用PHPCS+GIT钩子保障团队开发中代码风格一致性实践

使用PHPMD提高代码质量与可读性

0.介绍

PHP_CodeSniffer php代码嗅探器

是一个代码风格检测工具,着重代码规范

它包含两类脚本,phpcs 和 phpcbf

包含phpcs(php code standard 代码标准)

phpcbf(php code beautify fix 代码美化修复)

1.安装

composer global require "squizlabs/php_codesniffer=*"

2.验证是否安装成功并查看帮助

phpcs --help

d3f8c4b32719

image.png

3.使用

phpcs path/file.php

d3f8c4b32719

image.png

4.集成到git

4.1 新增钩子文件

在 .git\hooks\目录下执行下面的命令

cp pre-commit.sample pre-commit

修改其中内容为

#!/bin/bash

#

# check PHP code syntax error and standard with phpcs

# author : star[github.com/star1989]

# date : 2017-02-24

PROJECT=$(git rev-parse --show-toplevel)

cd $PROJECT

SFILES=$(git diff --cached --name-only --diff-filter=ACMR HEAD | grep \\.php)

TMP_DIR=$PROJECT."/tmp"

# Determine if a file list is passed

if [ "$#" -ne 0 ]

then

exit 0

fi

echo "Checking PHP Lint..."

for FILE in $SFILES

do

# echo "php -l -d display_errors=0 ${FILE}"

# echo "git show :$FILE > $TMP_DIR/$FILE"

php -l -d display_errors=0 $FILE

if [ $? != 0 ]

then

echo "Fix the error before commit."

exit 1

fi

FILES="$FILES $PROJECT/$FILE"

done

if [ "$FILES" != "" ]

then

echo "Running Code Sniffer..."

TMP_DIR=/tmp/$(uuidgen)

mkdir -p $TMP_DIR

for FILE in $SFILES

do

mkdir -p $TMP_DIR/$(dirname $FILE)

git show :$FILE > $TMP_DIR/$FILE

done

phpcs --standard=PSR2 --encoding=utf-8 -n $TMP_DIR

PHPCS_ERROR=$?

rm -rf $TMP_DIR

if [ $PHPCS_ERROR != 0 ]

then

echo "Fix the error before commit."

exit 1

fi

fi

exit $?

5.在git下使用(git触发检测)

执行git commit 后会自动检测待提交代码的格式

d3f8c4b32719

image.png

6.自定义phpcs规则

有些情况我们需要忽略一些规则或者添加一些自定义的规则,比如有些类不需要命名空间(迁移类),不希望在检测代码时抛出该类型错误

d3f8c4b32719

image

6.1 添加标准

$ phpcs --config-set installed_paths ruleset.xml

6.2 编辑规则内容

将ruleset.xml放置在项目根目录下,并写入具体规则

6.3 修改pre-commit检测方式

将其中的

phpcs --standard=PSR2 --encoding=utf-8 -n $TMP_DIR

改为

phpcs --standard=ruleset.xml -s --encoding=utf-8 -n $TMP_DIR

这样就可以跳过命名空间的检测了!快去试试吧

7.常用命令

检查单个文件:phpcs /path/to/code

检查目录下的文件:phpcs /path/to/code/

查看已经安装的标准:phpcs -i

设置默认检查标准:phpcs --config-set default_standard /path/to/standard_file

查看配置:phpcs --config-show

指定报告格式:phpcs --report=summary /path/to/code ;可用的报告格式有full, xml, checkstyle, csv, json, emacs, source, summary, diff, svnblame, gitblame, hgblame, notifysend,默认为full

查看帮助:phpcs -h

自动修复:phpcbf /path/to/code

8.phpmd 介绍

PHP Mess Detector PHP混乱探测器

是一个代码质量检测工具,着重代码质量

9.安装

composer global require phpmd/phpmd

10.使用

$phpmd path\code text codesize,unusedcode,naming,design

参数说明

# phpmd 源代码路径 报告的格式 规则列表

# 源代码路径 支持

一个文件 /path/to/file

一个目录 /path/to/source

# 报告的格式 支持

xml:以XML格式输出;

text:简单的文本格式;

html:输出到单个的html;

# 规则列表 支持

phpmd_ruleset.xml 文件格式

codesize,unusedcode,naming 单个命令集合

# 附加参数

--exclude - 忽略的目录,以逗号分隔多个目录。

# 例子

phpmd /path/to/source html ./phpmd_ruleset.xml

11.添加到git钩子

done

phpcs --standard=ruleset.xml -s --encoding=utf-8 -n $TMP_DIR

phpmd $TMP_DIR text codesize,unusedcode,naming,design

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值