git_stats程式碼統計
文章允許轉載,請註明來源:http://blog.csdn.net/feiniao8651/article/details/75006588
有些想寫的東西,又沒時間去寫,就開了個頭就放在了草稿箱裡,然而公司事情比較多,一直沒找到時間將草稿箱的文章寫完。今天來補一篇,不過部分細節有點記不太清楚了。
公司最近更新了gitlab程式碼伺服器,介面上UI比舊版本好看了不少,而且也有了profile裡顯示提交記錄的日曆圖(之前舊版本由於有bug,一直不能正常顯示)。
但是日曆圖只能看到哪天有提交,並不能看到自己寫了多少行程式碼。自己也一直好奇究竟自己能寫多少程式碼量。於是從github上找了一個基於git工程的程式碼統計工具——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命令,檢視是否安裝成功
[[email protected] ~]# 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時,卻會報錯:
[[email protected] 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來遠端訪問報告頁面。
趕快去嘗試一下吧。