精华内容
下载资源
问答
  • gitlab统计代码量

    千次阅读 2021-02-19 11:03:17
    gitlab统计代码量 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 |
    +————————+——–+———+——-+——————–+

    查漏补缺,一点点也是进步

    转载请注明原文出处,尊重原文作者
    展开全文
  • 代码行数统计工具(SourceCounter) 简单易用,安装可以选择语言,这里是实属无奈需要积分下载,如有需要可以csdn留言免费下载,
  • GIT统计代码量及IDEA Statistic统计解析

    千次阅读 2021-01-04 12:48:06
    GIT统计代码量 Git统计个人提交代码行数 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 += ...

     GIT统计代码量

    •  Git统计个人提交代码行数

    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
    •  Git统计项目总行数

    git log  --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 }' -
    • 查看git上个人代码量(需要修改username!!!)

    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 }' -
    • 查看时间范围内,个人代码量统计

    git log --since="2021-01-08" --before="2021-01-14" --author="liuwei" \
    --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "新增行数: %s, 移除行数: %s, 总行数: %s\n", add, subs, loc }'
    • 查看仓库提交者排名前 5

    git log --pretty='%aN' | sort | uniq -c | sort -k1 -n -r | head -n 5
    • 贡献者统计

    git log --pretty='%aN' | sort -u | wc -l
    • 提交数统计

    git log --oneline | wc -l

     Statistic统计

    1. idea按照Statistic插件
    2. 重启后执行statistic
    3. idea下方会显示Statistic以下列表统计框
    • Extension:文件扩展后缀名
    • Count:文件数量
    • Size SUM:文件大小
    • Size MIN:同类文件中最小文件的大小
    • Size MAX:同类文件中最大文件的大小
    • Size AVG:文件平均大小
    • Lines: 同类文件所有行数
    • Lines MIN:同类文件中行数最小
    • Lines MAX:同类文件中行数量大
    • Lines AVG:同类文件的平均行数

    • Total Lines :代码总行数(包括注释,空行)
    • Source Code Lines :源代码行数(不包括注释,空行)
    • Source Code Lines(%) :源代码行数百分比(Source Code Lines/Total Lines)
    • Comment Lines :注释行数
    • Comment Lines(%) : 注释行数百分比(Comment Lines/Total Lines)
    • Blank Lines : 空行数
    • Blank Lines(%) : 空行百分比(Blank Lines/Total Lines)
    展开全文
  • GitHub统计代码量

    2021-01-11 16:51:26
    1. 统计某人提交的代码量 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", ...

    1. 统计某人提交的代码量

    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 }' -
    

    2. 统计某人提交次数

     git log --author="car" --oneline | wc -l
    
    展开全文
  • idea统计代码量

    千次阅读 2019-01-30 19:29:04
    点击File->setting->Plugins搜索Statistic ,之后install,再重启idea,之后在idea编辑器左下角有个Statistic,点击/Refresh 会显示 由于要写其他更加重要的博客,这一篇快速总结 ...
  • 代码量统计工具

    2014-01-07 16:09:51
    代码量统计工具 1、支持批量代码统计 2、支持函数代码量统计 3、支持统计结果导出 此为v1.0版本,仅支持cpp文件统计。 操作手顺: 1、[目录]按钮,选择代码所在目录 2、选择文件类型:cpp 3、开始分析 4、状态栏...
  • linux下统计代码量

    千次阅读 2018-07-04 22:07:18
      在日常工作时,可能需要统计代码量,在linux下可以使用cloc工具来统计代码量。在ubuntu下可以直接使用如下命令安装cloc工具 sudo apt-get install cloc 安装之后,即可以使用cloc的命令来统计代码量,比如...
  • Git根据日期统计代码量

    千次阅读 2019-08-22 09:27:55
    修改对应的日期 git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --since ==2019-04-21 --until==2017-05-21 --...
  • Git统计代码量

    千次阅读 2019-01-25 16:56:54
    这句话可以输出当前项目内指定项目名的用户的代码量统计, 结果如下: added lines: 30400 removed lines: 21317 total lines: 9083 2 使用ls -file实现不指定用户统计行数版 git ls-files -z | xargs -0n1 ...
  • 精确统计代码量(Java实现)

    万次阅读 2017-06-27 10:13:42
    1、利用eclipse统计代码行数; 2、Java实现统计代码行数,利用正则表达式,去掉空行,去掉注释
  • 统计代码量方法

    千次阅读 2017-08-15 15:14:36
    统计代码量方法
  • idea集成statistic插件统计代码量

    千次阅读 2019-02-13 09:42:30
    一、在线安装 略 二、离线安装 ...10、上面的tab 切换可以查看不同类型文件的统计,如查看java代码量 11、在Statistic中,可以通过settings操作,设置排除统计的文件类型和文件夹 参考资料: ...
  • 统计代码行数,eclipse中采用CTRL + H 如下图:如果是java代码,改成.java即可。
  • git统计代码量相关命令

    千次阅读 2016-12-16 15:17:41
    统计某人的代码提交,包括增加,删除: [plain] view plain copy git log --author="$(git config --get user.name)" --pretty=tformat: --numstat | gawk '{ add += $1 ; subs += $2 ;...
  • 代码量检测工具cct

    2018-12-18 16:25:15
    代码量统计工具,日常工作统计代码量足够了,操作简单方便
  • statsvn代码量统计工具

    2013-06-08 12:23:51
    StatSVN是一个Java写的开源代码统计程序,从statCVS移植而来,能够从Subversion版本库中取得信息,然后生成描述项目开发的各种表格和图表。比如:代码行数的时间线;针对每个开发者的代码行数;开发者的活跃程度;...
  • 代码行数统计工具

    2018-07-19 17:23:37
    代码行数统计工具,所有项目通用,代码行数统计工具,所有项目通用
  • GIT分支代码统计

    2019-05-08 10:12:07
    GIT分支代码统计,安人员统计,分2步,第一步完成后可以手动修改统计的异常数据,然后执行第二部,得到更准确的统计数据。
  • VS中统计代码量

    千次阅读 2015-04-15 10:30:10
    按CTRL+F (Find in files),选择在文件中查找勾上支持正则表达式,然后输入搜索内容: ^:b*[^:b#/]+.*$ #开头和/开头或者空行都不...如果需要只统计代码文件的代码量,可以选择查找文件的类型,比如什么*.xml,...
  • 显示项目统计数量。 这个插件显示的是按扩展名排序的文件,以及大小、行数、LOC等。 用户可以选择统计(Project/Module/Package/File)范围,选择范围后需要点击Refresh,。 (这个插件需要Java1.8)
  • Eclipse中用于统计代码量的插件

    热门讨论 2009-08-25 10:44:33
    Eclipse中用于统计代码量的插件。 org.holon.statistic.lines_1.0.0。 (含使用帮助)
  • 超好用的代码统计工具,不需要破解,下载安装后就能用,安装简单
  • Java之统计项目代码量

    千次阅读 2018-07-20 14:29:21
    精确统计代码量(Java实现) 利用java小工具-----统计项目代码量java项目代码统计 Java统计自己的工程代码总行数 Java 统计一个项目中src下的所有 .java 文件的代码行数, 注释行数, 空行数 java 代码覆盖率 ...
  • AndroidStudio统计项目中的代码量

    千次阅读 2018-07-14 16:25:40
    公司自己的项目,在申请版权的时候,在“计算机软件著作权登记申请表”中需要填写项目的代码量,于是网上查找了资料发现很多都说的是AndroidStudio展示当前行号什么的,并不是真正的统计项目的代码量。有一些资料中...
  • c#统计项目源代码行数,包括源代码,可自定义排除行,导出excel
  • 统计你的工程的代码行数,可以设置过滤的文件类型,支持批量添加文件,用Visual C++开发。
  • 代码量统计软件

    2018-12-18 12:53:31
    这是一款代码统计工具,能够快速统计出项目中代码行数等参数。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 417,007
精华内容 166,802
关键字:

如何统计代码量