Dans un référentiel GitHub, vous pouvez voir des «statistiques linguistiques», qui affichent le pourcentage du projet qui est écrit dans une langue. Cependant, il n'affiche pas le nombre de lignes de code du projet. Souvent, je veux rapidement me faire une idée de l'échelle et de la complexité d'un projet, et le nombre de lignes de code peut donner une bonne première impression. 500 lignes de code impliquent un projet relativement simple, 100 000 lignes de code impliquent un projet très volumineux / compliqué.
Alors, est-il possible d'obtenir les lignes de code écrites dans les différents langages à partir d'un référentiel GitHub, de préférence sans le cloner?
La question « Compter le nombre de lignes dans un référentiel git » demande comment compter les lignes de code dans un référentiel Git local, mais:
- Vous devez cloner le projet, ce qui pourrait être énorme. Le clonage d'un projet comme Wine, par exemple, prend des années.
- Vous compteriez des lignes dans des fichiers qui ne seraient pas nécessairement du code, comme les fichiers i13n.
- Si vous ne comptez que (par exemple) les fichiers Ruby, vous risquez de manquer une énorme quantité de code dans d'autres langues, comme JavaScript. Il faudrait savoir à l'avance quelles langues le projet utilise. Vous devrez également répéter le décompte pour chaque langue utilisée par le projet.
Dans l'ensemble, cela est potentiellement beaucoup trop de temps pour «vérifier rapidement l'échelle d'un projet».
la source
git clone --depth 1
. En ce qui concerne 2 et 3, je soupçonne qu'il existe un logiciel qui peut faire l'analyse pour vous, et vous pouvez faire beaucoup de suppositions en fonction des extensions de fichier, mais j'ai beaucoup de temps à trouver une bonne recherche terme pour trouver ledit logiciel. Vous devrez peut-être poser une autre question.Réponses:
Un script shell,
cloc-git
Vous pouvez utiliser ce script shell pour compter le nombre de lignes dans un référentiel Git distant avec une seule commande:
Installation
Ce script nécessite l' installation de CLOC («Count Lines of Code»).
cloc
peut probablement être installé avec votre gestionnaire de paquets - par exemple,brew install cloc
avec Homebrew . Il y a aussi une image docker publiée sousmribeiro/cloc
.Vous pouvez installer le script en enregistrant son code dans un fichier
cloc-git
, en l'exécutantchmod +x cloc-git
, puis en déplaçant le fichier vers un dossier dans votre fichier$PATH
tel que/usr/local/bin
.Usage
Le script prend un argument, qui est n'importe quelle URL qui
git clone
accepte. Les exemples sonthttps://github.com/evalEmpire/perl5i.git
(HTTPS) ou[email protected]:evalEmpire/perl5i.git
(SSH). Vous pouvez obtenir cette URL depuis n'importe quelle page de projet GitHub en cliquant sur «Cloner ou télécharger».Exemple de sortie:
Alternatives
Exécutez les commandes manuellement
Si vous ne voulez pas déranger l'enregistrement et l'installation du script shell, vous pouvez exécuter les commandes manuellement. Un exemple:
Linguiste
Si vous souhaitez que les résultats correspondent exactement aux pourcentages de langue de GitHub, vous pouvez essayer d'installer Linguist au lieu de CLOC . Selon son fichier README , vous devez
gem install linguist
puis exécuterlinguist
. Je n'ai pas pu le faire fonctionner ( problème # 2223 ).la source
--depth 1
pour télécharger uniquement le commit le plus récent. Pour la plupart des référentiels, cela évite que la question d'origine ne craigne que le clonage ne prenne trop de temps.cloc
pour obtenir les lignes de code dans un référentiel github sans cloner le dépôt sur notre machine (via en ligne). lescloc-git
clones donnés ci-dessus sont également projetés avant de commencer à compter le nombre de lignescloc
pour vous. Pourcloc
pouvoir compter les lignes dans le code, votre ordinateur doit télécharger ce code, mais seulement temporairement. Notez que même les navigateurs Web téléchargent techniquement des pages Web lorsque vous les visitez; ils les enregistrent simplement dans la mémoire au lieu du disque.qui vous donnera le nombre total →
Ou utilisez cet outil → http://line-count.herokuapp.com/
la source
git ls-files | grep '\.py' | xargs wc -l
.xargs
àwc -l
tous les fichiers utilisent ensuite manuellementawk
pour résumer la colonne, OMG cela est tellement plus facile.Il existe une extension pour le navigateur Google Chrome - GLOC qui fonctionne pour les dépôts publics et privés.
Compte le nombre de lignes de code d'un projet à partir de:
la source
Si vous allez sur la page des graphiques / contributeurs, vous pouvez voir une liste de tous les contributeurs au référentiel et le nombre de lignes qu'ils ont ajoutées et supprimées.
Sauf si je manque quelque chose, la soustraction du nombre total de lignes supprimées du nombre total de lignes ajoutées parmi tous les contributeurs devrait donner le nombre total de lignes de code dans le référentiel. (EDIT: il s'avère que je manquais quelque chose après tout. Jetez un oeil au commentaire d' Orbitbot pour plus de détails.)
MISE À JOUR:
Ces données sont également disponibles dans l' API de GitHub . J'ai donc écrit un script rapide pour récupérer les données et faire le calcul:
Collez-le simplement dans un extrait Chrome DevTools, modifiez le dépôt et cliquez sur Exécuter.
Clause de non-responsabilité (merci à lovasoa ):
Prenez les résultats de cette méthode avec un grain de sel, car pour certains dépôts (sorich87 / bootstrap-tour), il en résulte des valeurs négatives, ce qui pourrait indiquer qu'il y a un problème avec les données renvoyées par l'API de GitHub.
MISE À JOUR:
On dirait que cette méthode pour calculer le nombre total de lignes n'est pas entièrement fiable. Jetez un œil au commentaire d' Orbitbot pour plus de détails.
la source
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)))
Vous pouvez cloner uniquement la dernière validation à l'aide de
git clone --depth 1 <url>
, puis effectuer votre propre analyse à l'aide de Linguist , le même logiciel que Github utilise. C'est la seule façon dont je sais que vous allez obtenir des lignes de code.Une autre option consiste à utiliser l'API pour répertorier les langues utilisées par le projet . Il ne les donne pas en lignes mais en octets. Par exemple...
Bien que prenez cela avec un grain de sel, ce projet inclut YAML et JSON que le site Web reconnaît, mais l'API ne le fait pas.
Enfin, vous pouvez utiliser la recherche de code pour demander quels fichiers correspondent à une langue donnée. Cet exemple demande quels fichiers dans perl5i sont Perl.
https://api.github.com/search/code?q=language:perl+repo:evalEmpire/perl5i
. Il ne vous donnera pas de lignes, et vous devez demander la taille du fichier séparément en utilisant le retoururl
pour chaque fichier.la source
Pas actuellement possible sur Github.com ou leurs API
J'ai parlé au support client et confirmé que cela ne peut pas être fait sur github.com. Ils ont cependant transmis la suggestion à l'équipe Github, alors j'espère que cela sera possible à l'avenir. Si c'est le cas, je ne manquerai pas de modifier cette réponse.
Pendant ce temps, la réponse de Rory O'Kane est une brillante alternative basée sur
cloc
et un clone de dépôt peu profond.la source
Vous pouvez utiliser l'API GitHub pour obtenir le sloc comme la fonction suivante
Personnellement, j'ai fait une extension chrome qui montre le nombre de SLOC sur la liste des projets github et la page de détails du projet. Vous pouvez également définir votre jeton d'accès personnel pour accéder aux référentiels privés et contourner la limite de débit de l'API.
Vous pouvez télécharger ici https://chrome.google.com/webstore/detail/github-sloc/fkjjjamhihnjmihibcmdnianbcbccpnn
Le code source est disponible ici https://github.com/martianyi/github-sloc
la source
Module complémentaire Firefox Github SLOC
J'ai écrit un petit addon firefox qui imprime le nombre de lignes de code sur les pages de projet github: Github SLOC
la source
Si la question est "pouvez-vous obtenir rapidement NOMBRE DE LIGNES d'un dépôt github", la réponse est non comme indiqué par les autres réponses.
Cependant, si la question est "pouvez-vous vérifier rapidement l'ÉCHELLE d'un projet", j'évalue généralement un projet en regardant sa taille. Bien sûr, la taille inclura les deltas de toutes les validations actives, mais c'est une bonne métrique car l'ordre de grandeur est assez proche.
Par exemple
Quelle est la taille du projet "docker"?
Dans votre navigateur, entrez api.github.com/repos/ORG_NAME/PROJECT_NAME, c'est-à-dire api.github.com/repos/docker/docker
Dans le hachage de réponse, vous pouvez trouver l'attribut size:
Cela devrait vous donner une idée de l'échelle relative du projet. Le nombre semble être en Ko, mais lorsque je l'ai vérifié sur mon ordinateur, il est en fait plus petit, même si l'ordre de grandeur est cohérent. (161432 Ko = 161 Mo, docker du -s -h = 65 Mo)
la source
Instructions et explication
sloc prend en charge le formatage de la sortie en tant que
cli-table
, commejson
oucsv
. Les expressions régulières peuvent être utilisées pour exclure des fichiers et des dossiers ( Plus d'informations sur npm ).Powershell:
rm -r -force ".\react\"
ou sur Mac / Unix:rm -rf ".\react\"
Captures d'écran des étapes exécutées (cli-table):
sortie sloc (aucun argument):
la source
Dirigez la sortie du nombre de lignes de chaque fichier vers
sort
pour organiser les fichiers par nombre de lignes .git ls-files | xargs wc -l |sort -n
la source
D'après le commentaire de @ Tgr, il existe un outil en ligne: https://codetabs.com/count-loc/count-loc-online.html
la source
Ouvrez le terminal et exécutez ce qui suit:
la source