Ribuan TODO yang Terlupakan dalam Kode Kubernetes


Foto oleh Yancy Min di Unsplash

Kubernetes adalah proyek besar. Bukan hanya karena sangat laris , tetapi juga dari sudut pandang kode sumber. Pada saat penulisan ini, ada lebih dari 86.000 komitmen, lebih dari 2.000 peserta, lebih dari 2.000 tiket terbuka, lebih dari 1.000 permintaan kumpulan terbuka dan 62.800 bintang di repositori di GitHub .

Utilitas scc menghitung lebih dari 4,3 juta baris kode Go (lebih dari 5,2 juta baris), di mana lebih dari 3 juta baris kode nyata dan lebih dari 700 ribu baris dengan komentar, total lebih dari 16.000 file, termasuk direktorivendor/ .

Kami baru-baru ini mengembangkan alat yang memproses komentar TODO dalam basis kode untuk membantu mendukung proyek besar tersebut.

Kami memutuskan untuk mengatur parser kecil kami pada sumber Kubernetes - dan melihat apa yang terjadi. Berikut ini beberapa hasilnya.

tickgitmemproses kode sumber dari komit 9bf52c2 . Output dalam format CSV kemudian diimpor ke SQLite untuk diproses permintaan. Perhatikan bahwa alat hanya menemukan TODO di pohon yang diekstraksi. Itu tidak memperhitungkan komentar akun yang telah ditambahkan dan kemudian dihapus. Dengan demikian, angka-angka hanya mencerminkan TODO yang masih "hidup" dalam kode pada saat komit ini.

Total (untuk 9bf52c2 )


  • 2380 TODO dalam 1230 file dari 363 penulis
  • 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.


Ini adalah pandangan yang sepintas lalu pada komentar TODO dalam kode sumber Kubernetes. Kami melihat "pengarah tugas" yang paling aktif, yang kurang lebih bertepatan dengan kontributor utama proyek.

Kami juga melihat bahwa sikap terhadap komentar TODO tidak berbeda dari norma, hanya karena ukuran besar dari basis kode ada juga banyak dari mereka.

Pengamatan penting adalah bahwa ada lebih banyak komentar TODO daripada tiket Github (masalah). Ini menarik karena menunjukkan sejumlah besar tugas "tersembunyi" yang tidak langsung terlihat di GitHub, tetapi ditulis dalam kode sumber.

Mungkin, kontributor utama fasih dalam bidang basis kode mereka dan jelas mewakili jumlah TODO mereka sendiri dan "pekerjaan tersembunyi". Tapi ini tidak selalu terlihat oleh pengamat eksternal. Mereka lebih akrab dan mudah dimengerti untuk melihat tiket di GitHub (atau di pelacak publik lainnya).

Sebagian besar pengembang memahami bahwa proyek perangkat lunak "hidup dan bernafas." Perubahan yang sering, proses perbaikan, perbaikan bug dan banyak diskusi sedang berlangsung. Sangat penting untuk mengatur alur kerja dengan baik, karena kode yang baik membutuhkan pemikiran yang konstan. Sebagian, kita melihat ini beraksi melalui komentar TODO di sumber Kubernetes. Meskipun tidak ada yang bisa dibandingkan, usia rata-rata tugas 2,3 tahun tampaknya agak tinggi. Pengembang yang dekat dengan proyek dapat lebih objektif mengevaluasi indikator ini. Sangat menarik untuk membandingkannya dengan proyek open source besar lainnya.

Analisis yang lebih dalam akan mencakup semua TODO dalam sejarah, dan bukan hanya yang masih ada saat ini. Anda dapat mempertimbangkan masalah-masalah berikut:

  • Seberapa cepat tutup TODO?
  • Berapa umur rata-rata dari komentar TODO?
  • Seperti apa perbandingan basis kode populer?

Seberapa pentingkah itu?


Komentar TODO biasanya mencakup jenis pekerjaan yang terlalu kecil untuk tiket, tetapi cukup penting untuk dicatat dan dijelaskan dalam komentar (meskipun banyak yang merujuk pada tiket / masalah). Karena komentar adalah bagian dari kode, mereka sering "lebih dekat" dengan pekerjaan yang perlu dilakukan. Mereka mudah ditambahkan, tetapi tampaknya sama mudahnya untuk dilupakan (sumber Kubernetes masih memiliki lebih dari 1800 TODO yang ditambahkan sebelum 2019).

Kami berharap bahwa alat kami untuk menganalisis metadata dalam kode akan membantu pengembang untuk melayani proyek dalam berbagai ukuran. Mengangkat komentar TODO ke permukaan hanyalah sebagian dari apa yang perlu dilakukan.

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


All Articles