Can you get the number of lines of code from a GitHub repository?

前端 未结 15 1173
庸人自扰
庸人自扰 2020-12-04 04:26

In a GitHub repository you can see “language statistics”, which displays the percentage of the project that’s written in a language. It doesn’t, however, display ho

15条回答
  •  眼角桃花
    2020-12-04 04:58

    A shell script, cloc-git

    You can use this shell script to count the number of lines in a remote Git repository with one command:

    #!/usr/bin/env bash
    git clone --depth 1 "$1" temp-linecount-repo &&
      printf "('temp-linecount-repo' will be deleted automatically)\n\n\n" &&
      cloc temp-linecount-repo &&
      rm -rf temp-linecount-repo
    

    Installation

    This script requires CLOC (“Count Lines of Code”) to be installed. cloc can probably be installed with your package manager – for example, brew install cloc with Homebrew. There is also a docker image published under mribeiro/cloc.

    You can install the script by saving its code to a file cloc-git, running chmod +x cloc-git, and then moving the file to a folder in your $PATH such as /usr/local/bin.

    Usage

    The script takes one argument, which is any URL that git clone will accept. Examples are https://github.com/evalEmpire/perl5i.git (HTTPS) or git@github.com:evalEmpire/perl5i.git (SSH). You can get this URL from any GitHub project page by clicking “Clone or download”.

    Example output:

    $ cloc-git https://github.com/evalEmpire/perl5i.git
    Cloning into 'temp-linecount-repo'...
    remote: Counting objects: 200, done.
    remote: Compressing objects: 100% (182/182), done.
    remote: Total 200 (delta 13), reused 158 (delta 9), pack-reused 0
    Receiving objects: 100% (200/200), 296.52 KiB | 110.00 KiB/s, done.
    Resolving deltas: 100% (13/13), done.
    Checking connectivity... done.
    ('temp-linecount-repo' will be deleted automatically)
    
    
         171 text files.
         166 unique files.                                          
          17 files ignored.
    
    http://cloc.sourceforge.net v 1.62  T=1.13 s (134.1 files/s, 9764.6 lines/s)
    -------------------------------------------------------------------------------
    Language                     files          blank        comment           code
    -------------------------------------------------------------------------------
    Perl                           149           2795           1425           6382
    JSON                             1              0              0            270
    YAML                             2              0              0            198
    -------------------------------------------------------------------------------
    SUM:                           152           2795           1425           6850
    -------------------------------------------------------------------------------
    

    Alternatives

    Run the commands manually

    If you don’t want to bother saving and installing the shell script, you can run the commands manually. An example:

    $ git clone --depth 1 https://github.com/evalEmpire/perl5i.git
    $ cloc perl5i
    $ rm -rf perl5i
    

    Linguist

    If you want the results to match GitHub’s language percentages exactly, you can try installing Linguist instead of CLOC. According to its README, you need to gem install linguist and then run linguist. I couldn’t get it to work (issue #2223).

提交回复
热议问题