الآلاف من TODO المنسية في كود Kubernetes


تصوير يانسي مين في Unsplash

Kubernetes هو مشروع كبير. ليس فقط لأنه مطلوب بشدة ، ولكن أيضًا من وجهة نظر شفرة المصدر. في وقت كتابة هذه السطور ، كان هناك أكثر من 86000 التزام ، وأكثر من 2000 مشارك ، وأكثر من 2000 تذكرة مفتوحة ، وأكثر من 1000 طلب مفتوح ، و 62800 نجمة في المستودع على GitHub .

قامت الأداة المساعدة لـ scc بإحصاء أكثر من 4.3 مليون سطر من الكود على Go (أكثر من 5.2 مليون سطر) ، منها أكثر من 3 ملايين سطر من الكود الحقيقي وأكثر من 700 ألف سطر مع التعليقات ، ما مجموعه أكثر من 16000 ملف ، بما في ذلك الدليلvendor/ .

نحن وضعت مؤخرا أداة أن عمليات تودو تعليقات في مصدر برنامج للمساعدة في دعم مثل هذه المشاريع الكبيرة.

قررنا تعيين محللنا الصغير على مصادر Kubernetes - ومعرفة ما سيحدث. إليك بعض النتائج.

tickgitمعالجة التعليمات البرمجية المصدر من الالتزام 9bf52c2 . ثم تم استيراد الإخراج بتنسيق CSV إلى SQLite لمعالجة الاستعلام. لاحظ أن الأداة تجد TODO فقط في الشجرة المستخرجة. لا يأخذ في الاعتبار التعليقات التي تمت إضافتها وحذفها لاحقًا. وبالتالي ، فإن الأرقام تعكس فقط TODOs التي لا تزال "تعيش" في الشفرة وقت ارتكاب هذا الالتزام.

المجموع (لـ 9 bf52c2 )


  • 2380 TODO في 1230 ملفًا من 363 مؤلفًا
  • 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.


هذه نظرة خاطفة جدًا على تعليقات TODO في كود مصدر Kubernetes. نرى "مديري المهام" الأكثر نشاطًا ، الذين يتزامنون إلى حد ما مع المساهمين الرئيسيين في المشروع.

نرى أيضًا أن الموقف من تعليقات TODO لا يختلف عن القاعدة ، فقط بسبب الحجم الكبير لقاعدة الشفرة هناك أيضًا العديد منها.

ملاحظة مهمة هي أن تعليقات TODO أكثر من تذاكر (مشكلات) Github . هذا مثير للاهتمام لأنه يشير إلى عدد كبير من المهام "المخفية" التي لا تظهر على الفور على GitHub ، ولكنها مكتوبة في شفرة المصدر.

ربما يكون المساهمون الرئيسيون على دراية جيدة بمجالات قاعدة الرموز الخاصة بهم ويمثلون بوضوح عدد TODOs الخاصة بهم و "العمل المخفي". لكن هذا لا يلاحظ دائمًا للمراقبين الخارجيين. إنهم أكثر دراية ومفهومة لرؤية التذاكر على GitHub (أو في أجهزة التتبع العامة الأخرى).

يفهم معظم المطورين أن مشاريع البرامج "تعيش وتتنفس". تحدث تغييرات متكررة ، وعملية تحسين ، وإصلاحات للأخطاء والكثير من المناقشات. من المهم جدًا تنظيم سير العمل جيدًا ، لأن الكود الجيد يتطلب التفكير المستمر. في جزء منه ، نرى هذا في العمل من خلال تعليقات TODO في مصادر Kubernetes. على الرغم من أنه ليس لدينا ما تقارن به ، فإن متوسط ​​عمر المهام 2.3 سنة يبدو مرتفعًا إلى حد ما. يمكن للمطورين القريبين من المشروع تقييم هذا المؤشر بشكل أكثر موضوعية. من المثير للاهتمام مقارنتها بمشاريع أخرى مفتوحة المصدر.

سيشمل التحليل الأعمق جميع مهام TODO في التاريخ ، وليس فقط تلك التي تبقى في الوقت الحاضر. يمكنك النظر في المشكلات التالية:

  • ما مدى سرعة إغلاق المهام المؤقتة؟
  • ما هو متوسط ​​عمر تعليق TODO؟
  • كيف تبدو قواعد البرمجة الشعبية بالمقارنة؟

ما مدى أهميتها؟


عادة ما تغطي تعليقات TODO نوع العمل الذي يكون صغيرًا جدًا بالنسبة للتذكرة ، ولكنه مهم بما يكفي لتدوينه ووصفه في تعليق (على الرغم من أن العديد يشير إلى التذاكر / المشكلة). نظرًا لأن التعليقات جزء من الشفرة ، غالبًا ما تكون "أقرب" إلى العمل الذي يجب القيام به. من السهل إضافتها ، ولكن يبدو من السهل نسيانها (لا تزال مصادر Kubernetes تحتوي على أكثر من 1800 TODOs تمت إضافتها قبل 2019).

نأمل أن لدينا أداة لتحليل البيانات الفوقية في التعليمات البرمجية سيساعد المطورين لمشاريع الخدمات من أي حجم. إن رفع تعليقات TODO إلى السطح ليست سوى جزء مما يجب القيام به.

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


All Articles