cloc
ermöglicht es, die Anzahl der Codezeilen zu zählen, die in einem Verzeichnis pro Sprache pro Typ (Leerzeichen, Kommentar oder Code) gespeichert sind.
git blame
ermöglicht zu sehen, welcher Teil einer Datei zu wem gehört.
Ich suche nach einer Möglichkeit, beides zu kombinieren, sodass man eine (dreidimensionale) Matrix erhält, die die Codezeilen pro Typ pro Sprache pro Benutzer auflistet.
Gibt es elegante eingebaute Möglichkeiten, dies zu tun, oder sollte man die “beschuldigten” Teile “verschrotten” (indem man grep
nach git blame
) jedes Benutzers und ausführen cloc
auf sie, um die Tabelle für jeden Benutzer zu berechnen?
BEARBEITEN:
Naiver Ansatz (basierend auf dem Kommentar von @Jubobs):
- Generieren Sie zuerst eine Schulddatei für jede Datei im Verzeichnis (nicht notwendigerweise explizit).
- Führen Sie grep mit etwas wie aus
grep "^[^(]*([^)]*)"
um die Liste aller Benutzer zu erfassen und die Uniques abzurufensort
unduniq
. - Für jeden Benutzer: Erstellen Sie eine Schattenkopie des Ordners und grep mit
grep "^[^(]*($user)"
so dass nur die Zeilen dieses Benutzers verbleiben. - Führen Sie cloc auf der Schattenkopie aus.
- Tun Sie dies für jeden Benutzer, speichern Sie die Ergebnisse und geben Sie sie gemeinsam aus.
Dies ist mehr oder weniger die Erzeugung der gewünschten Ausgabe. Aber wie man sieht, wird bei diesem Ansatz viel kopiert (oder zumindest im Speicher gespeichert) und man kann die Zeilen pro Benutzer tatsächlich berechnen, indem man die Datei einmal statt mehrmals durchläuft.
Gewünschte Ausgabe:
etwas wie:
+--------+--------------------------------+--------------------------------+
|User | C# | XML |
+--------+-------+-------+---------+------+-------+-------+---------+------+
| | files | blank | comment | code | files | blank | comment | code |
+--------+-------+-------+---------+------+-------+-------+---------+------+
| Foo | 12 | 75 | 148 | 2711 | 2 | 42 | 0 | 0 |
| Bar | 167 | 1795 | 1425 | 2 | 16 | 0 | 512 | 1678 |
+--------+-------+-------+---------+------+-------+-------+---------+------+
| Total | 179 | 1870 | 1573 | 2713 | 18 | 42 | 512 | 1678 |
+--------+-------+-------+---------+------+-------+-------+---------+------+
Könnten Sie Ihre Frage bearbeiten, um genau anzugeben, was
grep
sollte aus der Ausgabe von abgerufen werdengit blame
?– jub0bs
25. August 2014 um 11:25 Uhr
@Jubobs: auch mit erwarteter Ausgabe aktualisiert …
– Willem Van Onsem
25. August 2014 um 11:38 Uhr
Ich bin mir nicht sicher, warum das heruntergestimmt wird … Downvoter, eine Erklärung?
– jub0bs
25. August 2014 um 11:39 Uhr
Ich auch nicht, das ist – meiner Meinung nach – eine ganz klare Frage, mit Beispiel und nicht subjektiv usw.
– Willem Van Onsem
25. August 2014 um 11:40 Uhr
Es kommt nicht auf die Aufteilung nach Sprachen an, aber
git fame
macht ein paar Statistiken.– Carlos Campderros
1. Juni 2016 um 7:21 Uhr