Hacker News

Mostra HN: Rev-dep: build alternativa a knip.dev 20 volte più veloce in Go

Scopri rev-dep, uno strumento di rilevamento dei codici morti creato da Go che è 20 volte più veloce di knip.dev. Riduci i tempi di creazione e ripulisci la base di codice per team software in crescita.

7 minimo letto

Mewayz Team

Editorial Team

Hacker News

La tassa nascosta su ogni team di software in crescita

Ogni progetto software che sopravvive abbastanza a lungo alla fine affronta la stessa crisi silenziosa: la base di codice inizia a crescere più velocemente di quanto il team possa capirlo. Funzioni che nessuno chiama, esportazioni create per una funzionalità rilasciata nel 2022 e successivamente deprecata, componenti che risiedono su disco ma non raggiungono mai un browser. Questa non è trascuratezza: è fisica. I team si muovono velocemente, i requisiti cambiano e l’entropia è implacabile. La domanda non è se la tua base di codice ha un codice morto. La domanda è quanto ti costa in questo momento.

Secondo una ricerca condotta dal team di produttività tecnica di Google, gli sviluppatori dedicano in media il 42% del tempo dedicato alla codifica leggendo e comprendendo il codice esistente anziché scrivere nuove funzionalità. Quando il codice esistente include migliaia di righe che non servono più a nessuno scopo, la percentuale aumenta ancora di più. Per un team di dieci ingegneri, si tratta effettivamente di quattro dipendenti a tempo pieno che non fanno nulla di produttivo, non perché siano pigri, ma perché i loro strumenti non tengono il passo con la velocità con cui il software invecchia.

Questo è il motivo per cui una nuova ondata di strumenti per sviluppatori basati su linguaggi di sistema come Go e Rust sta generando un vero entusiasmo negli ambienti ingegneristici. Strumenti come Rev-dep, un analizzatore di dipendenza inversa che afferma di funzionare 20 volte più velocemente del popolare knip.dev basato su JavaScript, rappresentano molto più di un semplice miglioramento incrementale. Segnalano un ripensamento fondamentale del modo in cui strumentiamo il processo di sviluppo stesso.

Cosa fa effettivamente l'analisi delle dipendenze inverse

Prima di capire perché la velocità è così importante, è utile capire cosa stanno effettivamente facendo gli strumenti di analisi delle dipendenze. In un progetto JavaScript o TypeScript, ogni file viene importato da altri file. Every function, class, or constant that gets exported from a module creates a potential dependency — something that other parts of the codebase might rely on. L'analisi delle dipendenze "inverse" ribalta questa prospettiva: invece di chiedere "da cosa dipende questo modulo", chiede "cosa dipende da questo modulo?"

Se la risposta alla seconda domanda è "niente", hai trovato un codice morto. Un’esportazione che non importa nulla è uno spreco. Una funzione che nulla chiama è il debito tecnico con tasso di interesse mensile. Gli strumenti di dipendenza inversa percorrono sistematicamente l'intero grafico del progetto, mappano ogni relazione tra i moduli e fanno emergere i nodi che non hanno connessioni in entrata. Il risultato è un controllo preciso di tutto ciò che nella tua codebase potrebbe essere rimosso in sicurezza.

💡 LO SAPEVI?

Mewayz sostituisce più di 8 strumenti business in un'unica piattaforma

CRM · Fatturazione · HR · Progetti · Prenotazioni · eCommerce · POS · Analisi. Piano gratuito per sempre disponibile.

Inizia gratis →

Knip.dev lo fa bene per i progetti JavaScript e TypeScript ed è ampiamente rispettato nella comunità. Ma è scritto in JavaScript, il che significa che funziona su Node.js, il che significa che eredita tutti i vincoli prestazionali a thread singolo di Node quando si esegue l'attraversamento di file system su larga scala e l'analisi dei simboli. Per un progetto con 500 file, va bene. Per un progetto con 50.000 file, il tipo di monorepo che alimenta i prodotti SaaS aziendali reali, l'analisi può richiedere minuti. E i minuti, alla cadenza con cui operano le moderne pipeline CI/CD, sono un problema.

Perché andare cambia il calcolo

Go è stato progettato da zero per esattamente il tipo di carico di lavoro richiesto dall'analisi delle dipendenze: I/O di file veloce, eccellenti primitive di concorrenza e sovraccarico minimo di runtime. Laddove Node.js elabora un'attività alla volta su un singolo thread e si affida a callback e promette un falso parallelismo, Go può generare migliaia di goroutine che vengono effettivamente eseguite in parallelo su tutti i core della CPU disponibili. Per un'attività che prevede la lettura di centinaia di file, l'analisi dei relativi AST e la creazione di un grafico delle relazioni dei simboli, questa differenza architetturale si traduce direttamente in prestazioni eccezionali.

L'aumento di 20 volte dichiarato da Rev-dep non è magico: è ciò che accade quando abbini la lingua giusta al problema giusto. La natura compilata di Go implica anche l'assenza di penalità nel riscaldamento JIT. Dall'avvio a freddo all'analisi completa, un sistema binario Go funziona quasi al picco 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.

Prova Mewayz Gratis

Piattaforma tutto-in-uno per CRM, fatturazione, progetti, HR e altro. Nessuna carta di credito richiesta.

Inizia a gestire la tua azienda in modo più intelligente oggi.

Unisciti a 30,000+ aziende. Piano gratuito per sempre · Nessuna carta di credito richiesta.

Lo hai trovato utile? Condividilo.

Pronto a metterlo in pratica?

Unisciti a 30,000+ aziende che utilizzano Mewayz. Piano gratuito per sempre — nessuna carta di credito richiesta.

Inizia prova gratuita →

Pronto a passare all'azione?

Inizia la tua prova gratuita Mewayz oggi

Piattaforma aziendale tutto-in-uno. Nessuna carta di credito richiesta.

Inizia gratis →

Prova gratuita di 14 giorni · Nessuna carta di credito · Disdici quando vuoi