أدوات مساحة العمل

المشاكل

كل مشروع يحمل أصلًا أداة تخبرك بما فيه من خلل — tsc وdart analyze وESLint وClippy وgo vet وRuff. لكن ما لا تخبرك به أيٌّ منها هو ما إذا كان تعديلك أنت هو الذي جلب التحذيرات الأربعين التي طبعتها للتو. يعرف Gitcito أي الملفات معدَّلة، لذا تجيب القائمة نفسها عن هذا السؤال بمفتاح واحد.

لوحة المشاكل وعدّاد شريط الحالة

يحمل شريط الحالة العدّاد — أخطاء وتحذيرات ومعلومات: الأرقام الثلاثة التي علّم VS Code الجميع قراءتها. انقره (أو اختر المشاكل من لوحة الأوامر) لتُفتح اللوحة في الأسفل، مجمَّعة حسب الملف. والنقر على سطر يفتح الملف عند ذلك الموضع. وقبل المسحة الأولى يعرض شرطات لا أصفارًا: لم ينظر أحد بعد، والأصفار الثلاثة ستزعم غير ذلك.

ماذا يُشغَّل

إذا كان في المستودع يُشغّل Gitcito
pubspec.yaml dart analyze --format=machine
tsconfig.json tsc --noEmit
تكوين ESLint eslint -f json
Cargo.toml cargo clippy --message-format=short
go.mod go vet ./...
pyproject.toml أو ruff.toml ruff check --output-format=json

Flutter مشمول في صف Dart: تطبيق Flutter هو مشروع Dart، وflutter analyze يستدعي المحلّل نفسه الذي يستدعيه dart analyze.

ليس على المشروع أن يكون في الجذر. تُبحث هذه العلامات أيضًا على بضعة مستويات أدنى، فيُعثر على تطبيق Flutter داخل mobile/ أو حزمة داخل apps/web، ويعمل كل محلّل في مجلد مشروعه. ويُتخطّى مشروع متداخل من النوع نفسه إذا كان سلفه يغطّيه أصلًا — وهذا بالضبط ما يقوله tsconfig.json في الجذر — وتتوقّف المسحة عند اثني عشر مشروعًا، لأن المستودع الأحادي لا ينبغي أن يُشغّل خمسين مترجمًا.

الملف التنفيذي في node_modules/.bin يتغلّب على الموجود في PATH، تمامًا كما تحلّه سكربتات المشروع نفسها. يعمل كل ذلك بالتوازي، ويُحوَّل خرج كل أداة إلى شكل واحد، تُزال منه التكرارات ويُرتَّب: محلّلان يبلّغان عن السطر نفسه ينتجان سطرًا واحدًا.

لا شيء يعمل من تلقاء نفسه. tsc --noEmit على مستودع كبير عشرات الثواني، وهذه الأوامر هي سلسلة أدوات المستودع لا أدوات Gitcito. تبدأ حين تفتح اللوحة أو تضغط التحديث، ولا تبدأ أبدًا وحدها. ولهذا فالقائمة لقطة لحظية: عدّل ملفًا وستبقى قديمة حتى تعيد التشغيل.

الإعدادات ← عام ← محلّلات الشيفرة تقرّر مقدار مبادرته: مسحة عند فتح اللوحة (الافتراضي)، أو عند الضغط على التحديث فقط، أو معطّل — وهو ما يخفي نصف اللوحة الخاص بالمحلّلات وعدّاده في شريط الحالة وأمره تمامًا.

المخرجات المولَّدة تُسقط. الأداة الموجَّهة إلى جذر المشروع تفحص كل ما تجده، وما تجده يشمل .next/build/chunks وdist المحزوم ونسخة مستوردة — مئات الشكاوى عن شيفرة كتبتها آلة تدفن الحفنة التي تخصّ شيفرتك. يسأل Gitcito جِت أي الملفات متجاهَلة فيُسقطها، ولا يُسقط أبدًا ملفًا متتبَّعًا: إيداع المخرجات المولَّدة قرار، وgit check-ignore يحترمه. أما node_modules فيخرج على أي حال.

ما غيّرته أنت فقط

يُسقط المفتاح في الترويسة كل مشكلة في ملف لم تمسّه. هذه هي الشاشة الجديرة بأن تبقى مفتوحة: قائمة مسطّحة بكل تحذيرات قاعدة الشيفرة تصير ورق جدران خلال أسبوع، بينما «هل أضافها هذا التعديل؟» سؤال يستحق الإجابة قبل الإيداع.

وتُصفّي أيضًا أقراص الخطورة. المطفأة تعني أظهر كل شيء، وإضاءة واحدة تحصر القائمة فيها.

الحدود

  • لا خادم لغة. هذه مسحة واحدة لا خدمة تعمل باستمرار: لا خطوط متعرّجة أثناء الكتابة، ولا نتائج قبل أن تطلبها.
  • الأداة غير المثبَّتة تُذكر ولا تُخفى. يقول التذييل ما تعذّر تشغيله، لأن قائمة فارغة بلا تفسير أسوأ من قائمة قصيرة لها سبب.
  • لا يُفهم إلا الخرج المقروء آليًا. يُقرأ كل محلّل من صيغته الآلية الموثّقة؛ أما أداة مضبوطة لتطبع شيئًا آخر فهي غير مرئية هنا.
  • السقف خمسة آلاف مشكلة. بعدها تقول اللوحة ذلك وتتوقّف — فمستودع في هذه الحال لديه مشكلة أكبر من شريط التمرير.

انظر أيضًا: CI محلي · الطرفية المدمجة

حسّن هذه الترجمة على GitHub