Milhares de TODOs esquecidos no código Kubernetes


Foto de Yancy Min no Unsplash

Kubernetes é um grande projeto. Não apenas porque é muito procurado , mas também do ponto de vista do código fonte. No momento da redação deste artigo, havia mais de 86.000 confirmações, mais de 2.000 participantes, mais de 2.000 tickets abertos, mais de 1.000 solicitações de pool aberto e 62.800 estrelas no repositório no GitHub .

O utilitário scc contava com mais de 4,3 milhões de linhas de código Go (mais de 5,2 milhões de linhas), das quais mais de 3 milhões de linhas de código real e mais de 700 mil linhas com comentários, um total de mais de 16.000 arquivos, incluindo um diretóriovendor/ .

Recentemente, desenvolvemos uma ferramenta que processa os comentários do TODO em uma base de código para ajudar a apoiar projetos tão grandes.

Decidimos definir nosso pequeno analisador nas fontes do Kubernetes - e ver o que acontece. Aqui estão alguns resultados.

tickgitprocessou o código fonte da confirmação 9bf52c2 . A saída no formato CSV foi importada para o SQLite para processamento de consultas. Observe que a ferramenta encontra TODO apenas na árvore extraída. Ele não leva em consideração os comentários que foram adicionados e excluídos posteriormente. Portanto, os números refletem apenas os TODOs que ainda estão "vivendo" no código no momento desse commit.

Total (para 9bf52c2 )


  • 2380 TODO em 1230 arquivos 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 é uma visão bastante superficial dos comentários do TODO no código fonte do Kubernetes. Vemos os "diretores de tarefas" mais ativos, que coincidem mais ou menos com os principais colaboradores do projeto.

Também vemos que a atitude em relação aos comentários do TODO não é diferente da norma, apenas devido ao grande tamanho da base de código, também existem muitos deles.

Uma observação importante é que há mais comentários do TODO do que tickets do Github (edições). Isso é interessante porque indica um número significativo de tarefas "ocultas" que não são visíveis imediatamente no GitHub, mas são escritas no código-fonte.

Provavelmente, os principais colaboradores são versados ​​em suas áreas da base de código e representam claramente o número de seus próprios TODOs e "trabalho oculto". Mas isso nem sempre é perceptível para observadores externos. Eles são mais familiares e compreensíveis para ver tickets no GitHub (ou em outros rastreadores públicos).

A maioria dos desenvolvedores entende que os projetos de software "vivem e respiram". Mudanças frequentes, um processo de melhoria, correções de bugs e muitas discussões estão ocorrendo. É muito importante organizar bem o fluxo de trabalho, porque um bom código requer pensamento constante. Em parte, vemos isso em ação através dos comentários do TODO nas fontes do Kubernetes. Embora não tenhamos nada com o que comparar, a idade média das tarefas de 2,3 anos parece bastante alta. Os desenvolvedores próximos ao projeto podem avaliar mais objetivamente esse indicador. É interessante compará-lo com outros grandes projetos de código aberto.

Uma análise mais profunda incluiria todos os TODOs da história, e não apenas aqueles que permanecem no momento. Você pode considerar os seguintes problemas:

  • Com que rapidez os TODOs fecham?
  • Qual é a vida útil média de um comentário do TODO?
  • Como são as bases de código populares em comparação?

Quão importante é isso?


Os comentários do TODO geralmente cobrem um tipo de trabalho pequeno demais para um ticket, mas importante o suficiente para ser observado e descrito em um comentário (embora muitos se refiram a tickets / edição). Como os comentários fazem parte do código, eles geralmente estão "mais próximos" do trabalho que precisa ser feito. Eles são fáceis de adicionar, mas parece fácil de esquecer (as fontes do Kubernetes ainda têm mais de 1800 TODOs adicionados antes de 2019).

Esperamos que nossa ferramenta para analisar metadados no código ajude os desenvolvedores a atender projetos de qualquer tamanho. Levantar os comentários do TODO para a superfície é apenas parte do que precisa ser feito.

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


All Articles