La photo de Yancy Min à UnsplashKubernetes 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.tickgit
traité 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.- 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.