Foto von Yancy Min bei UnsplashKubernetes ist ein großes Projekt. Nicht nur, weil es sehr gefragt ist , sondern auch aus Sicht des Quellcodes. Zum Zeitpunkt dieses Schreibens gab es mehr als 86.000 Commits, mehr als 2.000 Teilnehmer, mehr als 2.000 offene Tickets, mehr als 1.000 Open Pool-Anfragen und 62.800 Sterne im Repository auf GitHub .Das Dienstprogramm scc zählte mehr als 4,3 Millionen Zeilen Go-Code (mehr als 5,2 Millionen Zeilen), davon mehr als 3 Millionen Zeilen echten Codes und mehr als 700.000 Zeilen mit Kommentaren, insgesamt mehr als 16.000 Dateien, einschließlich eines Verzeichnissesvendor/
.Wir haben kürzlich ein Tool entwickelt , das TODO-Kommentare in einer Codebasis verarbeitet, um so große Projekte zu unterstützen.Wir haben uns entschlossen, unseren kleinen Parser auf Kubernetes-Quellen zu setzen - und zu sehen, was passiert. Hier sind einige Ergebnisse.tickgit
verarbeitete den Quellcode aus dem 9bf52c2-Commit . Die Ausgabe im CSV-Format wurde dann zur Abfrageverarbeitung in SQLite importiert. Beachten Sie, dass das Tool TODO nur im extrahierten Baum findet. Kommentare, die hinzugefügt und anschließend gelöscht wurden, werden nicht berücksichtigt. Daher geben die Zahlen nur TODOs wieder, die zum Zeitpunkt dieses Commits noch im Code "leben".- 2380 TODO in 1230 Dateien von 363 Autoren
- 460 TODO , ,
// TODO (patrickdevivo) Fix the ...
- 489 TODO 2019
- TODO — 860 ( 2,3 )
- TODO — 6 2014 ( « »)
- TODO 9 2019 ( )
- TODO: 33
- deads2k TODO (git blame): 147
- TODO, : 64
TODO
33 cluster/gce/util.sh
25 pkg/apis/core/types.go
23 staging/src/k8s.io/api/core/v1/types.go
21 staging/src/k8s.io/legacy-cloud-providers/aws/aws.go
20 staging/src/k8s.io/code-generator/cmd/conversion-gen/generators/conversion.go
20 pkg/apis/core/validation/validation.go
16 test/e2e/network/service.go
16 pkg/kubelet/kubelet.go
14 test/e2e/framework/util.go
14 pkg/kubelet/kubelet_pods.go
TODO
deads2k 147
Clayton Coleman 105
Chao Xu 99
Dr. Stefan Schimanski 93
Jordan Liggitt 81
David Eads 60
Random-Liu 54
Wojciech Tyczynski 50
Yu-Ju Hong 43
Prashanth Balasubramanian 38
, TODO ( TODO )
64 6a4d5cd7cc58e28c20ca133dab7b0e9e56192fe3
19 e01ff1641c7321ac81fe5775f6ccb21aa6775c04
19 4fb28dafad121e163fa86dc90067ce3d14415811
18 adb75e1fd17b11e6a0256a4984ef9b18957d94ce
14 963c85e1c807efcdbb82dd44439dc3c55f6a0bfd
14 8b17db7e0c4431cd5fd9a5d9a3ab11b04e2f0a7e
13 f0f78299348afcf770d4e8d89dcea82f80811b28
11 d0b94538b9744d0c06df6ddec2604be168568f9d
10 f1248b9c829e225138ab6d6234221c63092f7592
10 cd663d7ad00937cffa8a09e4761acb95d34c89a3
TODO
34 2014
249 2015
523 2016
650 2017
435 2018
489 2019
, TODO : tickgit todos --csv-output
. SQLite.Dies ist ein ziemlich flüchtiger Blick auf die TODO-Kommentare im Kubernetes-Quellcode. Wir sehen die aktivsten "Task Directors", die mehr oder weniger mit den führenden Mitwirkenden des Projekts übereinstimmen .Wir sehen auch, dass die Einstellung zu TODO-Kommentaren nicht von der Norm abweicht, nur aufgrund der Größe der Codebasis gibt es auch viele davon.Eine wichtige Beobachtung ist, dass es mehr TODO-Kommentare als Github-Tickets gibt (Probleme). Dies ist interessant, da es auf eine erhebliche Anzahl von "versteckten" Aufgaben hinweist, die auf GitHub nicht sofort sichtbar sind, aber im Quellcode geschrieben sind.Wahrscheinlich sind die Hauptverantwortlichen mit ihren Bereichen der Codebasis bestens vertraut und repräsentieren eindeutig die Anzahl ihrer eigenen TODOs und „versteckten Arbeiten“. Dies fällt externen Beobachtern jedoch nicht immer auf. Sie sind vertrauter und verständlicher, wenn sie Tickets auf GitHub (oder in anderen öffentlichen Trackern) sehen.Die meisten Entwickler verstehen, dass Softwareprojekte "leben und atmen". Häufige Änderungen, ein Verbesserungsprozess, Fehlerbehebungen und viele Diskussionen finden statt. Es ist sehr wichtig, den Workflow gut zu organisieren, da guter Code ständige Überlegungen erfordert. Zum Teil sehen wir dies in Aktion durch TODO-Kommentare in Kubernetes-Quellen. Obwohl wir nichts zu vergleichen haben, scheint das Durchschnittsalter der Aufgaben von 2,3 Jahren ziemlich hoch zu sein. Projektnahe Entwickler können diesen Indikator objektiver bewerten. Es ist interessant, es mit anderen großen Open-Source-Projekten zu vergleichen.Eine eingehendere Analyse würde alle TODOs in der Geschichte einschließen und nicht nur die derzeit verbleibenden. Sie können die folgenden Probleme berücksichtigen:- Wie schnell schließen TODOs?
- Was ist die durchschnittliche Lebensdauer eines TODO-Kommentars?
- Wie sehen beliebte Codebasen im Vergleich aus?
Wie wichtig ist es
TODO-Kommentare decken normalerweise eine Art von Arbeit ab, die für ein Ticket zu klein ist, aber wichtig genug, um in einem Kommentar notiert und beschrieben zu werden (obwohl sich viele auf Tickets / Ausgaben beziehen). Da Kommentare Teil des Codes sind, sind sie häufig „näher“ an der zu erledigenden Arbeit. Sie sind leicht hinzuzufügen, aber es scheint genauso leicht zu vergessen zu sein (Kubernetes-Quellen haben noch über 1800 TODOs vor 2019 hinzugefügt).Wir hoffen, dass unser Tool zur Analyse von Metadaten im Code Entwicklern hilft, Projekte jeder Größe zu warten. Das Erhöhen von TODO-Kommentaren an die Oberfläche ist nur ein Teil dessen, was getan werden muss.