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

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


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

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

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


当前回答

你可以使用GitHub API像下面的函数一样获得sloc

function getSloc(repo, tries) {

    //repo is the repo's path
    if (!repo) {
        return Promise.reject(new Error("No repo provided"));
    }

    //GitHub's API may return an empty object the first time it is accessed
    //We can try several times then stop
    if (tries === 0) {
        return Promise.reject(new Error("Too many tries"));
    }

    let url = "https://api.github.com/repos" + repo + "/stats/code_frequency";

    return fetch(url)
        .then(x => x.json())
        .then(x => x.reduce((total, changes) => total + changes[1] + changes[2], 0))
        .catch(err => getSloc(repo, tries - 1));
}

我个人做了一个chrome扩展,显示在github项目列表和项目详细页面SLOC的数量。您还可以设置您的个人访问令牌来访问私有存储库并绕过api速率限制。

你可以从这里下载https://chrome.google.com/webstore/detail/github-sloc/fkjjjamhihnjmihibcmdnianbcbccpnn

源代码可在这里https://github.com/martianyi/github-sloc

其他回答

npm install sloc -g
git clone --depth 1 https://github.com/vuejs/vue/
sloc ".\vue\src" --format cli-table
rm -rf ".\vue\"

说明及说明

从npm安装sloc,一个命令行工具(需要安装Node.js)。

npm install sloc -g

克隆浅库(下载速度比完整克隆快)。

git clone --depth 1 https://github.com/facebook/react/

运行sloc并指定要分析的路径。

sloc ".\react\src" --format cli-table

Sloc支持将输出格式化为cli-table、json或csv。正则表达式可以用来排除文件和文件夹(更多关于npm的信息)。

删除存储库文件夹(可选)

Powershell: rm -r -force "。\react\"或Mac/Unix: rm -rf ".\react\"

执行步骤的截图(cli-table):

Sloc输出(无参数):

使用——details选项也可以获取每个文件的详细信息:

sloc ".\react\src" --format cli-table --details     

我为谷歌Chrome浏览器创建了一个扩展- GLOC,适用于公共和私人回购。

计算项目的代码行数:

项目详情页面 用户的存储库 组织页面 搜索结果页面 趋势页面 探索页面


Firefox插件Github SLOC

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

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

它是这样的:

NPM I -g @quasimodo147/countlines

在终端中获取$ countlines命令

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

你可以运行

git ls-files | xargs wc -l

哪一个能告诉你总数

您还可以添加更多的说明。比如只看JavaScript文件。

git ls-files | grep '\.js' | xargs wc -l

或者使用这个方便的小工具→https://line-count.herokuapp.com/