如何计算本地文件与GitLab远程版本的变更行数并生成代码churn报告?
我来帮你搞定这份代码churn报告!针对你的三个服务目录,我们可以用Git自带的命令轻松统计变更行数,还能整理成清晰的报告文件,下面是具体步骤:
生成代码Churn变更报告的实操方案
步骤1:切换到项目根目录
先打开命令行(CMD或PowerShell),切换到你的服务目录根路径:
cd C:\dev_ws\helloApp\services
步骤2:逐个服务统计变更详情
针对每个服务目录,用git diff对比本地版本和GitLab远程分支(假设你要对比的是main分支,可根据实际分支名调整):
统计ServiceA
cd ServiceA # 查看文件级别的变更概览 git diff origin/main --stat --shortstat # 查看每行的新增/删除行数详情 git diff origin/main --numstat cd ..
统计ServiceB
cd ServiceB git diff origin/main --stat --shortstat git diff origin/main --numstat cd ..
统计ServiceC
cd ServiceC git diff origin/main --stat --shortstat git diff origin/main --numstat cd ..
步骤3:一键汇总所有服务的总行数
不想逐个目录切换?直接在services目录下运行这条命令,就能自动统计三个服务的总变更行数:
git diff origin/main --numstat ServiceA/ ServiceB/ ServiceC/ | awk '{add += $1; del += $2} END {print "总新增行数: " add "\n总删除行数: " del "\n总变更行数: " add+del}'
这里的awk命令会自动把所有文件的新增、删除行数累加,直接输出总数。
步骤4:生成格式化的Markdown报告
把统计结果输出到一个报告文件里,方便后续查看和分享:
echo "# 代码Churn变更报告" > code_churn_report.md echo "## 统计时间: $(date)" >> code_churn_report.md echo -e "\n### 各服务变更详情" >> code_churn_report.md git diff origin/main --stat ServiceA/ ServiceB/ ServiceC/ >> code_churn_report.md echo -e "\n### 总行数统计" >> code_churn_report.md git diff origin/main --numstat ServiceA/ ServiceB/ ServiceC/ | awk '{add += $1; del += $2} END {print "总新增行数: " add "\n总删除行数: " del "\n总变更行数: " add+del}' >> code_churn_report.md
运行完成后,你会在services目录下得到一份code_churn_report.md,里面包含了所有统计信息。
小提醒
- 如果你的远程分支不是
main,记得把命令里的origin/main改成实际的分支名(比如origin/develop)。 - 如果只想统计特定类型的文件(比如
.java或.py),可以在命令最后加上筛选条件,比如-- *.java。
内容的提问来源于stack exchange,提问作者Mega
相关产品推荐
相关产品推荐

