当前位置:   article > 正文

GIT推送代码时规范性检测配置_gitlab 代码规范检查 push时检查

gitlab 代码规范检查 push时检查

#提前准备文件:checkstyle-8.45.1-all.jar、google_checks.xml

1.修改/etc/gitlab/gitlab.rb配置文件
找到gitlab_shell['custom_hooks_dir']并放开注释
gitlab_shell['custom_hooks_dir']="/opt/gitlab/embedded/service/gitlab-shell/hooks/custom_hooks_dir"
2.在自定义钩子目录下新增文件夹:pre-receive.d, post-receive.d, update.d
3.在pre-receive.d文件夹中新增pre-receive文件并进行编码

  1. #!/bin/bash
  2. #配置jdk
  3. #配置node
  4. #配置python
  5. #需安装pylint pip install pylint
  6. #同级目录下需增加checkstyle-8.45.1-all.jar
  7. #同级目录下需增加google_checks.xml(配置java检测规则)
  8. #同级目录下需增加google_checks.xml(配置java检测规则)
  9. #同级目录下需增加.eslintrc.js(配置vue检测规则)
  10. #npm install eslint --save
  11. #需增加软连接 ln -s /usr/bin/node /node_home/bin/node
  12. #
  13. BASE_PATH=$(cd `dirname $0`;pwd)
  14. JAVA_HOME=/home/zfb/software/jdk1.8.0_162
  15. PY_LINT_HOME=/usr/local/bin/pylint
  16. NPX_HOME=/home/zfb/software/node-v12.18.3-linux-x64/bin/npx
  17. validate_code_rules(){
  18. echo 'Start code analysis!'
  19. old=$(git rev-parse ${param[0]})
  20. new=$(git rev-parse ${param[1]})
  21. JAVA_FIELS=`git diff --name-only ${old} ${new} | grep -e "\.java$"`
  22. PY_FIELS=`git diff --name-only ${old} ${new} | grep -e "\.py$"`
  23. VUE_FIELS=`git diff --name-only ${old} ${new} | grep -e "\.vue$"`
  24. TEMPDIR="${BASE_PATH}/tmp"
  25. #分析JAVA代码
  26. if [ -n "${JAVA_FIELS}" ];then
  27. for FIEL in ${JAVA_FIELS};do
  28. mkdir -p "${TEMPDIR}/`dirname ${FIEL}`" >/dev/null
  29. git show ${new}:${FIEL} > ${TEMPDIR}/${FIEL}
  30. done;
  31. echo ${JAVA_HOME}
  32. result=`${JAVA_HOME}/bin/java -jar ${BASE_PATH}/checkstyle-8.45.1-all.jar -c ${BASE_PATH}/google_checks.xml /tmp`
  33. if [[ ${result} =~ "[WARN]" ]];then
  34. echo -e "${result}" | sed "s#${TEMPDIR}##g"
  35. rm -rf ${TEMPDIR}
  36. #exit 1
  37. fi
  38. #分析PYTHON代码
  39. elif [ -n "${PY_FIELS}" ];then
  40. for FIEL in ${PY_FIELS};do
  41. mkdir -p "${TEMPDIR}/`dirname ${FIEL}`" >/dev/null
  42. git show ${new}:${FIEL} > ${TEMPDIR}/${FIEL}
  43. result=`${PY_LINT_HOME} --rcfile="${BASE_PATH}"/pylint.conf "${TEMPDIR}/${FIEL}"`
  44. if [[ ${result} =~ [CERW][0-9]{4} ]];then
  45. echo -e "${result}" | sed "s#${TEMPDIR}##g"
  46. rm -rf ${TEMPDIR}
  47. exit 1
  48. fi
  49. done;
  50. #分析VUE代码
  51. elif [ -n "${VUE_FIELS}" ];then
  52. for FIEL in ${VUE_FIELS};do
  53. mkdir -p "${TEMPDIR}/`dirname ${FIEL}`" >/dev/null
  54. git show ${new}:${FIEL} > ${TEMPDIR}/${FIEL}
  55. result=`${NPX_HOME} eslint -c "${BASE_PATH}"/.eslintrc.js -f compact --ext .vue "${TEMPDIR}"`
  56. if [[ ${result} =~ ("Error"|"Warning") ]];then
  57. echo -e "${result}" | sed "s#${TEMPDIR}##g"
  58. rm -rf ${TEMPDIR}
  59. exit 1
  60. fi
  61. done;
  62. else
  63. exit 0
  64. fi
  65. }
  66. #读取参数
  67. read -a param
  68. if [ -n "${param[0]}" -a -n "${param[1]}" -a -n "${param[2]}" ];then
  69. validate_code_rules param
  70. rm -rf ${TEMPDIR}
  71. fi

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/46340
推荐阅读
相关标签
  

闽ICP备14008679号