栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

gitlab增加p3c-hook强制代码规范

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

gitlab增加p3c-hook强制代码规范

1.查找项目地址

点击menu->admin->project选子需要加钩子的项目

 path为linux上路径地址,默认gitlab安装路径为

/var/opt/gitlab/git-data/repositories/

2.下载p3c代码

https://github.com/alibaba/p3c

3.自定义排除规则(因为阿里有些规范并不适用于实际开发)

在rulesets下新建自己的规则排除文件

ali-p3c.xml:




    AlibabaJavaSets

    
        
        
        
        
    

    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    

    

    

    
        
    

    
        
    

    
        
        
        
        
        
        
    

    
        
        
        
        
    

    
        
    

    
        
        
        
        
    

    
        
        
        
        
        
        
    


4.打包上传至服务器,进行钩子配置

5.在gitlab项目目录下创建如下目录和文件

路径如:

cd /var/opt/gitlab/git-data/repositories/@hashed/9c/fd/9cfd3c755be26b4e1645918e2a64a26e3d851ede421e0b257f783b443bc443d1.git

创建目录

mkdir -p custom_hooks/pre-receive.d/

在pre-receive.d/目录下,创建钩子文件

vim pre-receive
#!/bin/bash
 
# oldrev,旧版本号;newrev,新版本号;committer,当前提交代码的用户;REJECT=0,正常
 
export JAVA_HOME=/usr/local/jdk1.8.0_191
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
 
# 命令结果状态
REJECT=0
# 代码检测库
PMD_LIB=/usr/local/p3c-pmd-2.1.1-jar-with-dependencies.jar
# 检测结果国际化语言:en、zh
PMD_LANGUAGE=zh
# 文件字符编码
FILE_ENCODING=utf-8
 
echo "开始进行代码质量检测..."
 
while read oldrev newrev refname; do
    if [ "$oldrev" = "0000000000000000000000000000000000000000" ];then
        oldrev="${newrev}^"
    fi
    committer=`git log -1 $newrev --pretty=%ce`
    files=`git diff --name-only ${oldrev} ${newrev}  | grep -e ".java$"`
    echo $committer
    if [ -n "$files" ]; then
        TEMPDIR="tmp"
        for file in ${files}; do
            mkdir -p "${TEMPDIR}/`dirname ${file}`" > /dev/null
            git show $newrev:$file > ${TEMPDIR}/${file}
        done;
		
        java -Dfile.encoding=$FILE_ENCODING -Dpmd.language=$PMD_LANGUAGE -cp $PMD_LIB net.sourceforge.pmd.PMD -d $TEMPDIR -R rulesets/ali-p3c.xml -f text -shortnames       
         REJECT=$?
        echo "reject = "$REJECT
          if [ $REJECT = 0 ] ;then
            echo "码出高效!您的代码通过阿里巴巴Java开发规范(黄山版)检测!"
    elif [ $committer = 'super@domain.com' ]; then
      echo "特殊情况,特殊处理!"
            REJECT=0
          else  echo  "在您的代码中发现了瑕疵,请及时修复,然后再提交!(代码规范请参考:https://github.com/alibaba/p3c)"
          fi
 
        rm -rf $TEMPDIR
    fi
done
 
exit $REJECT

注:别忘了给此文件加权限

chmod +777 pre-receive

6.提交代码进行测试即可

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/999419.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号