Em um repositório do GitHub, você pode ver "estatísticas do idioma", que exibe a porcentagem do projeto que está escrito em um idioma. No entanto, ele não mostra quantas linhas de código o projeto consiste. Freqüentemente, quero ter uma rápida impressão da escala e complexidade de um projeto, e a contagem de linhas de código pode dar uma boa primeira impressão. 500 linhas de código implica um projeto relativamente simples, 100.000 linhas de código implica um projeto muito grande / complicado.
Portanto, é possível obter as linhas de código escritas nas várias linguagens de um repositório do GitHub, preferencialmente sem cloná-lo?
A pergunta “ Contar número de linhas em um repositório git ” pergunta como contar as linhas de código em um repositório Git local, mas:
- Você precisa clonar o projeto, que pode ser enorme. A clonagem de um projeto como o Wine, por exemplo, leva séculos.
- Você contaria linhas em arquivos que não necessariamente seriam código, como arquivos i13n.
- Se você contar apenas (por exemplo) arquivos Ruby, poderá perder uma quantidade enorme de código em outros idiomas, como JavaScript. Você precisaria saber de antemão quais idiomas o projeto usa. Você também teria que repetir a contagem para todos os idiomas que o projeto usa.
Em suma, isso é potencialmente demorado demais para "verificar rapidamente a escala de um projeto".
fonte
git clone --depth 1
. Quanto a 2 e 3, suspeito que exista um software que possa fazer a análise por você, e você pode adivinhar com base em extensões de arquivo, mas estou tendo um tempo infernal com uma boa pesquisa prazo para encontrar o referido software. Talvez você precise fazer outra pergunta.Respostas:
Um script de shell,
cloc-git
Você pode usar esse script de shell para contar o número de linhas em um repositório Git remoto com um comando:
Instalação
Este script requer que o CLOC ("Count Lines of Code") seja instalado.
cloc
provavelmente pode ser instalado com o seu gerenciador de pacotes - por exemplo,brew install cloc
com o Homebrew . Há também uma imagem do docker publicada emmribeiro/cloc
.Você pode instalar o script salvando seu código em um arquivo
cloc-git
, executandochmod +x cloc-git
e movendo o arquivo para uma pasta$PATH
como a/usr/local/bin
.Uso
O script usa um argumento, que é qualquer URL que
git clone
aceitará. Exemplos sãohttps://github.com/evalEmpire/perl5i.git
(HTTPS) ou[email protected]:evalEmpire/perl5i.git
(SSH). Você pode obter esse URL em qualquer página de projeto do GitHub clicando em "Clonar ou baixar".Exemplo de saída:
Alternativas
Execute os comandos manualmente
Se você não quiser se preocupar em salvar e instalar o shell script, execute os comandos manualmente. Um exemplo:
Linguista
Se você deseja que os resultados correspondam exatamente às porcentagens de idioma do GitHub, tente instalar o Linguist em vez do CLOC . De acordo com o seu README , você precisa
gem install linguist
e, em seguida, executelinguist
. Não consegui fazê-lo funcionar ( edição 2223 ).fonte
--depth 1
para baixar apenas o commit mais recente. Para a maioria dos repositórios, isso evita a preocupação da pergunta original de que a clonagem demore muito.cloc
para obter as linhas de código em um repositório do github sem clonar o repositório em nossa máquina (através da Internet). o acima dadocloc-git
aslo primeiros clones de projecto antes do início da contagem a qualquer das linhascloc
para você. Paracloc
contar linhas no código, seu computador precisa fazer o download desse código, embora apenas temporariamente. Observe que mesmo os navegadores da web estão tecnicamente baixando páginas da Web quando você os visita; eles apenas os salvam na memória em vez de no disco.que lhe dará a contagem total →
Ou use esta ferramenta → http://line-count.herokuapp.com/
fonte
git ls-files | grep '\.py' | xargs wc -l
.xargs
awc -l
todos os arquivos manualmente, em seguida, usarawk
a soma da coluna, OMG este é muito mais fácil.Existe uma extensão para o navegador Google Chrome - GLOC, que funciona para repositórios públicos e privados.
Conta o número de linhas de código de um projeto de:
fonte
Se você for para a página de gráficos / colaboradores, poderá ver uma lista de todos os colaboradores do repositório e quantas linhas foram adicionadas e removidas.
A menos que esteja faltando alguma coisa, subtrair o número agregado de linhas excluídas do número agregado de linhas adicionadas a todos os colaboradores deve gerar o número total de linhas de código no repositório. (EDIT: acontece que estava faltando alguma coisa, afinal. Dê uma olhada no comentário do orbitbot para obter detalhes.)
ATUALIZAR:
Esses dados também estão disponíveis na API do GitHub . Então, escrevi um script rápido para buscar os dados e fazer o cálculo:
Basta colá-lo em um snippet do Chrome DevTools, alterar o repositório e clicar em executar.
Isenção de responsabilidade (graças a lovasoa ):
Pegue os resultados desse método com um pouco de sal, porque, para alguns repositórios (sorich87 / bootstrap-tour), resulta em valores negativos, o que pode indicar que há algo errado com os dados retornados da API do GitHub.
ATUALIZAR:
Parece que esse método para calcular o número total de linhas não é totalmente confiável. Dê uma olhada no comentário do orbitbot para detalhes.
fonte
fetch("https://api.github.com/repos/jquery/jquery/stats/code_frequency").then(x=>x.json()).then(x=>alert(x.reduce((total,changes)=>total+changes[1]+changes[2],0)))
Você pode clonar apenas o commit mais recente usando
git clone --depth 1 <url>
e, em seguida, executar sua própria análise usando o Linguist , o mesmo software que o Github usa. Essa é a única maneira que sei que você obterá linhas de código.Outra opção é usar a API para listar os idiomas que o projeto usa . Não os fornece em linhas, mas em bytes. Por exemplo...
Embora leve isso com um pouco de sal, esse projeto inclui YAML e JSON que o site reconhece, mas a API não.
Por fim, você pode usar a pesquisa de código para perguntar quais arquivos correspondem a um determinado idioma. Este exemplo pergunta quais arquivos no perl5i são Perl.
https://api.github.com/search/code?q=language:perl+repo:evalEmpire/perl5i
. Isso não fornecerá linhas e você precisará solicitar o tamanho do arquivo separadamente, usando o retornourl
de cada arquivo.fonte
No momento, não é possível no Github.com ou em suas APIs.
Conversei com o suporte ao cliente e confirmei que isso não pode ser feito no github.com. Eles passaram a sugestão para a equipe do Github, então espero que seja possível no futuro. Nesse caso, editarei esta resposta.
Enquanto isso, a resposta de Rory O'Kane é uma alternativa brilhante baseada em
cloc
um clone de repositório superficial.fonte
Você pode usar a API do GitHub para obter o sloc como a seguinte função
Pessoalmente, fiz uma extensão do chrome que mostra o número de SLOC na lista de projetos do github e na página de detalhes do projeto. Você também pode definir seu token de acesso pessoal para acessar repositórios particulares e ignorar o limite de taxa de API.
Você pode fazer o download aqui https://chrome.google.com/webstore/detail/github-sloc/fkjjjamhihnjmihibcmdnianbcbccpnn
O código fonte está disponível aqui https://github.com/martianyi/github-sloc
fonte
Complemento do Firefox Github SLOC
Eu escrevi um pequeno addon do firefox que imprime o número de linhas de código nas páginas de projeto do github: Github SLOC
fonte
Se a pergunta for "você pode obter rapidamente o NÚMERO DE LINHAS de um repositório no Github", a resposta é não, conforme indicado pelas outras respostas.
No entanto, se a pergunta é "você pode verificar rapidamente a ESCALA de um projeto", geralmente avalio um projeto olhando seu tamanho. É claro que o tamanho incluirá deltas de todas as confirmações ativas, mas é uma boa métrica, pois a ordem de magnitude é bem próxima.
Por exemplo
Qual é o tamanho do projeto "docker"?
No seu navegador, digite api.github.com/repos/ORG_NAME/PROJECT_NAME, ou seja, api.github.com/repos/docker/docker
No hash de resposta, você pode encontrar o atributo size:
Isso deve lhe dar uma idéia da escala relativa do projeto. O número parece estar em KB, mas quando o verifiquei no meu computador, ele é realmente menor, embora a ordem de magnitude seja consistente. (161432 KB = 161 MB, janela de encaixe du -s -h = 65 MB)
fonte
Instruções e Explicação
sloc suporta a formatação da saída como a
cli-table
, asjson
oucsv
. Expressões regulares podem ser usadas para excluir arquivos e pastas ( Mais informações sobre npm ).PowerShell:
rm -r -force ".\react\"
ou no Mac / Unix:rm -rf ".\react\"
Capturas de tela das etapas executadas (cli-table):
saída sloc (sem argumentos):
fonte
Canalize a saída do número de linhas em cada arquivo
sort
para organizar os arquivos por contagem de linhas.git ls-files | xargs wc -l |sort -n
fonte
No comentário do @ Tgr, há uma ferramenta on-line: https://codetabs.com/count-loc/count-loc-online.html
fonte
Abra o terminal e execute o seguinte:
fonte