Miles de TODO olvidados en el Código de Kubernetes


Foto de Yancy Min en Unsplash

Kubernetes es un gran proyecto. No solo porque tiene mucha demanda , sino también desde el punto de vista del código fuente. Al momento de escribir este artículo, había más de 86,000 confirmaciones, más de 2,000 participantes, más de 2,000 tickets abiertos, más de 1,000 solicitudes de pool abierto y 62,800 estrellas en el repositorio en GitHub .

La utilidad scc contó más de 4.3 millones de líneas de código Go (más de 5.2 millones de líneas), de las cuales más de 3 millones de líneas de código real y más de 700 mil líneas con comentarios, un total de más de 16,000 archivos, incluido un directoriovendor/ .

Recientemente desarrollamos una herramienta que procesa los comentarios TODO en una base de código para ayudar a apoyar proyectos tan grandes.

Decidimos establecer nuestro pequeño analizador en las fuentes de Kubernetes y ver qué sucede. Aquí hay algunos resultados.

tickgitprocesó el código fuente de la confirmación 9bf52c2 . La salida en formato CSV se importó a SQLite para el procesamiento de consultas. Tenga en cuenta que la herramienta encuentra TODO solo en el árbol extraído. No tiene en cuenta los comentarios que se han agregado y eliminado posteriormente. Por lo tanto, los números reflejan solo TODO que todavía están "vivos" en el código en el momento de esta confirmación.

Total (para 9bf52c2 )


  • 2380 TODO en 1230 archivos de 363 autores
  • 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.


Esta es una mirada bastante superficial a los comentarios de TODO en el código fuente de Kubernetes. Vemos a los "directores de tareas" más activos, que más o menos coinciden con los principales contribuyentes del proyecto.

También vemos que la actitud hacia los comentarios TODO no es diferente de la norma, solo por el gran tamaño de la base de código también hay muchos de ellos.

Una observación importante es que hay más comentarios TODO que tickets Github (problemas). Esto es interesante porque indica un número significativo de tareas "ocultas" que no son visibles de inmediato en GitHub, pero que están escritas en el código fuente.

Probablemente, los principales contribuyentes están bien versados ​​en sus áreas de la base del código y representan claramente el número de sus propias tareas pendientes y "trabajo oculto". Pero esto no siempre se nota a los observadores externos. Son más familiares y comprensibles para ver boletos en GitHub (o en otros rastreadores públicos).

La mayoría de los desarrolladores entienden que los proyectos de software "viven y respiran". Cambios frecuentes, un proceso de mejora, corrección de errores y muchas discusiones están teniendo lugar. Es muy importante organizar bien el flujo de trabajo, porque un buen código requiere un pensamiento constante. En parte, vemos esto en acción a través de los comentarios de TODO en las fuentes de Kubernetes. Aunque no tenemos nada con lo que comparar, la edad promedio de las tareas de 2.3 años parece bastante alta. Los desarrolladores cercanos al proyecto pueden evaluar más objetivamente este indicador. Es interesante compararlo con otros grandes proyectos de código abierto.

Un análisis más profundo incluiría todos los TODO en la historia, y no solo los que quedan en la actualidad. Puede considerar los siguientes problemas:

  • ¿Qué tan rápido cierran TODOs?
  • ¿Cuál es la vida útil promedio de un comentario TODO?
  • ¿Cómo son las bases de código populares en comparación?

Que tan importante es


Los comentarios TODO generalmente cubren un tipo de trabajo que es demasiado pequeño para un boleto, pero lo suficientemente importante como para ser anotado y descrito en un comentario (aunque muchos se refieren a boletos / problema). Debido a que los comentarios son parte del código, a menudo están "más cerca" del trabajo que debe hacerse. Son fáciles de agregar, pero parece igual de fácil de olvidar (las fuentes de Kubernetes aún tienen más de 1800 TODO añadidos antes de 2019).

Esperamos que nuestra herramienta para analizar metadatos en código ayude a los desarrolladores a dar servicio a proyectos de cualquier tamaño. Elevar los comentarios TODO a la superficie es solo una parte de lo que hay que hacer.

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


All Articles