تصوير يانسي مين في UnsplashKubernetes هو مشروع كبير. ليس فقط لأنه مطلوب بشدة ، ولكن أيضًا من وجهة نظر شفرة المصدر. في وقت كتابة هذه السطور ، كان هناك أكثر من 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 إلى السطح ليست سوى جزء مما يجب القيام به.