tl; dr:
Linux in den letzten Jahren ist nicht so verdammt. Der maximale "F-Wert" betrug 25, der sich auf eine einzelne Datei konzentrierte.
Es gab eine Zeit, in der es eine Linux-Tradition war, aber ich habe den Eindruck, dass es sich in letzter Zeit beruhigt hat. Dennoch gibt es Verweise in den Befehlen fuck
und Mailinglisten.
Was hat mich also beeindruckt? Dieses Mal wird die Anzahl der Erscheinungen von F-Wörtern im Festschreibungsprotokoll und dessen Quellcode diff als ** F-Wert ** definiert, und die Festschreibung mit dem höchsten F-Wert (** der Festschreibung mit dem höchsten F-Wert **) wird definiert. Ich beschloss, danach zu suchen.
(Beachten Sie, dass das Commit mit dem gelöschten F-Wort ebenfalls einen hohen F-Wert erhält, da es sich um die Anzahl der Erscheinungen im Quellcode handelt.)
git show
alle CommitsKürzlich habe ich CMake anstelle des Shell-Skripts verwendet, also habe ich es auch dieses Mal in CMake geschrieben.
Grundsätzlich gibt git rev-list HEAD
eine Liste von Commits aus, klassifiziert sie in die ersten 3 Zeichen 000
-- fff
von Commit-Hash (= 16 ** 3 = 4096 Divisionen) und erstellt ein Ziel. Und lassen Sie "Ninja" parallel ausführen.
Im Linux-Repository (https://github.com/torvalds/linux)
$ git rev-list HEAD | wc -l
897506
Es scheint, dass es ungefähr 900.000 Commits gibt, die zu HEAD führen. ** Beachten Sie jedoch, dass dieses Repository keine Commits vor Git enthält **.
Der F-Wert eines Commits wird normalerweise von grep berechnet.
$ git show -p -w HEAD | grep -ci fuck
0
Der F-Wert von "HEAD" ist natürlich Null und 1 im Commit https://github.com/torvalds/linux/commit/4b550488f894c899aa54dc935c8fee47bca2b7df, das die peripheren Zeilen des Quellcodes einschließlich des F-Wortes bearbeitet.
$ git show -p -w 4b550488f894c899aa54dc935c8fee47bca2b7df | grep -ci fuck
1
Es braucht Zeit, um grep so zu verwenden, wie es ist. Daher ist es besser, ein schnelles grep-Tool wie ripgrep (https://github.com/BurntSushi/ripgrep) zu verwenden, um alles zusammen zu finden.
$ rg -ci fuck
fa/76/fa7662aad7dc033a61ff2f705c33cbb301d0552d.diff:1
f4/db/f4dbc4c20f05ccf6986b0de429f7552b21a1b362.diff:1
51/53/51533b615e605d86154ec1b4e585c8ca1b0b15b7.diff:1
29/57/2957c9e61ee9c37e7ebf2c8acab03e073fe942fd.diff:2
36/5b/365bff806e9faba000fb4956c7486fbf3a746d96.diff:1
5b/5f/5b5f9560354dc5a3a27ce57a86aec6b98531ee21.diff:1
96/39/963945bf93e46b9bf71a07bf9c78183e0f57733a.diff:1
b2/e1/b2e1b30290539b344cbaff0d9da38012e03aa347.diff:2
Das Commit mit dem höchsten F-Wert im Linux-Git-Repository ist das ** erste Commit **, dh der Linux-Quellcode selbst, als er nach Git migriert wurde, mit einem Wert von **, der 56 ** auferlegt.
$ git show -p -w 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 | grep -ci fuck
56
Wie erwartet könnte dieses Engagement in die Hall of Fame aufgenommen werden.
Die Top 3 der anderen Commits sind
** Alle gleichen Dateien ** Verarbeitung für arch / mips / pci / ops-bridge.c
** **. Diese Datei kann in der Geschichte von Linux als ** F-King ** bezeichnet werden.
Diese Datei wurde durch Aufteilen von der Datei "pci-ip27.c" mit einem Commit mit einem F-Wert von 24 erstellt. Wenn wir uns die Originaldatei ansehen, können wir sehen, dass diese Datei von Anfang an ziemlich F war, als Linux von git verwaltet wurde.
--https: //github.com/torvalds/linux/blob/1da177e4c3f41524e886b7f1b8a0c1fc7321cac2/arch/mips/pci/pci-ip27.c#L90 - Enthält zum Zeitpunkt des ersten Commits von Git bereits viele F-Wörter
Umgekehrt werden Dateien mit solchen ausstehenden F-Werten nach der Git-Migration nicht erstellt, sodass gesagt werden kann, dass Linux zumindest in Bezug auf den Quellcode kein F ist.
Übrigens ist der Code mit dem höchsten F-Wert im aktuellen Linux-Kernel-Quellcode "drivers / net / ethernet / sun / sunhme.c" und sein Wert ist ** nur 2 **. Der aktuelle F-Wert von "ops-bridge.c", der oben erwähnt wurde, ist Null und wurde durch ein Commit mit einem F-Wert von 12 gelöscht.
cleaned up language in arch/mips/pci/ops-bridge.c
Dieses Commit selbst wurde 2019 durchgeführt, aber 2018 gibt es einen Patch-Vorschlag https://lkml.org/lkml/2018/12/1/105, der selbst bei einem Commit mit einem F-Wert von 25 schwer zu verstehen ist Der Versuch, die Grammatik ein wenig zu verbessern https://github.com/torvalds/linux/commit/686957e71d34beffe2b29cf5fb2e05025972020b.
Es stellt sich heraus, dass der Linux-Kernel als Software zumindest nach der Git-Migration keinen sehr hohen F-Wert hat. Vor dem Übergang zu Git scheint es Raum für Untersuchungen zu geben, aber es scheint, dass der Eindruck von Hack auf menschliche Aktivitäten zurückzuführen ist.
Möglicherweise benötigen Sie einen besseren Indikator als den F-Wert. Anstatt beispielsweise den F-Wert für jedes Commit zu definieren, kann ein anderer Indikator wie die Lebensdauer des F-Wortes berücksichtigt werden.
Bei dieser F-Wert-Bewertung konnten wir nur auf "ops-bridge.c" achten. Insbesondere beim Extrahieren von Diff-Zeilen ist es anfällig für Zeilenbewegungen und überschätzt den F-Wert beim Festschreiben. Bisher gibt es jedoch kein Format, das die Bewegung über die Datei hinaus gut ausdrücken kann. Zusätzlich zu diff berücksichtigt "git tad" auch die Linienbewegung, und Sie können "-M" oder "-C" verwenden, um die Extraktion durchzuführen.
Recommended Posts