888 Stimmen

Können Sie die Anzahl der Codezeilen aus einem GitHub-Repository abrufen?

In einem GitHub-Repository können Sie "Sprachstatistiken" sehen, die den Prozentsatz des Projekts anzeigen, der in einer Sprache geschrieben ist. Es zeigt jedoch nicht an, wie viele Zeilen Code das Projekt umfasst. 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.

Also, ist es möglich, die in verschiedenen Sprachen geschriebenen Codezeilen aus einem GitHub-Repository zu erhalten, am besten ohne es zu klonen?


Die Frage "Anzahl der Zeilen in einem Git-Repository zählen" fragt, wie man die Codezeilen in einem lokalen Git-Repository zählt, aber:

  1. Sie müssen das Projekt klonen, was riesig sein könnte. Das Klonen eines Projekts wie Wine dauert beispielsweise eine Ewigkeit.
  2. Sie würden Zeilen in Dateien zählen, die nicht unbedingt Code enthalten, wie z.B. 13n-Dateien.
  3. Wenn Sie z.B. nur Ruby-Dateien zählen würden, könnten Sie eine massive Menge an Code in anderen Sprachen wie JavaScript verpassen. Sie müssten im Voraus 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 zeitaufwändig, um "schnell die Größe eines Projekts zu überprüfen".

7voto

CambodianCoder Punkte 387

Leiten Sie die Ausgabe aus der Anzahl der Zeilen in jeder Datei an sort weiter, um Dateien nach Zeilenanzahl zu organisieren. git ls-files | xargs wc -l |sort -n

7voto

BuffMcBigHuge Punkte 407

Viele Antworten hier, einige zu kompliziert. Hier ist ein einfacher Ansatz für 2023:

git ls-files > list.txt && cloc --list-file=list.txt

Eine Textdatei namens list.txt enthält die Dateinamen in Ihrem Git-Repository, dann wird cloc mit der Dateiliste ausgeführt und berücksichtigt die gitignore.

Sie müssen cloc installieren.

Beachten Sie, dass diese Methode das geklonte Repository auf Ihrem System erfordert - nicht genau das, was der Originalverfasser gefragt hat.

cloc

6voto

Mike Bendorf Punkte 470

Dies ist so einfach, wenn Sie VScode verwenden und das Projekt zuerst klonen. Installieren Sie einfach die Lines of Code (LOC) VScode-Erweiterung und führen Sie dann LineCount: Count Workspace Files aus dem Befehlspalette aus.

Die Erweiterung zeigt zusammengefasste Statistiken nach Dateityp an und gibt auch Ergebnisdateien mit detaillierten Informationen für jeden Ordner aus.

3voto

sicvolo Punkte 169

Es gibt ein weiteres Online-Tool, das Zeilen von Code für öffentliche und private Repos zählt, ohne sie herunterladen/klonen zu müssen - https://klock.herokuapp.com/

screenshot

3voto

Sam Gleske Punkte 890

Keine der Antworten hier hat meinen Anforderungen genügt. Ich wollte nur vorhandene Dienstprogramme verwenden. Das folgende Skript wird grundlegende Hilfsprogramme verwenden:

  • Git
  • GNU oder BSD awk
  • GNU oder BSD sed
  • Bash

Gesamtanzahl der hinzugefügten Zeilen in einem Repository abrufen (subtrahiert gelöschte Zeilen von hinzugefügten Zeilen).

#!/bin/bash
git diff --shortstat 4b825dc642cb6eb9a060e54bf8d69288fbee4904 HEAD | \
sed 's/[^0-9,]*//g' | \
awk -F, '!($2 > 0) {$2="0"};!($3 > 0) {$3="0"}; {print $2-$3}'

Anzahl der Codezeilen filtern nach bestimmten Dateitypen bekannten Quellcodes (z. B. *.py-Dateien oder weitere Erweiterungen hinzufügen, usw.).

#!/bin/bash
git diff --shortstat 4b825dc642cb6eb9a060e54bf8d69288fbee4904 HEAD -- *.{py,java,js} | \
sed 's/[^0-9,]*//g' | \
awk -F, '!($2 > 0) {$2="0"};!($3 > 0) {$3="0"}; {print $2-$3}'

4b825dc642cb6eb9a060e54bf8d69288fbee4904 ist die ID des "leeren Baums" in Git und steht in jedem Repository immer zur Verfügung.

Quellen:

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X