在GitHub存储库中,你可以看到“语言统计”,它显示了用某种语言编写的项目的百分比。但是,它不显示项目由多少行代码组成。通常,我想快速了解项目的规模和复杂性,而代码行数可以给人留下良好的第一印象。500行代码意味着一个相对简单的项目,10万行代码意味着一个非常大/复杂的项目。

那么,是否有可能从GitHub存储库中获得以各种语言编写的代码行,最好不克隆它?


“计算git存储库中的行数”问题询问如何计算本地git存储库中的代码行数,但是:

你必须克隆这个项目,这可能是巨大的。例如,克隆Wine这样的项目需要很长时间。 你可以计算文件中不一定是代码的行数,比如i13n文件。 如果您只计算(例如)Ruby文件,那么您可能会错过大量其他语言的代码,比如JavaScript。您必须事先知道项目使用哪些语言。您还必须为项目使用的每种语言重复计数。

总而言之,这对于“快速检查项目规模”来说可能太费时了。


当前回答

Firefox插件Github SLOC

我写了一个小的firefox插件,打印在github项目页面上的代码行数:github SLOC

其他回答

从@Tgr的评论中,有一个在线工具: https://codetabs.com/count-loc/count-loc-online.html

如果问题是“你能否快速获得一个github回购的行数”,答案是否定的,正如其他答案所述。

然而,如果问题是“你能否快速检查项目的规模”,我通常会通过查看项目的规模来评估项目。当然,大小将包括来自所有活动提交的增量,但它是一个很好的度量,因为数量级非常接近。

E.g.

docker项目有多大?

在浏览器中输入api.github.com/repos/ORG_NAME/PROJECT_NAME 即api.github.com/repos/docker/docker

在响应散列中,你可以找到size属性:

{
    ...
    size: 161432,
    ...
}

这应该会让你对项目的相对规模有一个概念。这个数字似乎是以KB为单位的,但当我在电脑上查看它时,它实际上更小,尽管数量级是一致的。(161432KB = 161MB, du -s -h docker = 65MB)

这里的答案没有一个符合我的要求。我只想使用现有的实用程序。下面的脚本将使用基本的实用程序:

Git GNU或BSD awk GNU或BSD sed Bash

获取添加到存储库的总行数(从添加的行中减去删除的行)。

#!/bin/bash
git diff --shortstat 4b825dc642cb6eb9a060e54bf8d69288fbee4904 HEAD | \
sed 's/[^0-9,]*//g' | \
awk -F, '!($2 > 0) {$2="0"};!($3 > 0) {$3="0"}; {print $2-$3}'

获取已知源代码的指定文件类型(例如*.py文件或添加更多扩展名等)筛选的代码行。

#!/bin/bash
git diff --shortstat 4b825dc642cb6eb9a060e54bf8d69288fbee4904 HEAD -- *.{py,java,js} | \
sed 's/[^0-9,]*//g' | \
awk -F, '!($2 > 0) {$2="0"};!($3 > 0) {$3="0"}; {print $2-$3}'

4b825dc642cb6eb9a060e54bf8d69288fbee4904是Git中“空树”的id,它在每个存储库中始终可用。

来源:

我自己的脚本 如何获得Git差异的第一次提交? 有没有办法让git显示行增加,行改变和行删除?

我专门为这种用法做了一个NPM包,它允许你调用CLI工具,并提供要忽略的目录路径和文件夹/文件

它是这样的:

NPM I -g @quasimodo147/countlines

在终端中获取$ countlines命令

然后你就可以 countlines。Node_modules构建dist

还有另一个在线工具,可以计算公共和私人回购的代码行数,而无需克隆/下载它们——https://klock.herokuapp.com/