-
2019-05-29 20:13:57
命令行
查看git上的个人代码量:
git log --author="username" --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 }' -
结果示例:(记得修改 username)
added lines: 120745, removed lines: 71738, total lines: 49007
统计每个人增删行数
git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --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 }' -; done
结果示例
Max-laptop added lines: 1192, removed lines: 748, total lines: 444 chengshuai added lines: 120745, removed lines: 71738, total lines: 49007 cisen added lines: 3248, removed lines: 1719, total lines: 1529 max-h added lines: 1002, removed lines: 473, total lines: 529 max-l added lines: 2440, removed lines: 617, total lines: 1823 mw added lines: 148721, removed lines: 6709, total lines: 142012 spider added lines: 2799, removed lines: 1053, total lines: 1746 thy added lines: 34616, removed lines: 13368, total lines: 21248 wmao added lines: 12, removed lines: 8, total lines: 4 xrl added lines: 10292, removed lines: 6024, total lines: 4268 yunfei.huang added lines: 427, removed lines: 10, total lines: 417 ³ö added lines: 5, removed lines: 3, total lines: 2
更多详细命令请查看这篇博客
更多相关内容 -
gitlab统计代码量
2021-02-19 11:03:17gitlab统计代码量 git的代码量大多数都是根据命令行统计,或者根据第三方插件统计。但是都不满足我的需求,因为我们代码都由gitlab管理,于是想到了通过gitlab暴露出来的接口获取数据。 第一步,生成私钥 登录...gitlab统计代码量
git的代码量大多数都是根据命令行统计,或者根据第三方插件统计。但是都不满足我的需求,因为我们代码都由gitlab管理,于是想到了通过gitlab暴露出来的接口获取数据。
第一步,生成私钥
登录你的gitlab申请私钥private_token
第二步,获取当前用户可见的所有项目(即使用户不是成员)
接口地址:gitlab的地址/api/v4/projects/?private_token=xxx
返回参数:[{ "id":219, "description":"", "name":"share-5.2.3.8", "name_with_namespace":"develop / share-5.2.3.8", "path":"share-5.2.3.8", "path_with_namespace":"develop/share-5.2.3.8", "created_at":"2019-07-10T19:59:29.855+08:00", "default_branch":"master", "tag_list":[ ], "ssh_url_to_repo":"git@127.0.0.1:develop/share-5.2.3.8.git", "http_url_to_repo":"http://127.0.0.1/develop/share-5.2.3.8.git", "web_url":"http://127.0.0.1/develop/share-5.2.3.8", "readme_url":"http://127.0.0.1/develop/share-5.2.3.8/blob/master/README.md", "avatar_url":null, "star_count":0, "forks_count":0, "last_activity_at":"2019-07-11T02:53:44.831+08:00", "_links":{ "self":"http://127.0.0.1/api/v4/projects/219", "issues":"http://127.0.0.1/api/v4/projects/219/issues", "merge_requests":"http://127.0.0.1/api/v4/projects/219/merge_requests", "repo_branches":"http://127.0.0.1/api/v4/projects/219/repository/branches", "labels":"http://127.0.0.1/api/v4/projects/219/labels", "events":"http://127.0.0.1/api/v4/projects/219/events", "members":"http://127.0.0.1/api/v4/projects/219/members" }, "archived":false, "visibility":"private", "resolve_outdated_diff_discussions":false, "container_registry_enabled":true, "issues_enabled":true, "merge_requests_enabled":true, "wiki_enabled":true, "jobs_enabled":true, "snippets_enabled":true, "shared_runners_enabled":true, "lfs_enabled":true, "creator_id":14, "namespace":{ "id":17, "name":"develop", "path":"develop", "kind":"group", "full_path":"develop", "parent_id":null }, "import_status":"none", "open_issues_count":0, "public_jobs":true, "ci_config_path":null, "shared_with_groups":[ ], "only_allow_merge_if_pipeline_succeeds":false, "request_access_enabled":false, "only_allow_merge_if_all_discussions_are_resolved":false, "printing_merge_request_link_enabled":true, "merge_method":"merge", "permissions":{ "project_access":null, "group_access":{ "access_level":40, "notification_level":3 } } },...]
参数这么多我们从中抽取出需要的部分
[{ "id":219, "name":"share-5.2.3.8", "name_with_namespace":"develop / share-5.2.3.8", "path_with_namespace":"develop/share-5.2.3.8", "http_url_to_repo":"http://127.0.0.1/develop/share-5.2.3.8.git", "created_at":"2019-07-10T19:59:29.855+08:00", "_links":{ "repo_branches":"http://127.0.0.1/api/v4/projects/219/repository/branches", }, },...]
第三步,遍历项目,根据项目id获取分支列表
接口地址:http://gitlab地址/api/v4/projects/项目id/repository/branches?private_token=xxx
传入参数:无
返回参数:[{ "name":"master", "commit":{ "id":"d1b9747ba994f19fb6afb069b3751bd3cf21rrrr", "short_id":"d1b974123", "title":"添加仓库", "created_at":"2019-07-11T02:53:32.000+08:00", "message":"添加仓库", "author_name":"admin", "author_email":"admin@gmail.com", "authored_date":"2019-07-11T02:53:32.000+08:00", "committer_name":"admin", "committer_email":"admin@gmail.com", "committed_date":"2019-07-11T02:53:32.000+08:00", "parent_ids":[ "25cf5c94b9ddc762bd2be73e1e542ebd26adadf" ] }, "merged":false, "protected":true, "developers_can_push":false, "developers_can_merge":false },...]
第四步,遍历分支,根据分支name获取commits
注意,当title或message首单词为Merge,表示合并操作,剔除此代码量
接口地址:
http://gitlab地址/api/v4/projects/项目id/repository/commits?ref_name=master&private_token=xxx返回参数: [{ "id":"d1b9747ba994f19fb6afb069b3751bd3cf21ag32", "author_name":"admin", "authored_date":"2019-07-11T02:53:32.000+08:00", "committer_email":"admin@gmail.com", "committed_date":"2019-07-11T02:53:32.000+08:00", "created_at":"2019-07-11T02:53:32.000+08:00", "author_email":"admin@gmail.com", "short_id":"d1b9747b", "title":"添加仓库", "parent_ids":[ "25cf5c94b9ddc762bd2be73e1e542ebd26aafd" ], "message":"添加仓库 ", "committer_name":"admin" },...]
第五步,根据commits的id获取代码量
接口地址:
http://gitlab地址/api/v4/projects/项目id/repository/commits/commits的id?private_token=xxx
返回参数:[{ "id":"d1b9747ba994f19fb6afb069b3751bd3cf21334d", "short_id":"d1b9747b", "title":"添加仓库", "created_at":"2019-07-11T02:53:32.000+08:00", "parent_ids":[ "25cf5c94b9ddc762bd2be73e1e542ebd26ad7sdf" ], "message":"添加仓库 ", "author_name":"admin", "author_email":"admin@gmail.com", "authored_date":"2019-07-11T02:53:32.000+08:00", "committer_name":"admin", "committer_email":"admin@gmail.com", "committed_date":"2019-07-11T02:53:32.000+08:00", "stats":{ "additions":21, "deletions":8, "total":29 }, "status":null, "last_pipeline":null, "project_id":219 },...]
stats里面就是我们想要的代码量了,additions为新增,deletions为删除,total为总量。修改操作实际上是删除之后再新增。
需要注意的是,这里统计出来的代码量是代码行数。小结
拿到这些数据之后,不管你是存数据库,还是存excel都很方便,完全可以让系统每天定时去跑,不需要手动执行任何命令。
Gitlab文档:https://docs.gitlab.com/ee/api/README.html -
Git 统计代码量
2018-03-02 17:11:33分析 Git 日志来统计代码量 为啥会用到这个功能呢? 一个是统计工作量,贡献量的时候 —— 这一看就是要发奖金啊 另一个是统计自己代码量的时候 —— 十有八九是准备跳槽了 咳咳,言归正传。我在桔子哥的...分析 Git 日志来统计代码量
为啥会用到这个功能呢?
一个是统计工作量,贡献量的时候 —— 这一看就是要发奖金啊
另一个是统计自己代码量的时候 —— 十有八九是准备跳槽了咳咳,言归正传。我在桔子哥的博客网站 【桔子小窝】 中找到了这篇博客,下面是博客内容。
指定用户名版
git log --author="_Your_Name_Here_" --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 }' -
这句话可以输出当前项目内制定用户名的用户的代码量统计,结果如下:
added lines: 30400 removed lines: 21317 total lines: 9083
使用 ls-file 实现不指定用户版统计行数版
git ls-files -z | xargs -0n1 git blame -w | ruby -n -e '$_ =~ /^.*\((.*?)\s[\d]{4}/; puts $1.strip' | sort -f | uniq -c | sort -n
这段代码比较有意思,它扫描了当前分支的每个文件,然后用 Git 的 blame 功能输出每个人的代码行数,最后用系统命令 sort 和 uniq 实现计数。
结果如下:
8 aaa
9 bbb
145 ccc
146 ddd
261 eee扫描 Log 统计增删行数版
git log --shortstat --pretty="%cE" | sed 's/\(.*\)@.*/\1/' | grep -v "^$" | awk 'BEGIN { line=""; } !/^ / { if (line=="" || !match(line, $0)) {line = $0 "," line }} /^ / { print line " # " $0; line=""}' | sort | sed -E 's/# //;s/ files? changed,//;s/([0-9]+) ([0-9]+ deletion)/\1 0 insertions\(+\), \2/;s/\(\+\)$/\(\+\), 0 deletions\(-\)/;s/insertions?\(\+\), //;s/ deletions?\(-\)//' | awk 'BEGIN {name=""; files=0; insertions=0; deletions=0;} {if ($1 != name && name != "") { print name ": " files " files changed, " insertions " insertions(+), " deletions " deletions(-), " insertions-deletions " net"; files=0; insertions=0; deletions=0; name=$1; } name=$1; files+=$2; insertions+=$3; deletions+=$4} END {print name ": " files " files changed, " insertions " insertions(+), " deletions " deletions(-), " insertions-deletions " net";}'
这段比较复杂,我也没有认真解读,直接贴结果吧:
aaa,: 353 files changed, 9359 insertions(+), 3844 deletions(-), 5515 net
aaa,bbb,: 4 files changed, 144 insertions(+), 2 deletions(-), 142 net
ccc,: 114 files changed, 2301 insertions(+), 481 deletions(-), 1820 net
ddd,: 27 files changed, 1856 insertions(+), 757 deletions(-), 1099 net
eee,: 1726 files changed, 32841 insertions(+), 22719 deletions(-), 10122 net
eee,fff,: 13 files changed, 209 insertions(+), 211 deletions(-), -2 net
ggg,: 53 files changed, 1153 insertions(+), 1170 deletions(-), -17 net
fff,: 2445 files changed, 69875 insertions(+), 62148 deletions(-), 7727 net
fff,eee,: 30 files changed, 394 insertions(+), 472 deletions(-), -78 net
bbb,: 37 files changed, 781 insertions(+), 216 deletions(-), 565 net
hhh,: 4 files changed, 34 insertions(+), 4 deletions(-), 30 net比较奇怪的是会列出两个人同时修改,可能是 merge 操作,没有深究。
扫描 Log 单独统计每个人的增删行数加强版
git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --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 }' -; done
直接上输出:
aaa added lines: 34, removed lines: 4, total lines: 30
bbb added lines: 2301, removed lines: 481, total lines: 1820
ccc added lines: 1856, removed lines: 757, total lines: 1099
ddd added lines: 30400, removed lines: 21317, total lines: 9083
eee added lines: 1153, removed lines: 1170, total lines: -17
fff added lines: 1153, removed lines: 1170, total lines: -17
ggg added lines: 72886, removed lines: 64233, total lines: 8653
hhh added lines: 814, removed lines: 216, total lines: 598
iii added lines: 9503, removed lines: 3846, total lines: 5657第三方小工具版
使用这个工具可以直接输出非常漂亮的统计表格:
https://github.com/oleander/git-fame-rb
gem install git_fame
cd /path/to/gitdir && git fame
Total number of files: 2,053
Total number of lines: 63,132
Total number of commits: 4,330
+————————+——–+———+——-+——————–+
| name | loc | commits | files | percent |
+————————+——–+———+——-+——————–+
| Johan Sørensen | 22,272 | 1,814 | 414 | 35.3 / 41.9 / 20.2 |
| Marius Mathiesen | 10,387 | 502 | 229 | 16.5 / 11.6 / 11.2 |
| Jesper Josefsson | 9,689 | 519 | 191 | 15.3 / 12.0 / 9.3 |
| Ole Martin Kristiansen | 6,632 | 24 | 60 | 10.5 / 0.6 / 2.9 |
| Linus Oleander | 5,769 | 705 | 277 | 9.1 / 16.3 / 13.5 |
| Fabio Akita | 2,122 | 24 | 60 | 3.4 / 0.6 / 2.9 |
| August Lilleaas | 1,572 | 123 | 63 | 2.5 / 2.8 / 3.1 |
| David A. Cuadrado | 731 | 111 | 35 | 1.2 / 2.6 / 1.7 |
| Jonas Ängeslevä | 705 | 148 | 51 | 1.1 / 3.4 / 2.5 |
| Diego Algorta | 650 | 6 | 5 | 1.0 / 0.1 / 0.2 |
| Arash Rouhani | 629 | 95 | 31 | 1.0 / 2.2 / 1.5 |
| Sofia Larsson | 595 | 70 | 77 | 0.9 / 1.6 / 3.8 |
| Tor Arne Vestbø | 527 | 51 | 97 | 0.8 / 1.2 / 4.7 |
| spontus | 339 | 18 | 42 | 0.5 / 0.4 / 2.0 |
| Pontus | 225 | 49 | 34 | 0.4 / 1.1 / 1.7 |
+————————+——–+———+——-+——————–+查漏补缺,一点点也是进步
转载请注明原文出处,尊重原文作者
-
git项目代码量统计,以及cloc统计项目代码量
2018-10-30 11:18:56进入git工程本地存储目录,然后右键-Git...1、统计项目中个人代码量(这里以我git提交代码时的用户名“futao3”为例): git log --author=“futao3” --pretty=tformat: --numstat | awk ‘{ add += $1; subs += $2...当我们参与一个项目开发时,可能会希望知道自己对这个项目的贡献量、代码量等,如果是使用git进行项目代码管理,那么就可以用下面的方法统计自己的代码量等信息。
进入git工程本地存储目录,然后右键-Git Bash Here ,或者进入Bash后,使用cd命令进入git工程存储目录,然后输入下面相关命令:1、统计项目中个人代码量(这里以我git提交代码时的用户名“futao3”为例):
git log --author=“futao3” --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 --author="" --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 }’
3、统计项目所有参与者的代码量:
git log --format=’%aN’ | sort -u | while read name; do echo -en “KaTeX parse error: Expected 'EOF', got '\t' at position 5: name\̲t̲"; git log --au…name” --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 }’ -; done
注:上面统计结果包含项目中所有文件的行数,比如配置文件、sql文件等,不只是Java文件。
4、下面再介绍cloc统计项目代码行数(可查看Java代码行数):
在linux中可以直接用命令行安装使用cloc,在windows中需要先下载软件。
cloc下载地址:https://sourceforge.net/projects/cloc/files/
下载完放到相应项目路径下,然后在git bash中执行命令:
其中blank为文件中空白行数,文件末尾的空白行不算,只算中间的空白行;
comment为注释行数(会自动根据文件类型统计注释行,Java中“//”,python中“#”);
code为代码行数。 -
git如何查看代码量
2019-12-26 16:43:33查看git上的个人代码量: git log --author="username" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", ... -
idea统计代码量
2019-01-30 19:29:04点击File->setting->Plugins搜索Statistic ,之后install,再重启idea,之后在idea编辑器左下角有个Statistic,点击/Refresh 会显示 由于要写其他更加重要的博客,这一篇快速总结 ... -
鸿蒙用460万行的代码量,实现安卓1525万行代码实现的所有功能
2021-06-03 08:39:25鸿蒙即将开源,目前最新的是...OpenHarmony 1.0 提供了OS各子系统 (通信,轻量级图形,ACE runtime等)的基础能力,其目标是可支持各种IOT瘦设备,为了方便表述这些能力的集合,在社区里约定代号为:L0-L1。OpenHarmo... -
通过gitlab远程统计git代码量
2019-07-12 19:03:43git的代码量大多数都是根据命令行统计,或者根据第三方插件统计。但是都不满足我的需求,因为我们代码都由gitlab管理,于是想到了通过gitlab暴露出来的接口获取数据。 第一步,生成私钥 登录你的gitlab申请私钥... -
Python统计gitlab上的代码量
2019-12-11 11:41:53年底了,各大公司都要求每个人统计自己今年的代码量。 使用python写了一个统计gitlab上代码量。 首先安装python-gitlab插件。具体代码如下: #!/usr/bin/python import gitlab import xlwt #用户git账户的... -
计算代码量(行数)
2020-03-17 17:18:25最近需要计算整个项目的代码行数,用网上的工具还要下载、学习、使用,不如自己写一个脚本统计,还可以定制化; 以下代码只统计了.java的,有需要的话可以更改。 五千个.java文件,一百七十万代码,计算使用了6秒... -
统计项目的代码量-通过git命令查看
2019-12-10 13:12:26当前大部分项目都是在git上面做代码的管理,所以当有需求要统计代码量时就非常方便,通过一段git命令就可以。 查看git上的个人代码量: git log --author="username" --pretty=tformat: --numstat | awk '{ add +=... -
AndroidStudio统计项目中的代码量
2018-07-14 16:25:40公司自己的项目,在申请版权的时候,在“计算机软件著作权登记申请表”中需要填写项目的代码量,于是网上查找了资料发现很多都说的是AndroidStudio展示当前行号什么的,并不是真正的统计项目的代码量。有一些资料中... -
世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?
2021-05-27 21:02:13今天分享四个代码量很少,但很牛逼很经典的算法或项目案例。 1、no code 项目地址: https://github.com/kelseyhightower/nocode 这是一个 GitHub 上的项目,目前标星 34k。 它的牛逼之处在于它 基于轻量级跨... -
git查看代码行数代码量
2019-12-30 20:47:31将'start_commit_id'改为第一次提交的id,'end_...就可以统计出两次提交间代码的变化行数。效果如图: git log --author="username" start_commit_id..end_commit_id --pretty=tformat: --numstat | gawk '{... -
IDEA 统计插件Statistic:查看你的代码量
2019-07-16 14:18:02最近接触了一款IDEA统计代码量的插件Statistic,简介一下Statistic的安装。 一、插件下载安装 File->Settings->Plugins,输入Statistic,点击install,安装完后选择重启idea。 二、运行使用 重启完后,点击... -
如何统计Git上每个人的代码量
2018-10-23 16:26:25转载一篇博客: https://segmentfault.com/a/1190000008542123 上面详细介绍了如何去利用Git统计每个人的代码量。 -
git查看代码量
2018-04-19 17:08:471 windows下checkout代码,cmd 下进入项目,之后开始统计git log --author="username_zhou" --pretty=tformat: --numstat | gawk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "added... -
统计代码量方法
2017-08-15 15:14:36统计代码量方法 -
代码量统计小工具V1.0
2011-04-18 13:01:19你想知道自己写过多少行的代码吗?你想知道自己在一个文件中最多写过多少行代码吗?我也想知道 提示:下载后如果有JRE环境可以直接解压点击运行 -
git log统计个人代码量,排除多个文件夹
2019-05-24 17:53:47网上找了半天,没有找到排除文件夹和格式化输出同时出现的代码。这里是自己试出来的代码: git log --author="songyang" --since="2019-05-01" --until="2019-05-31" --pretty=tformat: --numstat -- . ":(exclude... -
Git统计某段时间内的代码量
2018-11-19 10:58:43对当前分支,统计'2018-08-25'~'2018-12-31'时间内的代码量命令: git log --since='2018-08-25' --until='2018-12-31' --format='%aN' | sort -u | while read name; do echo -en "$name,&... -
如何在VS中统计项目代码量
2018-06-04 10:06:40http://www.cnblogs.com/zfanlong1314/archive/2013/03/08/2950100.html按CTRL+F (Find...#开头和/开头或者空行都不计入代码量。如果需要只统计代码文件的代码量,可以选择查找文件的类型,比如什么*.xml, *.resx….... -
Android Studio统计项目代码量
2017-06-27 10:41:44写完项目之后想知道自己写了多少行代码,毕竟代码敲了这么久,敲了多少行代码自己都不知道,我用的是Android studio 开发工具,他有个插件Statistic提供这个功能 首先点击FIle ,找到Setting,点进去 然后... -
svn代码量统计工具
2014-07-15 19:50:48StatSVN介绍 StatSVN是一个Java写的开源代码统计程序,从statCVS移植而来,能够从Subversion...统计svn上代码量的方法--使用statsvn工具 统计分析svn用户每天提交的代码数 一个基于SVN 的代码提交量统计工具 StatSVN -
Git根据日期统计代码量
2017-05-26 17:54:39Git根据日期统计代码量 根据日期统计每个人代码量具体命令: git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --since ==2017-04-21 --until==2017-05-21 --author="$name" ... -
让你的代码量减少3倍!使用kotlin开发Android(一)
2016-10-08 10:03:10kotlin简单,易用,代码量少。这么爽的东西,不敢私藏,所以写出来与大家分享。 可能标题说减少3倍你不信,但事实上并不夸张。通过学习本系列文章,你会发现,代码。真的少了很多。 本系列文章将会使用kotlin从无... -
几种代码量统计工具的安装及使用
2017-06-09 15:50:39基于Windows的git代码统计工具GitStats 1.概述 GitStats是Git的一个统计工具,可以对项目进行比较细致的统计以html的形式展示,比较适合比较大的项目。 GitStats在Windows下使用时有一些需要注意的地方: GitStats在... -
git查看commit提交次数和代码量
2018-10-09 13:13:36分析 Git 日志来统计代码量 指定用户名版 git log --author="_your_name_" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %...