الإضافة: اضغط F5. إعداد Run Extension يشغّل مهمة npm: build ثم يفتح Extension Development Host والإضافة محمّلة فيه. افتح أي مستودع Git في تلك النافذة وشغّل الأوامر.
سطر الأوامر:npm run build:cli && node dist/cli.js /path/to/repo، أو استخدم npx tsx src/cli/index.ts /path/to/repo بدون بناء.
HTML لوحة المعلومات: renderDashboardDocument(report, { nonce: "x", standalone: true }) تعيد صفحة يمكنك فتحها في المتصفح.
.github/workflows/ci.yml يعمل عند كل push إلى main وعلى الـ pull requests، على Ubuntu وWindows وmacOS × Node 22 و24:
npm ci ← typecheck ← lint ← test ← build ← vsce package.
مهمة Ubuntu / Node 24 ترفع ملف .vsix كملف ناتج. Windows موجود عن قصد: فواصل المسارات، ونهايات الأسطر CRLF، وتحويل git.exe سبّبت أخطاء حقيقية من قبل (انظر سجل التغييرات).
حدّث EXTENSION_VERSION في website/lib/constants.ts.
قائمة files في package.json تحدد ما يُشحن (في .vsix وفي حزمة npm): الحزمتان، والأيقونات، وREADME.md وCHANGELOG.md وdocs/PRIVACY.md وdocs/RULES.md وLICENSE.txt. بقية ملفات التوثيق في هذا المجلد لا تُشحن؛ أضفها إلى files إذا أردتها في الحزمة.
ملفات الإعدادات الموجودة لا تذكر القاعدة الجديدة، فتكون معطلة فيها حتى يضيفها المستخدمون (القاعدة غير الموجودة معطلة). والمدقق يقبلها بمجرد إضافتها إلى RULE_IDS.
أنشئ src/analyzers/<lang>Analyzer.ts يصدّر analyze<Lang>(filePath, text, config): RawFinding[] وقائمة امتداداته. استخدم ruleEnabled وruleLimit وruleOption من model.ts، وأعد استخدام secrets.ts / names.ts.
سجّله في runAnalyzers.ts: أضف الامتدادات إلى ALL_EXTENSIONS وفرعاً في analyzerFor(). فحص HEAD ومرور الـ commits والتنبيهات المباشرة كلها تستخدم analyzerFor()، فلا حاجة لربط أي شيء آخر.
تأكد أن fingerprint.ts يحذف صيغة تعليقات السطر في تلك اللغة (حالياً // و#).
فكّر في إضافة إعداد مسبق في presets.ts واكتشافه في detectPreset().
docs/*.md English — the source of truthdocs/ar/*.md Arabicdocs/tr/*.md Turkish
الإنجليزية هي المرجع. عندما تغيّر ملفاً إنجليزياً، حدّث الترجمتين في نفس التغيير. قواعد تحافظ على عمل صفحات التوثيق في الموقع (انظر 16):
أبقِ بنية العناوين متطابقة (نفس عدد العناوين، ونفس المستويات، ونفس الترتيب). الموقع يعطي العناوين المترجمة معرّفات الروابط الإنجليزية حسب موقعها، فتبقى الروابط والعناوين URL متطابقة في كل اللغات.
الروابط إلى الأقسام تستخدم المعرّفات الإنجليزية في كل اللغات (مثل 08-scoring.md#severity-weights).
الروابط إلى ملفات خارج docs/ تصعد مستوى إضافياً في الترجمات (../../src/… بدلاً من ../src/…).
عرّفه تحت contributes.configuration.properties في package.json.
اقرأه في readSettings() في src/extension.ts.
إذا كان يقابل مفتاحاً في الإعدادات، أضفه إلى ExtensionSettings وapplySettings() في src/core/analyzeRepository.ts. فضّل القيمة undefined عندما لا يضبطه المستخدم، حتى لا يتجاوز الافتراضيُّ ملفَ الإعدادات.