如何简单利用git_stats脚本统计项目的代码量(以及win平台使用时的错误排除)

时间:2022-04-19 08:57:53

废话不多说,先放上几张插件生成的页面的预览图

如何简单利用git_stats脚本统计项目的代码量(以及win平台使用时的错误排除)

(页面主页)

如何简单利用git_stats脚本统计项目的代码量(以及win平台使用时的错误排除)

(每日提交量)

如何简单利用git_stats脚本统计项目的代码量(以及win平台使用时的错误排除)

(代码行数统计,因为是练习项目,很多代码是copy的,不要在意细节)

  预览大致就到这里,当然还有很多其他功能,大家可以自己去尝试了解,我这里简单来普及下如何安装和使用这个插件。(win平台运行会存在一些bug,之后也会普及下如何排除这些bug)

  首先这个插件的名字叫git_stats,如何去下载安装这个插件呢,输入命令 $ gem install git_stats  //就可以了 ,不过这个命令的前提时你安装了ruby,ruby安装很简单,如果你没有安装可以从官网进行下载,顺便附上下载链接:https://www.ruby-lang.org/en/downloads/    (ps:如果本地计算机ruby版本过旧无法安装使用stats的话,请安装最新版本ruby)

  当你安装完git_stats的时候,理论上你就可以使用它了,是不是很方便(linux和mac的都是完美适配,win用户还有一个步骤来解决系统问题存在的字符异常),我们用git-bash进入我们想要统计的项目根目录,然后输入命令 git_stats     //就会显示你可以运行的命令,这里如果想要生成你的项目统计报告的话,输入git_stats generate 就可以在项目文件夹下生成一个stats文件夹,文件夹里面的index.html打开就是我先前展示的网页了,整个统计过程还算比较快,也可能是我项目比较小的原因?

如何简单利用git_stats脚本统计项目的代码量(以及win平台使用时的错误排除)

  接下来我来讲一些win用户在使用的过程中存在的一个坑,就是在输入git_stats generate 之后相信大家都会看到一个严重异常,以及生成的index文件无法打开吧,如果问题是:cannot get it working - fatal: |: no such path in the working tree. 那么不要担心,这个问题是因为win和linux的git命令有些微区别导致的,我们只需要改动脚本中的几个小文件就可以了。这个问题在github上有人给出了答案,外语比较好的话可以直接看我提供的地址:https://github.com/tomgi/git_stats/pull/77/files

  简单来说就是改动你的git_stats插件中的4个文件,你问我你的这个插件装在哪里?在命令行输入gem environment  就会出来一大串,其中的 - INSTALLATION DIRECTORY: /Library/Ruby/Gems/1.8 就是你的安装路径,点进去,然后改动以下4个文件,

【文件1】lib/git_stats/git_data/comment_stat.rb,28行改成

stat_line = commit.repo.run("git show #{commit.sha} | gawk 'BEGIN {adds=0; dels=0} {if ($0 ~ /^\\+#{escaped_string}/) adds++; if ($0 ~ /^\-#{escaped_string}/) dels++} END {print adds \" insertions \" dels \" deletes\"}'").lines.to_a[0]

【文件2】lib/git_stats/git_data/repo.rb,49行改成

@commits ||= run_and_parse("git rev-list --pretty=format:%h^|%at^|%ai^|%aE #{commit_range} #{tree_path} | grep -v commit").map do |commit_line|

79行后增加

def files_by_extension_count
Hash.new
end

【文件3】lib/git_stats/stats_view/view.rb,31行改成

active_page: "authors/#{author.dirname}/#{template}")

【文件4】spec/command_runner_spec.rb 路径下新建文件

 # -*- encoding : utf-8 -*-
#require 'spec_helper'
require '. 如何简单利用git_stats脚本统计项目的代码量(以及win平台使用时的错误排除)b/git_stats/command_runner'
require 'shellwords'

RSpec.describe GitStats::CommandRunner do
  let(:runner) { build(:runner) }

  describe 'command runner' do
    it 'should not treat pipe inside single quotes as a stream operator' do
     runner = GitStats::CommandRunner.new

     command = "git rev-list --pretty=format:%h^|%at^|%ai^|%aE HEAD . | grep -v commit"
     result = runner.run(".",command)
      expect(result).to match(/\+.+|.+|.+|.+/)
    end
  end
end 
【========================分割线===========================】
一共就4个文件需要简单改动一下,如果看我写的不是很清楚可以去我提供的网站去复制黏贴,还是比较方便的。
然后再尝试下在你的项目中运行你的stats,是不是可以正常运行了?如果有成功的小伙伴欢迎点赞:D!
这是这个插件的gihub地址:https://github.com/tomgi/git_stats
 
当然还有一款图形界面做的比较华丽的统计插件,这个笔者暂时也没尝试过,附上地址,欢迎尝试小伙伴去尝试,顺便可以把相关使用心得和我分享一下
插件地址:https://github.com/IonicaBizau/git-stats

如何简单利用git_stats脚本统计项目的代码量(以及win平台使用时的错误排除)