مهام TODO في الشيفرة
TODO وعدٌ قطعه أحدهم على نفسه ثم أضاعه. يُكتب حيث تكمن المشكلة، أي في المكان نفسه الذي لا يعود إليه أحد، وحين يصبح مهمًّا يكون كاتبه قد انتقل إلى فريق آخر. grep يعثر عليها، وألف سطر من مخرجات grep تساوي ألا تعثر عليها أصلًا.
يقرأ تبويب TODO في لوحة المحلّل هذه العلامات كلها، ثم يفعل ما لا يستطيعه
grep: يجمّعها. افتح اللوحة من شريط الحالة أو من لوحة الأوامر (مهام TODO في الشيفرة) وانتقل إلى التبويب الثاني.
يعدّ شريط الحالة العلامات إلى جانب أخطاء المحلّلات وتحذيراتها؛ والنقر على ذلك العدّاد يفتح هذا التبويب.

ما الذي يُعدّ علامة
وسمٌ داخل تعليق، في ملف يتتبّعه Git أو كان سيتتبّعه:
| المكتوب | يُقرأ على أنه |
|---|---|
// TODO: أطلقها |
الوسم TODO، بلا مسؤول |
//todo أطلقها |
الشيء نفسه — النقطتان والمسافة اختياريتان |
# todo أطلقها |
الشيء نفسه — لا حالة الأحرف تهم ولا اللغة |
/* TODO(cgm): أطلقها */ |
الوسم TODO، المسؤول cgm |
-- TODO (CGM) أطلقها |
المسؤول نفسه: cgm و(CGM) و[cgm] شخص واحد |
<!-- TODO: @cgm أطلقها --> |
الشيء نفسه مرة أخرى |
الأوسمة هي TODO وFIXME وBUG وHACK وXXX وNOTE وOPTIMIZE وREVIEW
وREFACTOR وDEPRECATED وQUESTION وIDEA وWIP وTEMP. الأربعة الأولى
ملوّنة، لأن «هذا معطوب» و«هذه فكرة خطرت لي» يجب ألا يتشابها في قائمة واحدة.
على الوسم أن يقع بعد بداية تعليق — // أو # أو -- أو ; أو % أو /* أو
* أو <!-- أو """. ولا شيء غير ذلك يُحتسب: todo = [l for l in lines] شيفرة،
ولوحةٌ تُدرج إسنادَ متغيّر بوصفه دَينًا لوحةٌ لا يُوثق بها مرة ثانية. والقاعدة
نفسها تُبقي دالةً اسمها reviewNotes خارج القائمة.
التجميع هو الميزة
أربعة محاور، كلٌّ منها بنقرة واحدة:
| التجميع حسب | يجيب عن |
|---|---|
| الوسم | أي نوع من الدَّين يحمله هذا المستودع؟ |
| المسؤول | ماذا ترك كل شخص خلفه — وماذا في كومة بلا مسؤول؟ |
| المجلد | أي ركن من الشجرة يتعفّن؟ |
| الملف | القائمة العادية، حين تعرف وجهتك سلفًا. |
بلا مسؤول مجموعة حقيقية لا بقايا: العلامات التي لم يضع أحد اسمه عليها هي العلامات التي لا يلتقطها أحد أبدًا، ورؤيتها معدودة هي المقصد كله.
تصفّي شرائح الأوسمة في الأعلى القائمةَ، وكذلك النقر على شارة المسؤول في أي صف،
وكذلك مربع البحث الذي يطابق النص والملف والوسم والمسؤول. المتغيّرة فقط يضيّق
النتائج إلى الملفات التي عدّلتها ولم تودعها بعد — الفحص الأخير قبل الدفع، حين
يوشك // FIXME تركته قبل ساعة أن يصير دائمًا.
النقر على صف يفتح الملف عند ذلك السطر.
ما لا يفعله
- يقرأ ولا يكتب أبدًا. لا وجود لـ«تعليم كمنجَز»: إغلاق TODO يكون بحذف السطر وإيداع ذلك. أما القائمة التي يحفظها Gitcito نيابةً عنك فهي المهام، وهي شيء مختلف تمامًا: ملاحظات خاصة تعيش في التطبيق لا في الشيفرة.
- الملفات المتجاهَلة تُتخطّى، ومعها
node_modules، مهما قالت الأوسمة بداخلها. أما الملفات غير المتتبَّعة فتُدرَج: علامة كُتبت قبل خمس دقائق هي أجدر ما يُرى. - لا يميّز التعليق من السلسلة النصية. سطرٌ مثل
const banner = "// TODO"هو علامة بالنسبة إلى الفحص. لا يملك محلّلًا نحويًّا لأربعين لغة ولا يدّعي ذلك. - الفحص لقطة لحظية. إن عدّلت ملفًّا احتفظت اللوحة بأرقامها حتى تفحص من جديد؛ زر التحديث هو القصة كلها.
- يتوقف عند 5000 علامة. مستودعٌ يتجاوز ذلك لديه مشكلة دَين لن تحلّها لوحة.
أين يعمل
أمر git grep واحد على شجرة العمل، ولهذا يستغرق أجزاءً من الثانية حيث يستغرق
تبويب المشكلات ثوانٍ: لا شيء يُترجَم، ولا سلسلة أدوات تتدخّل،
ويتخطّى البحث الملفات الثنائية والمسارات المتجاهَلة لأن Git يعرف سلفًا أيها هي.