Hacker News

إظهار HN: Rev-dep – بناء بديل knip.dev أسرع 20 مرة في Go

اكتشف rev-dep، وهي أداة مدمجة للكشف عن التعليمات البرمجية الميتة وهي أسرع 20 مرة من knip.dev. قم بتقليل أوقات البناء وتنظيف قاعدة التعليمات البرمجية الخاصة بك لفرق البرامج المتنامية.

4 دقيقة قراءة

Mewayz Team

Editorial Team

Hacker News

الضريبة الخفية على كل فريق برمجيات متنامٍ

كل مشروع برمجي يبقى لفترة كافية يواجه في نهاية المطاف نفس الأزمة الهادئة: تبدأ قاعدة التعليمات البرمجية في النمو بشكل أسرع مما يستطيع الفريق فهمه. الوظائف التي لا يستدعيها أحد، والصادرات التي تم إنشاؤها لميزة تم شحنها في عام 2022 وتم إيقافها بهدوء، والمكونات التي تعيش على القرص ولكنها لا تصل إلى المتصفح أبدًا. هذا ليس ارتباكًا، بل هو فيزياء. تتحرك الفرق بسرعة، وتتغير المتطلبات، والإنتروبيا لا هوادة فيها. السؤال ليس ما إذا كانت قاعدة التعليمات البرمجية الخاصة بك تحتوي على تعليمات برمجية ميتة. والسؤال هو كم يكلفك الآن.

وفقًا لبحث أجراه فريق الإنتاجية الهندسي في Google، يقضي المطورون ما متوسطه 42% من وقت البرمجة في قراءة وفهم التعليمات البرمجية الموجودة بدلاً من كتابة وظائف جديدة. عندما يتضمن هذا الكود الحالي آلاف الأسطر التي لم تعد تخدم أي غرض، فإن هذه النسبة تنحرف بشكل أكبر. بالنسبة لفريق مكون من عشرة مهندسين، هذا يعني في الواقع أربعة موظفين بدوام كامل لا يفعلون شيئًا منتجًا - ليس لأنهم كسالى، ولكن لأن أدواتهم لا تواكب سرعة تقدم البرامج.

ولهذا السبب فإن موجة جديدة من أدوات المطورين المبنية على لغات الأنظمة مثل Go وRust تثير إثارة حقيقية في الدوائر الهندسية. تمثل أدوات مثل Rev-dep - وهو محلل التبعية العكسية الذي يزعم أنه يعمل بشكل أسرع 20 مرة من knip.dev الشهير المستند إلى JavaScript - أكثر من مجرد تحسين تدريجي. إنها تشير إلى إعادة التفكير بشكل أساسي في كيفية إدارة عملية التنمية نفسها.

ما الذي يفعله تحليل التبعية العكسية فعليًا

قبل أن نفهم سبب أهمية السرعة إلى هذا الحد، من المفيد أن نفهم ما تفعله أدوات تحليل التبعية فعليًا. في مشروع JavaScript أو TypeScript، يتم استيراد كل ملف من ملفات أخرى. كل وظيفة أو فئة أو ثابت يتم تصديره من الوحدة النمطية ينشئ تبعية محتملة - وهو أمر قد تعتمد عليه أجزاء أخرى من قاعدة التعليمات البرمجية. يقلب تحليل التبعية "العكسي" هذا المنظور: فبدلاً من طرح السؤال "ما الذي تعتمد عليه هذه الوحدة"، فإنه يسأل "ما الذي يعتمد على هذه الوحدة؟"

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

💡 هل تعلم؟

Mewayz تحل محل 8+ أدوات أعمال في منصة واحدة

CRM · الفواتير · الموارد البشرية · المشاريع · الحجوزات · التجارة الإلكترونية · نقطة البيع · التحليلات. خطة مجانية للأبد متاحة.

ابدأ مجانًا →

يقوم Knip.dev بذلك بشكل جيد لمشاريع JavaScript وTypeScript، ويحظى باحترام واسع النطاق في المجتمع. ولكنها مكتوبة بلغة JavaScript، مما يعني أنها تعمل على Node.js، مما يعني أنها ترث جميع قيود الأداء ذات الترابط الفردي الخاصة بالعقدة عند القيام باجتياز نظام الملفات وتحليل الرموز على نطاق واسع. بالنسبة لمشروع يحتوي على 500 ملف، فهذا جيد. بالنسبة لمشروع يحتوي على 50000 ملف - وهو نوع monorepo الذي يدعم منتجات SaaS للمؤسسات الحقيقية - يمكن أن يستغرق التحليل دقائق. والدقائق، في الإيقاع الذي تعمل به خطوط أنابيب CI/CD الحديثة، تعد بمثابة كسر للصفقات.

لماذا يذهب يغير الحساب

تم تصميم Go من الألف إلى الياء ليناسب بالضبط نوع عبء العمل الذي يتطلبه تحليل التبعية: إدخال/إخراج سريع للملفات، وبدائل متزامنة ممتازة، والحد الأدنى من الحمل الزائد لوقت التشغيل. حيث يقوم Node.js بمعالجة مهمة واحدة في كل مرة على مؤشر ترابط واحد ويعتمد على عمليات رد الاتصال والوعود بالتوازي الزائف، يمكن لـ Go إنتاج آلاف من goroutines التي يتم تنفيذها بشكل متوازٍ عبر جميع مراكز وحدة المعالجة المركزية المتاحة. بالنسبة لمهمة تتضمن قراءة مئات الملفات، وتحليل ASTs الخاصة بها، وإنشاء رسم بياني لعلاقات الرموز، فإن هذا الاختلاف المعماري يترجم مباشرة إلى أداء ساعة الحائط.

إن التسريع بمقدار 20 مرة الذي تطالب به Rev-dep ليس سحرًا - بل هو ما يحدث عندما تقوم بمطابقة اللغة الصحيحة مع المشكلة الصحيحة. طبيعة Go المجمعة تعني أيضًا عدم وجود عقوبة إحماء لـ JIT. من البداية الباردة إلى التحليل الكامل، يعمل ثنائي Go عند نقطة الذروة p

Frequently Asked Questions

What makes Rev-dep faster than knip.dev?

Rev-dep is built in Go, a compiled systems language optimized for concurrency and raw execution speed, whereas knip.dev runs on Node.js. This architectural difference allows Rev-dep to analyze dependency graphs and detect dead code up to 20x faster. For large monorepos or complex codebases — like the 207-module architecture powering Mewayz's business OS at app.mewayz.com — that performance gap translates into real time saved on every CI run.

How much dead code does a typical growing project accumulate?

Studies and anecdotal reports from engineering teams suggest that mature codebases can carry anywhere from 10% to 35% unused or unreachable code. The problem compounds as teams scale — features get deprecated, APIs change, and modules are abandoned without cleanup. Platforms like Mewayz, which consolidates over 207 business modules into a single $19/mo operating system, rely heavily on systematic dead code detection to keep the codebase lean and maintainable.

Is Rev-dep suitable for teams that don't use JavaScript or TypeScript?

Rev-dep is currently focused on JavaScript and TypeScript ecosystems, making it a direct alternative to knip.dev for those environments. Support for additional languages may expand as the project matures. If your team builds web-based products or SaaS tools — similar to how Mewayz delivers its full business OS at app.mewayz.com — and your stack is JS/TS-heavy, Rev-dep is well worth evaluating as part of your developer toolchain today.

Can I integrate Rev-dep into my existing CI/CD pipeline?

Yes. Rev-dep is designed as a CLI tool, making it straightforward to drop into any CI/CD pipeline alongside your existing linting and testing steps. Its speed advantage is especially valuable in automated pipelines where faster feedback loops reduce developer wait times. Whether you're running a lean startup or managing a full-featured platform like Mewayz's $19/mo business OS, integrating dead code analysis into your pipeline helps enforce codebase hygiene at every merge.

جرب Mewayz مجانًا

منصة شاملة لإدارة العلاقات والعملاء، والفواتير، والمشاريع، والموارد البشرية، والمزيد. لا حاجة لبطاقة ائتمان.

ابدأ في إدارة عملك بشكل أكثر ذكاءً اليوم.

انضم إلى 30,000+ شركة. خطة مجانية للأبد · لا حاجة لبطاقة ائتمان.

وجدت هذا مفيدا؟ أنشرها.

هل أنت مستعد لوضع هذا موضع التنفيذ؟

انضم إلى 30,000+ شركة تستخدم ميويز. خطة مجانية دائمًا — لا حاجة لبطاقة ائتمان.

ابدأ التجربة المجانية →

هل أنت مستعد لاتخاذ إجراء؟

ابدأ تجربة Mewayz المجانية اليوم

منصة أعمال شاملة. لا حاجة لبطاقة ائتمان.

ابدأ مجانًا →

تجربة مجانية 14 يومًا · لا توجد بطاقة ائتمان · إلغاء في أي وقت