Kubernetes代码中成千上万个被遗忘的TODO


照片由杨希闵Unsplash

Kubernetes是个大工程。不仅因为它非常需求,而且从源代码的角度来看。在撰写本文时, GitHub上存储库中有86,000多个提交,2,000多个参与者,2,000多个开放票证,1,000多个开放池请求和62,800个星级 scc

实用程序在Go上计算了超过430万行代码(超过520万行),其中,超过300万行真实代码和超过70万行带注释的行,总共超过16,000个文件,包括目录vendor/

我们最近开发了一种工具,可在代码库处理TODO注释,以帮助支持此类大型项目。

我们决定在Kubernetes源上设置我们的小解析器-看看会发生什么。这是一些结果。

tickgit9bf52c2 commit处理了源代码然后将CSV格式的输出导入SQLite进行查询处理。请注意,该工具仅在提取的树中找到TODO。它不考虑已添加并随后删除的注释。因此,数字仅反映在提交时仍在代码中“存活”的TODO。

总计(对于9bf52c2


  • 363位作者的1230个文件中的2380个TODO
  • 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.


这是对Kubernetes源代码中TODO注释的粗略浏览。我们看到最活跃的“任务负责人”,与项目的主要贡献者差不多

我们还看到,对TODO注释的态度与规范没有什么不同,只是因为代码库很大,所以它们很多。

一个重要的观察结果是,与Github票证(问题)相比,TODO评论更多。这很有趣,因为它指示了大量“隐藏”任务,这些任务在GitHub上不是立即可见的,而是用源代码编写的。

主要贡献者可能精通其代码库领域,并清楚地表示出自己的TODO和“隐藏工作”的数量。但是,外部观察者并不总是注意到这一点。他们对GitHub(或其他公共跟踪器)上的票更熟悉和理解。

大多数开发人员都了解软件项目是“活得呼吸”的。频繁的更改,改进过程,错误修复和大量讨论都在进行中。良好地组织工作流程非常重要,因为好的代码需要不断思考。在某种程度上,我们通过Kubernetes来源中的TODO评论看到了这一点。尽管我们无可比拟,但平均任务年龄为2.3年,似乎很高。接近项目的开发人员可以更客观地评估此指标。将其与其他大型开源项目进行比较很有趣。

更深入的分析将包括历史上的所有 TODO,而不仅仅是当前 TODO。您可以考虑以下问题:

  • TODO关闭多快?
  • TODO评论的平均寿命是多少?
  • 相比之下,流行的代码库是什么样的?

它有多重要?


TODO注释通常涵盖的工作类型对于票证而言太小,但重要到足以在注解中加以说明和描述(尽管许多参考票证/问题)。由于注释是代码的一部分,因此注释通常与需要完成的工作“更接近”。它们很容易添加,但似乎也很容易忘记(Kubernetes来源在2019年之前仍添加了1800个TODO)。

我们希望我们用于分析代码中元数据工具将帮助开发人员为各种规模的项目提供服务。将TODO注释浮出水面只是要做的一部分。

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


All Articles