git_stats代码统计

文章允许转载,请注明来源:http://blog.csdn.net/feiniao8651/article/details/75006588
有些想写的东西,又没时间去写,就开了个头就放在了草稿箱里,然而公司事情比较多,一直没找到时间将草稿箱的文章写完。今天来补一篇,不过部分细节有点记不太清楚了。

公司最近更新了gitlab代码服务器,界面上UI比旧版本好看了不少,而且也有了profile里显示提交记录的日历图(之前旧版本由于有bug,一直不能正常显示)。
但是日历图只能看到哪天有提交,并不能看到自己写了多少行代码。自己也一直好奇究竟自己能写多少代码量。于是从github上找了一个基于git工程的代码统计工具——git_stats(https://github.com/tomgi/git_stats)。

git_stats基于Ruby,类似的还有基于shell和javascript的工具。但是对比下来感觉这个的功能更强大一些。
这是最终的效果
这里写图片描述

这里写图片描述

1、首先安装Ruby:

根据rubygems.org上的信息,git_stats需要Ruby version>1.9.2,推荐大家编译安装最新版本的ruby。安装完成后查看一下当前的版本号

[root@centos-test ~]# ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]

Ruby1.9.2以上会默认安装包管理工具gem。

gem install git_stats

执行完命令后可以敲一下git_stats命令,查看是否安装成功

[root@centos-test ~]# git_stats
/usr/local/ruby24/lib/ruby/gems/2.4.0/gems/concurrent-ruby-1.0.2/lib/concurrent/map.rb:206: warning: constant ::Fixnum is deprecated
/usr/local/ruby24/lib/ruby/gems/2.4.0/gems/activesupport-5.0.0.1/lib/active_support/xml_mini.rb:51: warning: constant ::Fixnum is deprecated
/usr/local/ruby24/lib/ruby/gems/2.4.0/gems/activesupport-5.0.0.1/lib/active_support/xml_mini.rb:52: warning: constant ::Bignum is deprecated
/usr/local/ruby24/lib/ruby/gems/2.4.0/gems/activesupport-5.0.0.1/lib/active_support/core_ext/numeric/conversions.rb:138: warning: constant ::Fixnum is deprecated
/usr/local/ruby24/lib/ruby/gems/2.4.0/gems/concurrent-ruby-1.0.2/lib/concurrent/map.rb:230: warning: constant ::Fixnum is deprecated
Commands:
  git_stats generate        # Generates the statistics of a repository
  git_stats help [COMMAND]  # Describe available commands or one specific command

如果有类似输出,证明git_stats已经安装成功了。

2、配置语言包

从github上来看,git_stats是支持中文的。但是我们在执行git_stats -o stats –lanuage zh时,却会报错:

[root@bj-centos-test smartSales]# git_stats generate -o stats --language zh
/usr/local/ruby24/lib/ruby/gems/2.4.0/gems/concurrent-ruby-1.0.2/lib/concurrent/map.rb:206: warning: constant ::Fixnum is deprecated
/usr/local/ruby24/lib/ruby/gems/2.4.0/gems/activesupport-5.0.0.1/lib/active_support/xml_mini.rb:51: warning: constant ::Fixnum is deprecated
/usr/local/ruby24/lib/ruby/gems/2.4.0/gems/activesupport-5.0.0.1/lib/active_support/xml_mini.rb:52: warning: constant ::Bignum is deprecated
/usr/local/ruby24/lib/ruby/gems/2.4.0/gems/activesupport-5.0.0.1/lib/active_support/core_ext/numeric/conversions.rb:138: warning: constant ::Fixnum is deprecated
/usr/local/ruby24/lib/ruby/gems/2.4.0/gems/concurrent-ruby-1.0.2/lib/concurrent/map.rb:230: warning: constant ::Fixnum is deprecated
/usr/local/ruby24/lib/ruby/gems/2.4.0/gems/i18n-0.7.0/lib/i18n.rb:284:in `enforce_available_locales!': "zh" is not a valid locale (I18n::InvalidLocale)
        from /usr/local/ruby24/lib/ruby/gems/2.4.0/gems/i18n-0.7.0/lib/i18n/config.rb:13:in `locale='
        from /usr/local/ruby24/lib/ruby/gems/2.4.0/gems/i18n-0.7.0/lib/i18n.rb:35:in `locale='
        from /usr/local/ruby24/lib/ruby/gems/2.4.0/gems/git_stats-1.0.14/lib/git_stats/cli.rb:17:in `generate'
        from /usr/local/ruby24/lib/ruby/gems/2.4.0/gems/thor-0.19.1/lib/thor/command.rb:27:in `run'
        from /usr/local/ruby24/lib/ruby/gems/2.4.0/gems/thor-0.19.1/lib/thor/invocation.rb:126:in `invoke_command'
        from /usr/local/ruby24/lib/ruby/gems/2.4.0/gems/thor-0.19.1/lib/thor.rb:359:in `dispatch'
        from /usr/local/ruby24/lib/ruby/gems/2.4.0/gems/thor-0.19.1/lib/thor/base.rb:440:in `start'
        from /usr/local/ruby24/lib/ruby/gems/2.4.0/gems/git_stats-1.0.14/bin/git_stats:10:in `<top (required)>'
        from /usr/local/ruby24/bin/git_stats:22:in `load'
        from /usr/local/ruby24/bin/git_stats:22:in `<main>'

这是因为gem仓库里的git_stats并不是最新的版本,里面还没有增加对中文的支持。那我们只能等更新仓库了吗?当然不是,这里用到了一种解决方式,也是python和Ruby工程,依赖其他包的时常用的一个方法。
根据github上git_stats工程的结构,可以看到一个config/locales/目录下存有各个语言的支持文件,我们可以将中文的支持文件下载到本地,然后把文件添加到我们本地的git_stats包里即可。
如果对Ruby包存放路径不了解的话,可以使用locate命令:

#updatedb   //更新一下文件索引
#locate git_stats

locate就会定位出git_stats包所在的路径,我的电脑上是在/usr/local/ruby24/lib/ruby/gems/2.4.0/gems/git_stats-1.0.14路径下

cd /usr/local/ruby24/lib/ruby/gems/2.4.0/gems/git_stats-1.0.14

可以看到这个路径下的文件结构和github上非常相似。把github上config/locales下的文件复制粘贴到到本地config/locales路径下,本地的git_stats就可以支持中文了。

3、运行git_stats生成报告

git_stats是通过一系列git命令,分析git工程中的记录来生成对应的报告。所以我们首先要切换到要分析的工程路径下,然后执行命令

git_stats generate -o stats --language zh_tw  //注意这里是zh_tw,zh还是会报错

报告会以网页形式生成到当前路径下的stats目录中,如果本地有浏览器,就可以直接访问index.html文件,如果是在服务器上,可以配置一个nginx来远程访问报告页面。
赶快去尝试一下吧。

类似项目
git-stats(https://github.com/IonicaBizau/git-stats)

猜你喜欢

转载自blog.csdn.net/feiniao8651/article/details/75006588