Tausende vergessener TODOs im Kubernetes-Code


Foto von Yancy Min bei Unsplash

Kubernetes 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.

tickgitverarbeitete 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".

Gesamt (für 9bf52c2 )


  • 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.

Source: https://habr.com/ru/post/undefined/


All Articles