在GitHub存储库中,你可以看到“语言统计”,它显示了用某种语言编写的项目的百分比。但是,它不显示项目由多少行代码组成。通常,我想快速了解项目的规模和复杂性,而代码行数可以给人留下良好的第一印象。500行代码意味着一个相对简单的项目,10万行代码意味着一个非常大/复杂的项目。
那么,是否有可能从GitHub存储库中获得以各种语言编写的代码行,最好不克隆它?
“计算git存储库中的行数”问题询问如何计算本地git存储库中的代码行数,但是:
你必须克隆这个项目,这可能是巨大的。例如,克隆Wine这样的项目需要很长时间。
你可以计算文件中不一定是代码的行数,比如i13n文件。
如果您只计算(例如)Ruby文件,那么您可能会错过大量其他语言的代码,比如JavaScript。您必须事先知道项目使用哪些语言。您还必须为项目使用的每种语言重复计数。
总而言之,这对于“快速检查项目规模”来说可能太费时了。
如果您转到图表/贡献者页面,您可以看到回购的所有贡献者的列表,以及他们添加和删除了多少行。
除非我遗漏了什么,否则从所有贡献者中添加的总行数中减去删除的总行数应该得到repo中代码的总行数。(编辑:事实证明,我还是错过了一些东西。详情请看orbitbot的评论。)
更新:
这些数据也可以在GitHub的API中找到。所以我写了一个快速脚本来获取数据并进行计算:
'use strict';
async function countGithub(repo) {
const response = await fetch(`https://api.github.com/repos/${repo}/stats/contributors`)
const contributors = await response.json();
const lineCounts = contributors.map(contributor => (
contributor.weeks.reduce((lineCount, week) => lineCount + week.a - week.d, 0)
));
const lines = lineCounts.reduce((lineTotal, lineCount) => lineTotal + lineCount);
window.alert(lines);
}
countGithub('jquery/jquery'); // or count anything you like
只需将其粘贴到Chrome DevTools代码片段中,更改repo并单击运行。
免责声明(感谢lovasoa):
对这种方法的结果持保留态度,因为对于一些回购(sorich87/bootstrap-tour),它的结果是负值,这可能表明从GitHub的API返回的数据有问题。
更新:
看起来这种计算总行数的方法并不完全可靠。详情请看orbitbot的评论。
你可以使用tokei:
cargo install tokei
git clone --depth 1 https://github.com/XAMPPRocky/tokei
tokei tokei/
输出:
===============================================================================
Language Files Lines Code Comments Blanks
===============================================================================
BASH 4 48 30 10 8
JSON 1 1430 1430 0 0
Shell 1 49 38 1 10
TOML 2 78 65 4 9
-------------------------------------------------------------------------------
Markdown 4 1410 0 1121 289
|- JSON 1 41 41 0 0
|- Rust 1 47 38 5 4
|- Shell 1 19 16 0 3
(Total) 1517 95 1126 296
-------------------------------------------------------------------------------
Rust 19 3750 3123 119 508
|- Markdown 12 358 5 302 51
(Total) 4108 3128 421 559
===============================================================================
Total 31 6765 4686 1255 824
===============================================================================
Tokei支持徽章:
数线
[![](https://tokei.rs/b1/github/XAMPPRocky/tokei)](https://github.com/XAMPPRocky/tokei)
默认情况下,徽章将显示回购的LoC(代码行),您也可以指定为它显示一个不同的类别,通过使用?category=查询字符串。它可以是代码、空格、文件、行、注释。
计算文件
[![](https://tokei.rs/b1/github/XAMPPRocky/tokei?category=files)](https://github.com/XAMPPRocky/tokei)