你竟然不知道如何用git来统计代码?

当我们维护一个开源项目的时候,你肯定想知道哪些人比较活跃,哪些人贡献比较多。这时候就需要一个简单易用的工具,下面我来介绍几款。

# 场景

目前大部分的项目可能都会用到 Git 来做代码管理,那么我们在不断的修改项目的过程中,可能会关注如下几个问题:

1.每个参与者贡献代码量,按劳分配某些资源;

2.参与者的代码增删量,提交次数等;

3.统计活跃度;

那么,如何来对代码量做统计呢?

# 常规操作

一般情况,我们可以直接通过 Git log 来统计。

1、统计个人代码量:

git log --author="jartto" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -

2、贡献值统计:

git log --pretty='%aN' | sort -u | wc -l

3、查看排名前 5 的贡献者:

git log --pretty='%aN' | sort | uniq -c | sort -k1 -n -r | head -n 5

# 使用 git_stats

首先,我们需要全局安装 git_stats

sudo gem install git_stats

接下来,运行

git_stats generate

打开 git_stats 目录

cd git_stats && open index.html

# 演示

1、概览

2、Dashboard 可视化

如果你对 git_stats 生成的一大堆文件不满意,我们还有一种方式可以「无侵入」,同时显得更加「高冷」。

# cloc

cloc 最优秀的地方就是「简洁粗暴」,我们来尝试一下。

尝试一下 cloc,首先,全局安装:

npm install -g cloc

简单用例

cloc [options]

Count physical lines of source code and comments in the given files

(may be archives such as compressed tarballs or zip files) and/or

recursively below the given directories or git commit hashes.

Example: cloc src/ include/ main.c

cloc [options] --diff

Compute differences of physical lines of source code and comments

between any pairwise combination of directory names, archive

files or git commit hashes.

Example: cloc --diff Python-3.5.tar.xz python-3.6/

使用

Usage: cloc [options] | |

进入项目,执行:

cloc .

稍等片刻,就会有一个输出结果:

-----------------------------------------------------------------------------------

Language files blank comment code

-----------------------------------------------------------------------------------

JavaScript 10319 172724 254924 951843

HTML 679 120179 3665 224595

JSON 1714 256 0 182127

Markdown 1400 63461 2 171768

C++ 69 3538 3197 20331

Python 51 4292 7801 19137

C/C++ Header 117 3628 2033 18942

CSS 113 2011 823 16594

XML 32 4427 1300 11277

Sass 65 282 414 4255

Stylus 60 539 593 3215

YAML 189 324 413 3039

D 57 0 0 3003

EJS 113 43 8 2160

reStructuredText 18 681 51 2122

Bourne Shell 20 394 398 1875

SVG 5 0 1 1646

LESS 13 26 33 1343

make 42 378 245 1310

TypeScript 17 276 584 1161

Perl 1 87 170 582

DTD 1 179 177 514

m4 2 40 2 266

Lisp 3 42 38 264

Bourne Again Shell 8 43 24 161

C 4 40 37 149

Ruby 6 24 5 140

JSON5 2 0 0 123

CoffeeScript 3 18 28 99

Handlebars 4 18 0 96

Smarty 6 17 30 91

Windows Resource File 1 1 1 33

DOS Batch 5 2 0 16

IDL 1 1 0 11

zsh 1 4 13 7

-----------------------------------------------------------------------------------

更多的使用命令,可以查看帮助

cloc --help

# 总结

上文介绍了三种 Git 代码统计方式:

通过 Git log 统计,稍微会麻烦一些,需要有一些 awk 知识的储备;

使用插件 git_stats 来生成可视化报告,对用户友好。美中不足就是会在当前项目增加很多 html 统计可视化文件;

命令行工具 cloc,简单易用,无侵入,使用门槛低;

综上所述,我们可以按照自己的使用场景来灵活的选用不同方式。

来源网络,侵权联系删除

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190809A05KTK00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券