In einem GitHub-Repository sehen Sie "Sprachstatistiken", die den Prozentsatz des Projekts anzeigen, der in einer Sprache geschrieben wurde. Es wird jedoch nicht angezeigt, aus wie vielen Codezeilen das Projekt besteht. Oft möchte ich schnell einen Eindruck von der Größe und Komplexität eines Projekts bekommen, und die Anzahl der Codezeilen kann einen guten ersten Eindruck vermitteln. 500 Codezeilen implizieren ein relativ einfaches Projekt, 100.000 Codezeilen implizieren ein sehr großes / kompliziertes Projekt.
Ist es also möglich, die in den verschiedenen Sprachen geschriebenen Codezeilen aus einem GitHub-Repository abzurufen, vorzugsweise ohne sie zu klonen?
Die Frage " Anzahl der Zeilen in einem Git-Repository zählen " fragt, wie die Codezeilen in einem lokalen Git-Repository gezählt werden sollen, aber:
- Sie müssen das Projekt klonen, was sehr umfangreich sein kann. Das Klonen eines Projekts wie Wine dauert beispielsweise ewig.
- Sie würden Zeilen in Dateien zählen, die nicht unbedingt Code sind, wie z. B. i13n-Dateien.
- Wenn Sie nur (zum Beispiel) Ruby-Dateien zählen, werden Sie möglicherweise eine große Menge Code in anderen Sprachen wie JavaScript vermissen. Sie müssen vorher wissen, welche Sprachen das Projekt verwendet. Sie müssten auch die Zählung für jede Sprache wiederholen, die das Projekt verwendet.
Alles in allem ist dies möglicherweise viel zu zeitintensiv, um „den Umfang eines Projekts schnell zu überprüfen“.
quelle
git clone --depth 1
. Ich vermute, dass es für 2 und 3 Software gibt, die die Analyse für Sie durchführen kann, und Sie können anhand von Dateierweiterungen viel raten, aber ich habe verdammt viel Zeit, um eine gute Suche zu finden Begriff, um die Software zu finden. Vielleicht müssen Sie eine andere Frage stellen.Antworten:
Ein Shell-Skript,
cloc-git
Mit diesem Shell-Skript können Sie die Anzahl der Zeilen in einem Remote-Git-Repository mit einem Befehl zählen:
Installation
Für dieses Skript muss CLOC ("Count Lines of Code") installiert sein.
cloc
kann wahrscheinlich mit Ihrem Paketmanager installiert werden - zum Beispielbrew install cloc
mit Homebrew . Es gibt auch ein Docker-Bild unter veröffentlichtmribeiro/cloc
.Sie können das Skript installieren , indem Sie ihren Code in einer Datei speichern
cloc-git
, ausgeführt wirdchmod +x cloc-git
, und dann die Datei in Ihrem zu einem Ordner zu verschieben$PATH
, wie/usr/local/bin
.Verwendungszweck
Das Skript verwendet ein Argument, nämlich eine beliebige URL,
git clone
die akzeptiert wird. Beispiele sindhttps://github.com/evalEmpire/perl5i.git
(HTTPS) oder[email protected]:evalEmpire/perl5i.git
(SSH). Sie können diese URL von jeder GitHub-Projektseite abrufen, indem Sie auf "Klonen oder Herunterladen" klicken.Beispielausgabe:
Alternativen
Führen Sie die Befehle manuell aus
Wenn Sie das Shell-Skript nicht speichern und installieren möchten, können Sie die Befehle manuell ausführen. Ein Beispiel:
Linguist
Wenn die Ergebnisse genau mit den Sprachprozentsätzen von GitHub übereinstimmen sollen, können Sie versuchen, Linguist anstelle von CLOC zu installieren . Laut README müssen Sie
gem install linguist
und dann ausführenlinguist
. Ich konnte es nicht zum Laufen bringen ( Problem Nr. 2223 ).quelle
--depth 1
nur das letzte Commit heruntergeladen. Bei den meisten Repos wird dadurch die Sorge der ursprünglichen Frage vermieden, dass das Klonen zu lange dauert.cloc
, um die Codezeilen in einem Github-Repository abzurufen, ohne das Repo auf unseren Computer zu klonen (über Online). Die oben angegebenencloc-git
Klone werden zuerst projiziert, bevor die Anzahl der Zeilen gezählt wirdcloc
für Sie läuft . Umcloc
Zeilen im Code zu zählen, muss Ihr Computer diesen Code herunterladen, allerdings nur vorübergehend. Beachten Sie, dass selbst Webbrowser Webseiten technisch herunterladen, wenn Sie sie besuchen. Sie speichern sie nur im Speicher anstatt auf der Festplatte.Das gibt Ihnen die Gesamtzahl →
Oder verwenden Sie dieses Tool → http://line-count.herokuapp.com/
quelle
git ls-files | grep '\.py' | xargs wc -l
.xargs
habewc -l
alle Dateien manuell bearbeitet und dann verwendet,awk
um die Spalte zu summieren. OMG, das ist so viel einfacher.Es gibt eine Erweiterung für den Google Chrome-Browser - GLOC, die für öffentliche und private Repos funktioniert.
Zählt die Anzahl der Codezeilen eines Projekts aus:
quelle
Wenn Sie zur Seite mit den Grafiken / Mitwirkenden gehen, sehen Sie eine Liste aller Mitwirkenden am Repo und wie viele Zeilen sie hinzugefügt und entfernt haben.
Sofern mir nichts fehlt, sollte das Subtrahieren der Gesamtzahl der gelöschten Zeilen von der Gesamtzahl der Zeilen, die unter allen Mitwirkenden hinzugefügt wurden, die Gesamtzahl der Codezeilen im Repo ergeben. (BEARBEITEN: Es stellt sich heraus, dass mir doch etwas gefehlt hat. Weitere Informationen finden Sie in Orbitbots Kommentar .)
AKTUALISIEREN:
Diese Daten sind auch in der GitHub- API verfügbar . Also schrieb ich ein schnelles Skript, um die Daten abzurufen und die Berechnung durchzuführen:
Fügen Sie es einfach in ein Chrome DevTools-Snippet ein, ändern Sie das Repo und klicken Sie auf Ausführen.
Haftungsausschluss (danke an lovasoa ):
Nehmen Sie die Ergebnisse dieser Methode mit einem Körnchen Salz, da dies bei einigen Repos (sorich87 / bootstrap-tour) zu negativen Werten führt, die möglicherweise darauf hinweisen, dass mit den von der GitHub-API zurückgegebenen Daten etwas nicht stimmt.
AKTUALISIEREN:
Diese Methode zur Berechnung der Gesamtzahl der Zeilen scheint nicht ganz zuverlässig zu sein. Werfen Sie einen Blick auf orbitbot Kommentar für weitere Einzelheiten.
quelle
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)))
Sie können nur das neueste Commit mit Linguist klonen
git clone --depth 1 <url>
und dann Ihre eigene Analyse mit Linguist durchführen , der gleichen Software, die Github verwendet. Nur so weiß ich, dass Sie Linien bekommen werden Code.Eine andere Möglichkeit besteht darin , die API zu verwenden, um die vom Projekt verwendeten Sprachen aufzulisten . Es gibt sie nicht in Zeilen, sondern in Bytes. Zum Beispiel...
Nehmen Sie das mit einem Körnchen Salz, aber dieses Projekt enthält YAML und JSON, die die Website anerkennt , die API jedoch nicht.
Schließlich können Sie mithilfe der Codesuche fragen, welche Dateien einer bestimmten Sprache entsprechen. In diesem Beispiel wird gefragt, welche Dateien in perl5i Perl sind.
https://api.github.com/search/code?q=language:perl+repo:evalEmpire/perl5i
. Sie erhalten keine Zeilen, und Sie müssen die Dateigröße separat anhand derurl
für jede Datei zurückgegebenen Größe erfragen .quelle
Derzeit nicht auf Github.com oder deren APIs möglich
Ich habe mit dem Kundensupport gesprochen und bestätigt, dass dies auf github.com nicht möglich ist. Sie haben den Vorschlag jedoch an das Github-Team weitergeleitet, sodass dies hoffentlich in Zukunft möglich sein wird. Wenn ja, werde ich diese Antwort sicher bearbeiten.
In der Zwischenzeit ist Rory O'Kanes Antwort eine brillante Alternative
cloc
und ein flacher Repo-Klon.quelle
Sie können die GitHub-API verwenden, um den Sloc wie folgt abzurufen
Persönlich habe ich eine Chrome-Erweiterung erstellt, die die SLOC-Nummer sowohl auf der Github-Projektliste als auch auf der Projektdetailseite anzeigt. Sie können auch Ihr persönliches Zugriffstoken festlegen, um auf private Repositorys zuzugreifen und das API-Ratenlimit zu umgehen.
Sie können von hier https://chrome.google.com/webstore/detail/github-sloc/fkjjjamhihnjmihibcmdnianbcbccpnn herunterladen
Der Quellcode ist hier verfügbar: https://github.com/martianyi/github-sloc
quelle
Firefox-Add-On Github SLOC
Ich habe ein kleines Firefox-Addon geschrieben, das die Anzahl der Codezeilen auf Github-Projektseiten druckt: Github SLOC
quelle
Wenn die Frage lautet: "Können Sie schnell die Anzahl der Zeilen eines Github-Repos erhalten?", Lautet die Antwort "Nein", wie in den anderen Antworten angegeben.
Wenn jedoch die Frage lautet: " Können Sie die SKALA eines Projekts schnell überprüfen?", Beurteile ich ein Projekt normalerweise anhand seiner Größe. Natürlich wird die Größe Deltas aus allen aktiven Commits enthalten, aber es ist eine gute Metrik, da die Größenordnung ziemlich nahe ist.
Z.B
Wie groß ist das "Docker" -Projekt?
Geben Sie in Ihrem Browser api.github.com/repos/ORG_NAME/PROJECT_NAME ein, dh api.github.com/repos/docker/docker
Im Antwort-Hash finden Sie das Größenattribut:
Dies sollte Ihnen eine Vorstellung vom relativen Umfang des Projekts geben. Die Zahl scheint in KB zu sein, aber als ich sie auf meinem Computer überprüft habe, ist sie tatsächlich kleiner, obwohl die Größenordnung konsistent ist. (161432 KB = 161 MB, du -s -h Docker = 65 MB)
quelle
Anleitung und Erklärung
sloc unterstützt die Formatierung der Ausgabe als
cli-table
, alsjson
odercsv
. Reguläre Ausdrücke können verwendet werden, um Dateien und Ordner auszuschließen ( Weitere Informationen zu npm ).Powershell:
rm -r -force ".\react\"
oder unter Mac / Unix:rm -rf ".\react\"
Screenshots der ausgeführten Schritte (Cli-Tabelle):
Sloc-Ausgabe (keine Argumente):
quelle
Leiten Sie die Ausgabe aus der Anzahl der Zeilen in jeder Datei weiter,
sort
um die Dateien nach Zeilenanzahl zu organisieren.git ls-files | xargs wc -l |sort -n
quelle
Aus dem Kommentar von @ Tgr geht ein Online-Tool hervor: https://codetabs.com/count-loc/count-loc-online.html
quelle