打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
git pre

做为开发人员,每个人写代码都会出现BUG,但要防止低级的BUG出现就要对代码进行质量检查,所以当代码进行提交时对代码进行检查非常有必要,而且能统一代码的规范性。

而我们开发时,进行代码提交用得最多就是SVN与Git仓库来管理,而现在我是用git来进行代码管理的,所以现介绍一下用git如何进行代码检查;

首先

安装Git(网上很多,不讲多),安装jsHint来进行检查,这里我是用nodeJS来进行安装。

安装命令:npm i jshint -g,

然后打开git的pre-commit钩子,位置在yourProject/.git/hooks

添加shell脚本

在pre-commit添加shell脚本:

#!/bin/sh## Run JSHint validation before commit.files=$(git diff HEAD --name-only --diff-filter=ACMR -- static/mobile/**.js)  pass=trueif [ "$files" != "" ]; then      for file in ${files}; do        result=$(jshint ${file})        if [ "$result" != "" ]; then            echo "$result"            echo "\n"            pass=false        fi    donefiif $pass; then      exit 0else      echo ""    echo "COMMIT FAILED:"    echo "Some JavaScript files are invalid. Please fix errors and try committing again."    exit 1fi  

OK,完成,现在执行git commit就能检查要提交的js代码是否通过。

不会shell脚本

作为一个前端人员(我就是),可能对shell脚本编写不太熟,能否不通过编写shell实现呢?

那就用npm上的插件pre-commit来实现,

安装命令:npm i pre-commit --save

然后新建一个package.json,添加pre-commit参数:

数组中的字符串就是要执行的scripts命令:

ok,添加完批,执行git commit,被坑了.....

由于windows是不支持 *.js的写法,直接就报错Can't open file * .js,代码又提交成功,这不是我们想要的效果;

如果要检查就只能用(.)或者指定目录(static/mobile),就会检查所有的文件或者指定目录的js文件,但问题又来了,这样检查就全局检查了,我们的目的只检查提交的更改代码;废话不说,来写插件吧。

先安装jshint在工程,可以给插件调用;

安装命令:npm i jshint --save;

命名为check.js:

check.js代码:

'use strict';var exec = require('child_process').exec,      jsHint = require('jshint').JSHINT,    fs = require('fs');var content = fs.readFileSync('./.jshintrc','utf-8'),      content = JSON.parse(content);var pass = 0;exec('git diff HEAD --name-only --diff-filter=ACMR -- static/mobile/**.js',(error, stdout, stderr) => {      if(stdout.length){        var array = stdout.split('\n');        array.pop();        array.forEach((path) => {            jsHint(fs.readFileSync(path,'utf-8'),content,content.globals);            jsHint.errors.forEach((o) => {                console.log(path + ': line ' +o.line + ', col ' + o.character + ', ' + o.reason);                pass = 1;            });        });        process.exit(pass);    }    if (error !== null) {        console.log('exec error: ' + error);    }});

OK,当执行git commit就可以执行check.js的代码,先获取差异文件,再把错误信息输出,如果有错直接结束进程;

对于不懂shell脚本的前端同学,就很好的扩展这个check.js文件,也可以过滤个别的js文件。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Shell脚本结合Git实现增量项目部署
git 生成patch 方法
git commit push 后,本地项目代码丢失如何找回
如何回滚已经commit的代码(Android Studio)
99%的时间里使用的14个git命令
使用git合并多个提交
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服