Des milliers de TODO oubliés dans le code Kubernetes


La photo de Yancy Min à Unsplash

Kubernetes est un gros projet. Non seulement parce qu'il est très demandé , mais aussi du point de vue du code source. Au moment d'écrire ces lignes, il y avait plus de 86 000 commits, plus de 2 000 participants, plus de 2 000 tickets ouverts, plus de 1 000 demandes de pool ouvert et 62 800 étoiles dans le référentiel sur GitHub .

L'utilitaire scc comptait plus de 4,3 millions de lignes de code sur Go (plus de 5,2 millions de lignes), dont plus de 3 millions de lignes de code réel et plus de 700 000 lignes de commentaires, un total de plus de 16 000 fichiers, dont un répertoirevendor/ .

Nous avons récemment développé un outil qui traite les commentaires TODO dans une base de code pour aider à soutenir des projets aussi importants.

Nous avons décidé de placer notre petit analyseur sur les sources Kubernetes - et de voir ce qui se passe. Voici quelques résultats.

tickgittraité le code source de la validation 9bf52c2 . La sortie au format CSV a ensuite été importée dans SQLite pour le traitement des requêtes. Notez que l'outil ne trouve TODO que dans l'arborescence extraite. Il ne prend pas en compte les commentaires qui ont été ajoutés puis supprimés. Ainsi, les chiffres ne reflètent que les TODO qui «vivent» encore dans le code au moment de cet engagement.

Total (pour 9bf52c2 )


  • 2380 TODO dans 1230 fichiers de 363 auteurs
  • 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.


Ceci est un aperçu assez rapide des commentaires TODO dans le code source de Kubernetes. Nous voyons les «directeurs de tâches» les plus actifs, qui coïncident plus ou moins avec les principaux contributeurs du projet.

Nous voyons également que l'attitude envers les commentaires TODO n'est pas différente de la norme, juste en raison de la grande taille de la base de code, il y en a aussi beaucoup.

Une observation importante est qu'il y a plus de commentaires TODO que de tickets Github (problèmes). C'est intéressant car cela indique un nombre important de tâches "cachées" qui ne sont pas immédiatement visibles sur GitHub, mais qui sont écrites dans le code source.

Probablement, les principaux contributeurs connaissent bien leur domaine de la base de code et présentent clairement le nombre de leurs propres TODO et «travaux cachés». Mais cela n'est pas toujours perceptible par les observateurs externes. Ils sont plus familiers et compréhensibles pour voir des billets sur GitHub (ou dans d'autres trackers publics).

La plupart des développeurs comprennent que les projets logiciels «vivent et respirent». Des changements fréquents, un processus d'amélioration, des corrections de bugs et de nombreuses discussions ont lieu. Il est très important de bien organiser le flux de travail, car un bon code nécessite une réflexion constante. En partie, nous voyons cela en action à travers les commentaires TODO dans les sources Kubernetes. Bien que nous n'ayons rien à comparer, l'âge moyen des tâches de 2,3 ans semble plutôt élevé. Les développeurs proches du projet peuvent évaluer plus objectivement cet indicateur. Il est intéressant de le comparer avec d'autres grands projets open source.

Une analyse plus approfondie inclurait tous les TODO de l'histoire, et pas seulement ceux qui restent à l'heure actuelle. Vous pouvez considérer les problèmes suivants:

  • À quelle vitesse les TODO ferment-ils?
  • Quelle est la durée de vie moyenne d'un commentaire TODO?
  • À quoi ressemblent les bases de code populaires en comparaison?

Quelle est son importance?


Les commentaires TODO couvrent généralement un type de travail qui est trop petit pour un ticket, mais suffisamment important pour être noté et décrit dans un commentaire (bien que beaucoup se réfèrent à des tickets / problème). Parce que les commentaires font partie du code, ils sont souvent «plus proches» du travail à faire. Ils sont faciles à ajouter, mais il semble tout aussi facile à oublier (les sources Kubernetes ont encore plus de 1800 TODO ajoutés avant 2019).

Nous espérons que notre outil d'analyse des métadonnées dans le code aidera les développeurs à servir des projets de toute taille. Faire remonter les commentaires TODO à la surface n'est qu'une partie de ce qui doit être fait.

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


All Articles