git代码规范检测工具

简介: git代码规范检测工具
cd /path/to/project/.git/hooks
mv pre-commit.sample pre-commit
vim pre-commit

删除原有的东西,将下面脚本复制进去

#!/bin/bash
# PHP CodeSniffer pre-commit hook for git
#
# @author Soenke Ruempler <soenke@ruempler.eu>
# @author Sebastian Kaspari <s.kaspari@googlemail.com>
#
# see the README
PHPCS_BIN=bin/phpcs
#PHPCS_CODING_STANDARD=PEAR
PHPCS_CODING_STANDARD=PSR2
PHPCS_IGNORE=
PHPCS_IGNORE_WARNINGS=1
TMP_STAGING=".tmp_staging"
if [ ! -x $PHPCS_BIN ]; then
    echo "PHP CodeSniffer bin not found or executable -> $PHPCS_BIN"
    exit 1
fi
if git rev-parse --verify HEAD
then
    against=HEAD
else
    against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
fi
FILES=$(git diff-index --name-only --cached --diff-filter=ACMR $against -- )
if [ "$FILES" == "" ]; then
    exit 0
fi
if [ -e $TMP_STAGING ]; then
    rm -rf $TMP_STAGING
fi
mkdir $TMP_STAGING
# match files against whitelist
FILES_TO_CHECK=""
for FILE in $FILES
do
    echo "$FILE" | egrep -q "$PHPCS_FILE_PATTERN"
    RETVAL=$?
    if [ "$RETVAL" -eq "0" ]
    then
        FILES_TO_CHECK="$FILES_TO_CHECK $FILE"
    fi
done
if [ "$FILES_TO_CHECK" == "" ]; then
    exit 0
fi
# execute the code sniffer
if [ "$PHPCS_IGNORE" != "" ]; then
    IGNORE="--ignore=$PHPCS_IGNORE"
else
    IGNORE=""
fi
if [ "$PHPCS_SNIFFS" != "" ]; then
    SNIFFS="--sniffs=$PHPCS_SNIFFS"
else
    SNIFFS=""
fi
if [ "$PHPCS_ENCODING" != "" ]; then
    ENCODING="--encoding=$PHPCS_ENCODING"
else
    ENCODING=""
fi
if [ "$PHPCS_IGNORE_WARNINGS" == "1" ]; then
    IGNORE_WARNINGS="-n"
else
    IGNORE_WARNINGS=""
fi
# Copy contents of staged version of files to temporary staging area
# because we only want the staged version that will be commited and not
# the version in the working directory
STAGED_FILES=""
for FILE in $FILES_TO_CHECK
do
  ID=$(git diff-index --cached $against $FILE | cut -d " " -f4)
  # create staged version of file in temporary staging area with the same
  # path as the original file so that the phpcs ignore filters can be applied
  mkdir -p "$TMP_STAGING/$(dirname $FILE)"
  git cat-file blob $ID > "$TMP_STAGING/$FILE"
  STAGED_FILES="$STAGED_FILES $TMP_STAGING/$FILE"
done
OUTPUT=$($PHPCS_BIN -s $IGNORE_WARNINGS --standard=$PHPCS_CODING_STANDARD $ENCODING $IGNORE $SNIFFS $STAGED_FILES)
RETVAL=$?
rm -rf $TMP_STAGING
if [ $RETVAL -ne 0 ]; then
    echo "$OUTPUT"
fi
exit $RETVAL

保存

暂停代码检测,将文件重命名即可

mv pre-commit pre-commits



目录
相关文章
|
4月前
|
存储 Linux 开发工具
掌握 Git:版本控制的瑞士军刀
在软件开发中,版本控制对于代码管理和团队协作至关重要。Git 是一款由 Linus Torvalds 开发的分布式版本控制系统,广泛应用于各类项目。本文介绍了 Git 的基本原理、核心概念及常用命令,如初始化仓库 (`git init`)、克隆 (`git clone`)、提交 (`git commit`) 和合并 (`git merge`) 等。此外,还分享了编写清晰提交信息、使用分支开发和定期合并等最佳实践,帮助开发者更高效地使用 Git。
|
6月前
|
Ubuntu 开发工具 git
git 超实用教程【人人必会!】(含大厂的 git 操作规范)
git 超实用教程【人人必会!】(含大厂的 git 操作规范)
102 0
|
缓存 Linux 网络安全
《游戏测试》git培训(上)
《游戏测试》git培训(上)
《游戏测试》git培训(上)
|
8月前
|
开发工具 git
Git开发人员常用指令
Git开发人员常用指令
118 0
|
测试技术 Linux 开发工具
|
存储 Linux Shell
代码版本控制工具git的安装与使用
代码版本控制工具git的安装与使用
|
存储 Ubuntu Java
git各命令的原理和初级使用,顺手玩下git钩子
git各命令的原理和初级使用,顺手玩下git钩子
222 0
|
JavaScript 程序员 开发工具
工作中使用 Git 解决问题的场景
工作中使用 Git 解决问题的场景
155 0
工作中使用 Git 解决问题的场景
|
存储 开发工具 git
Git之修复Bug流程
  场景描述        当一个项目已经上线,同时又在原有基础上新增功能模块,于是乎就要在原有代码的基础上进行开发,在新增模块功能的开发的过程中,项目发现了一个紧急Bug,需要修复。应对这种情况,有以下两种解决方案: # 方案一:stash        stash 用于将工作区发生...
2522 0
|
测试技术 程序员 开发工具
Git 最佳实践:分支管理
5月份,为统一团队git分支管理规范,刚开始准备自己写,在网上搜了下,发现不少不错的git分支管理实践。最后我为团队选择了这个git分支管理实践 A successful Git branching model ,网上有不少参考这篇文章写的中文版gitflow实践,推荐一个中文版的Git 最佳实践:分支管理。
14867 0