Hacker News

Ipakita ti HN: Rev-dep – 20x a naparpartak a knip.dev alternatibo a panagbangon iti Go

Dagiti Komento

17 min read Via github.com

Mewayz Team

Editorial Team

Hacker News

Ti Nalimed a Buis iti Tunggal Dumakkel a Software Team

Tunggal proyekto ti software a makalasat iti umdas a kabayag ket kamaudiananna ket maipasango iti isu met laeng a naulimek a krisis: ti codebase ket mangrugi a dumakkel a naparpartak ngem ti maawatan ti grupo. Functions nobody calls, exports a naparsua para iti feature a naipatulod idi 2022 ken naulimek a naikkat, components nga agbibiag iti disk ngem pulos a di makadanon iti browser. Saan a sloppiness daytoy — physics dayta. Napartak ti panaggaraw dagiti team, agbaliw dagiti kasapulan, ken awan sarday ti entropia. Ti saludsod ket saan no ti codebase-mo ket addaan iti natay a kodigo. Ti saludsod ket no mano ti magastos kenka ita.

Segun ti panagsukisok manipud iti grupo ti produktibidad ti inhenieria ti Google, dagiti agparparang-ay ket mangbusbosda ti promedio a 42% ti panawenda iti panagkodigo iti panagbasa ken pannakaawat kadagiti addan a kodigo imbes nga agsurat kadagiti baro a panagandar. No dayta nga addan a kodigo iramanna ti rinibu a linia a saanen nga agserbi iti aniaman a panggep, ad-adda pay nga agkiling dayta a porsiento. Para iti maysa a grupo ti sangapulo nga inheniero, dayta ket epektibo nga uppat nga amin-tiempo nga empleado nga awan ti produktibo nga agar-aramid — saan a gapu ta natamadda, no di ket gapu ta dagiti ramitda ket saan a makidanggay iti kapartak a panaglakay ti software.

Daytoy ti gapuna a ti baro a dalluyon ti developer tooling a naibangon kadagiti pagsasao ti sistema a kas ti Go ken Rust ket mangpatpataud ti pudno a ragsak kadagiti sirkulo ti inhenieria. Dagiti ramit a kas ti Rev-dep — ti baliktad a panagpannuray nga analisador a mangibagbaga nga agtaray a 20x a naparpartak ngem ti nalatak a JavaScript-based a knip.dev — ket mangibagi ti ad-adu ngem ti incremental a panagpasayaat laeng. Dagitoy ket mangipasimudaag ti pundamental a panagpanunot manen no kasano nga instrumentotayo ti proseso ti panagdur-as a mismo.

Ania ti Aktual nga Ar-aramiden ti Reverse Dependency Analysis

Sakbay a maawatan no apay a napateg unay ti kapartak, makatulong daytoy a mangawat no ania ti aktual nga ar-aramiden dagiti ramit ti panaganalisar ti panagpannuray. Iti proyekto ti JavaScript wenno TypeScript, tunggal maysa a papeles ket ag-import manipud kadagiti sabali a papeles. Tunggal panagandar, klase, wenno konstante a makaala ti mairuar manipud iti maysa a modulo ket mangpartuat ti potensial a panagpanpanunot — banag a mabalin nga agpannuray dagiti dadduma a paset ti codebase. Ti "baliktad" a panaganalisar ti panagpanpanunot ket mangbaliwbaliw iti daytoy a panirigan: imbes a saludsoden ti "ania ti agpannuray daytoy a modulo," daytoy ket agsaludsod "ania ti agpannuray iti daytoy a modulo?"

No ti sungbat iti dayta maikadua a saludsod ket "awan," nasarakam ti natay a kodigo. Ti eksport nga awan ti aggapu iti sabali a pagilian ket basura. Ti function nga awan ti mangawag ket ti teknikal nga utang nga addaan iti binulan nga interes. Dagiti ramit ti panagpannuray a baliktad ket sistematiko a magna ti sibubukel a grapo ti proyektom, mangmapa ti tunggal maysa a relasion iti nagbaetan dagiti modulo, ken mangrabaw kadagiti nodo nga awan dagiti sumsumrek a koneksion. Ti resulta ket ti eksakto a panag-audit ti amin nga adda iti codebase-mo a mabalin a natalged a maikkat.

Ti Knip.dev ket aramidenna daytoy a nasayaat para kadagiti proyekto ti JavaScript ken TypeScript, ken daytoy ket nasaknap a mararaem iti komunidad. Ngem naisurat daytoy iti JavaScript, a kayatna a sawen nga agtartaray daytoy iti Node.js, a kayatna a sawen a tawidenna amin dagiti single-threaded performance constraints ti Node no agar-aramid iti dakkel a panagballasiw ti sistema ti file ken panaganalisar ti simbolo. Para iti proyekto nga addaan iti 500 a file, nasayaat daytoy. Para iti proyekto nga addaan iti 50,000 a file — ti kita ti monorepo a mangpabileg kadagiti pudno a produkto ti SaaS ti empresa — ti panaganalisar ket mabalin nga alaenna ti sumagmamano a minuto. Ket minuto, iti cadence a pagoperasionan dagiti moderno a tubo ti CI/CD, ket maysa a dealbreaker.

Apay a Ti Go ket Baliwanna ti Kalkulasion

Ti Go ket nadisenio manipud iti daga para iti eksakto a kita ti karga ti trabaho a kalikaguman ti panaganalisar ti panagpanpanunot: napardas nga I/O ti papeles, dagiti nasayaat a primitibo ti panaggigiddan, ken bassit a panagtaray ti panagtaray. No sadino a ti Node.js ket mangproseso ti maysa nga aramid iti tunggal maysa a gundaway iti maymaysa a thread ken agpannuray kadagiti callback ken mangikari iti peke a paralelismo, ti Go ket mabalin a mangipasngay kadagiti rinibu a goroutines a pudno nga ag-execute a paralelo iti ballasiw dagiti amin a magun-od a CPU a puso. Para iti maysa nga aramid a mairaman ti panagbasa kadagiti ginasut a papeles, panag-parse kadagiti AST-da, ken panagbangon ti grapo dagiti relasion ti simbolo, daytoy a panagdumaduma ti arkitektura ket direkta nga agipatarus iti panagaramid ti relo ti diding.

Ti 20x speedup nga ibagbaga ti Rev-dep ket saan a mahika — isu ti mapasamak no maitunosmo ti umno a pagsasao iti umno a parikut. Ti compiled nature ni Go ket kayatna met a sawen nga awan ti JIT warmup penalty. Manipud iti nalamiis a panangrugi aginggana iti kompleto a panaganalisar, ti maysa a Go binary ket agtartaray iti asideg-pantok a panagaramid. Ti praktikal nga implikasion ket ti panaganalisar a nangala ti 90 a segundo iti maysa a Node-based nga alikamen ket mabalin a makompleto iti baba ti 5 a segundo iti nasayaat a naipatungpal a katupag ti Go. Dayta ti nagdumaan ti tseke a laksiden dagiti agparparang-ay gapu ta "makaala iti agnanayon" ken ti maysa nga agtartaray iti tunggal maysa a panagkumit nga awan ti asinoman a makadlaw ti overhead.

"Ti kasayaatan nga alikamen ti developer ket maysa a rummuar iti dalan. No ti suite ti panaganalisarmo ket manginayon ti tallo a minuto iti tunggal maysa a tubo ti CI, dagiti agparparang-ay ket makasarakda kadagiti wagas a manglaksid iti daytoy. Ti kapartak ket saan a nasayaat-a-maadda — daytoy ti kasapulan para iti panangampon."

Ti Kaso ti Negosio para iti Kinadalus ti Codebase

Ti natay a kodigo ket saan laeng a maysa a parikut ti estetika ti developer — daytoy ket addaan kadagiti konkreto a pagbanagan ti negosio a kumaro iti panaglabas ti panawen. Panunotem no ania dagiti nabuong a codebase ti aktual a magastos kadagiti organisasion:

  • Napapaut nga oras ti panagbangon a mangpabannayat kadagiti tubo ti pannakaipakat ken mangkissay ti bilang dagiti pannakairuar a sitatalged a maipatulod ti maysa a grupo iti kada lawas
  • Nangatngato a kognitibo a karga para kadagiti inheniero ti onboarding, a masapul a mangbusbos kadagiti lawas a mangilasin kadagiti aktibo a padron manipud kadagiti nabaybay-an
  • Naingato dagiti kadakkel ti bundle a mangdangran iti panagaramid ti aplikasion, partikular kadagiti web apps a sadiay ti tunggal kilobyte ket mangapektar kadagiti oras ti panagkarga ken dagiti rate ti panagbalbaliw
  • Panagpalawa ti rabaw ti seguridad — ti natay a kodigo nga aglaon pay laeng kadagiti panagpanpanunot ket maysa pay laeng a vektor para kadagiti kinaawan ti proteksion kadagita a pakete
  • Test suite bloat a sadiay dagiti panagsubok para iti naikkat a panagandar ket agtultuloy nga agtaray, agkonsumo kadagiti minuto ti CI, ken sagpaminsan a mapaay kadagiti makariro a wagas
  • Dagiti palso a senial ti kinarikut a mangaramid kadagiti pangngeddeng ti arkitektura a narigrigat gapu ta saan a nalawag no ania ti load-bearing ken no ania ti vestigial
| Saan a naiparna ti korelasion. Dagiti nadalus a codebase ket nalaklaka a irason, nalaklaka a masubok, ken nalaklaka a mabaliwan a natalged.

Para kadagiti negosio a mangbangbangon kadagiti plataporma a kas ti Mewayz — a mangpabileg kadagiti 138,000 nga agar-aramat iti ballasiw ti 207 a naisangayan a modulo ti negosio manipud iti CRM ken payroll aginggana iti panagmanehar ti armada ken dagiti ramit ti link-in-bio — ti salun-at ti codebase ket immadu ti taya. No ti platapormam ket mangsaklaw iti dayta nga adu a panagandar a dominio, ti rabaw ti panagtipon iti nagbaetan dagiti modulo ket dakkel unay. Dagiti saan a naus-usar nga eksport iti maysa a kangrunaan a modulo ket mabalin a mangpartuat kadagiti ulbod a namnama para kadagiti agpampannuray a modulo, mangtignay kadagiti saan a kasapulan a panagiparang manen iti UI a sapasap, ken mangkomplikado ti grapo ti panagpanpanunot kadagiti wagas a mangaramid kadagiti masakbayan a panagbalbaliw a napeggad.

Panangikapet ti Panag-analisar ti Panagpannuray Kadagiti Moderno nga Agayus ti Trabaho ti Panagrang-ay

Ti pudno a bileg ti napardas a tooling a kas ti Rev-dep ket saan a ti maminsan a panagdalus a pagbalinenna — daytoy ket ti abilidad a mangpataray ti agtultuloy a panaganalisar a kas paset ti normal a siklo ti panagrang-aymo. No ti dead code scan ket mangala ti 4 a segundo imbes nga 4 a minuto, mabalinmo nga inayon daytoy kadagiti pre-commit hooks-mo. No kasapulan ti 4 a segundo imbes nga 4 a minuto, ti tubo ti CI mo ket mabalin a mapaay ti kiddaw ti panagguyod a mangiyam-ammo kadagiti baro a saan a naus-usar nga eksport imbes a bay-an dagitoy nga agurnong a siuulimek.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

Daytoy a panagbalbaliw manipud iti "quarterly cleanup event" aginggana iti "continuous quality gate" ket analogo iti napasamak idi dagiti linters ket nagbalin nga umdas a napardas nga agtaray iti tunggal maysa a keystroke iti maysa nga IDE. Sakbay a nagtaray ti ESLint iti aktual nga oras, ti estilo ti kodigo ket naipatungpal babaen ti periodiko a panagrepaso ti kodigo. Kalpasan, nagbalin daytoy nga ambient — paset ti feedback loop developer a napadasan bayat ti panagsuratda iti kodigo, saan a kalpasan. Ti napardas a panaganalisar ti panagpanpanunot ket mabalin a mangpartuat ti isu met laeng a presion ti kalidad ti aglawlaw iti aglawlaw ti natay a kodigo.

Ti panangisaad iti daytoy nga ayus ti trabaho ket kadawyan a mairaman ti tallo a paset:

  1. Panag-analisar ti batayan: Ipataray ti ramit a maibusor ti agdama a codebase-mo tapno maawatan ti sukog ti addan a natay a kodigo. Dimo padasen nga ilinteg ti amin a maminsan — triage babaen ti module ken ipangpangruna babaen ti risgo.
  2. CI enforcement: Inayon ti panaganalisar iti tubo nga addaan iti threshold — mapaay iti ania man a baro a naiyam-ammo a saan a nausar nga eksport, ngem saan a mapaay kadagiti addan agingga a dimo dalusan dagitoy.
  3. Dagiti naikeddeng nga sprint ti panagdalus: Usaren ti rimmuar ti ramit tapno mangiwanwan ti regular a trabaho ti panagdalus, a mangsurot ti bilang ti natay a kodigo a kas maysa a metriko ti salun-at ti grupo iti panaglabas ti panawen.

Ania ti Go Tooling Renaissance Signals para kadagiti SaaS Builders

Ti Rev-dep ket paset ti nalawlawa a padron iti ramit ti developer: dagiti nangato ti panagaramidna nga alternatibo kadagiti naipasdek nga alikamen ti JavaScript, a naibangon iti Go wenno Rust, ket agparang iti ballasiw ti tunggal maysa a kategoria. Ni Biome ti nangsukat iti ESLint ken Prettier para iti adu a team. Mangmangan da Turbopack ken Rspack iti pangngaldaw ni Webpack. Bun ti mangkarit iti Node.js a mismo. Ti gagangay a thread ket dagitoy nga alikamen ket saan laeng a mangitukon ti incremental improvement — dagitoy ket mangitukon kadagiti step-function improvements a mangbalbaliw no ania ti praktikal.

Para kadagiti kompania ti SaaS a mangbangbangon kadagiti komplikado, adu-modulo a produkto, daytoy a renaissance ti tooling ket addaan kadagiti direkta nga implikasionda para iti kapartak ti inhenieria. Ti 207-module nga arkitektura ni Mewayz — a mangsaklaw iti amin manipud iti HR ken payroll agingga kadagiti sistema ti panag-book ken dagiti dashboard ti analytics — ket mangibagi ti eksakto a kita ti dakkel, agsisilpo a codebase a sadiay ti napardas, umiso a panaganalisar ti panagpanpanunot ket agbalin a kritikal iti operasion. No ti panagbalbaliw iti naibingbingay a modulo ti utilidad ket mabalin a teoretikal a ripple babaen dagiti pinulpullo a modulo ti tampok, ti kaadda ti asideg a dagus a pannakakita iti aktual a grapo ti panagpanpanunot ket saan laeng a kombeniente — daytoy ket ti kita ti imprastruktura a manglapped kadagiti nangina nga insidente ti produksion.

Ti abilidad a mangsungbat iti "no ania ti aktual nga agus-usar iti daytoy a panagandar" iti baba ti lima a segundo imbes a lima a minuto ket mangbalbaliw no kasano ti panagaramid dagiti inheniero kadagiti pangngeddeng. Pababaenna ti gastos iti panagimbestigar, a kaipapananna a masansan nga agimbestigar dagiti inheniero, a kaipapananna a nasaysayaat ti pangngeddengda. Daytoy ket ti compounding return on investment iti napardas a tooling a masansan a maliwayan no dagiti organisasion ket agpanunot maipapan ti panaggasto ti produktibidad ti developer.

Panangaramid ti Dead Code Elimination a Paset ti Kulturam iti Inhenieria

Ti teknolohia laeng ket saan a mangbangon kadagiti nadalus a codebase — ti kultura ket mangaramid. Dagiti ramit a kas ti Rev-dep ket mangipaay ti kabaelan, ngem ti panangbalbaliw iti dayta a kabaelan iti agtultuloy a panagsanay ket kasapulan ti organisasional a panagkumit. Dagiti kaepektibuan a grupo ket mangtrato kadagiti natay a metriko ti kodigo iti isu met laeng a wagas a mangtratoda ti sakup ti panagsubok: a kas ti makita, nasurot a mangipakita ti salun-at ti codebase a makagun-od ti pannakarepaso kadagiti miting ti inhenieria ken mai-factor iti panagplano ti sprint.

Dagiti sumagmamano nga espesipiko a kultural nga aramid nga agtrabaho a nasayaat ket mairaman ti panangituding kadagiti "aldaw ti pannakaikkat ti kodigo" — dagiti periodiko a pasamak a ti nalawag a panggep ket ti panangikkat ti kodigo imbes a manginayon iti daytoy. Ti Netlify ket nalatak a gamified daytoy babaen ti panagtaray kadagiti leaderboard a mangsurot kadagiti linia ti net a nabura. Ti Stripe ket nagsurat iti publiko maipapan ti panagsanayda a mangtrato ti pannakaikkat ti kodigo a kas ti umuna a klase a kontribusion ti inhenieria, a kapada ti pateg iti trabaho ti tampok. Ti panagbalbaliw ti panagpampanunot a kasapulan ket ti panangbigbig a ti kasayaatan a kodigo ket ti kodigo nga awan: tunggal linia a dimo isurat ket maysa a linia a pulos a dimo kasapulan a manteneren, suboken, i-debug, wenno ilawlawag iti baro a natangdanan.

Para kadagiti kompania ti produkto a mangiturturong kadagiti komplikado nga operasion ti negosio, ti paralelo iti ruar ti inhenieria ket agpapada a makaisuro. Ti isu met laeng a disiplina a mamagbalin kadagiti codebase a nasalun-at — regular nga audit, nalawag a panagtagikua, pannakaikkat dagiti banag nga awan ti agus-usar — ​​ket mangaramid kadagiti proseso ti negosio a nasalun-at met. Dagiti plataporma a kas ti Mewayz ket eksakto a naibangon tapno mangted kadagiti negosio iti dayta a kita ti kinalawag ti panagpataray: ti nagkaykaysa a panagkita no ania dagiti ramit ti maus-usar, no ania dagiti panagayus ti trabaho ket mangpatpataud ti pateg, ken no sadino ti maur-urnong ti natay a dagsen ti organisasion. Ag-audit-ka man kadagiti saan a nausar a panageksport ti software wenno dagiti saan a nausar a proseso ti negosio, ti naibatay a disiplina ket agpapada.

Naparpartak dagiti ramit, naing-inget dagiti feedback loop, ken dagiti grupo a mangpuonan iti codebase hygiene infrastructure ita ket mangbangbangon iti compounding advantage a mangbayad iti dividendo iti adu a tawen. Ti Rev-dep ken ti kohortena kadagiti ramit ti Go-powered a developer ket saan laeng a makapainteres a pagrukodan — dagitoy ket ti imprastruktura a suson a mangaramid ti natalged a kapartak ti software a posible. Ket iti lubong a ti kapartak ti panagulit ti kangrunaan a pagsasalipan a bentaha para kadagiti negosio ti software, saan a peripheral a pakaseknan dayta. Isu ti sibubukel nga ay-ayam.

Dagiti Masansan a Saludsod

Ania ti mamagbalin iti Rev-dep a naparpartak ngem ti knip.dev?

Ti Rev-dep ket naibangon iti Go, ti naurnong a pagsasao ti sistema a nasayaat para iti panaggigiddan ken raw a kapartak ti panagipatungpal, idinto a ti knip.dev ket agtartaray iti Node.js. Daytoy a panagdumaduma ti arkitektura ket mangipalubos ti Rev-dep a mang-analisar kadagiti grapo ti panagpanpanunot ken mangduktal ti natay a kodigo aginggana iti 20x a naparpartak. Para kadagiti dadakkel a monorepo wenno komplikado a codebase — kas ti 207-module nga arkitektura a mangpabileg ti OS ti negosio ni Mewayz iti app.mewayz.com — dayta a giwang ti panagaramid ket mangipatarus iti aktual nga oras a naidulin iti tunggal maysa a panagtaray ti CI.

Mano a natay a kodigo ti maurnong ti gagangay a dumakdakkel a proyekto?

Dagiti panagadal ken dagiti anekdotal a reporta manipud kadagiti grupo ti inhenieria ket mangisingasing a dagiti nataengan a codebase ket mabalinda nga awit ti sadinoman manipud iti 10% aginggana ti 35% a saan a naus-usar wenno saan a madanon a kodigo. Ti parikut ket kumaro bayat nga ag-scale dagiti grupo — dagiti tampok ket makagun-od iti saanen a maus-usar, dagiti API ket agbaliw, ken dagiti modulo ket nabaybay-an nga awan ti panagdalus. Dagiti plataporma a kas ti Mewayz, a mangtipon kadagiti nasurok a 207 a modulo ti negosio iti maymaysa a $19/mo a sistema ti panagpataray, ket agpannuray unay iti sistematiko a panagduktal ti natay a kodigo tapno agtalinaed a nalukmeg ken mataginayon ti codebase.

Maibagay kadi ti Rev-dep para kadagiti grupo a saan nga agus-usar ti JavaScript wenno TypeScript?

Ti Rev-dep ket agdama a naipangpangruna kadagiti ekosistema ti JavaScript ken TypeScript, a mangaramid daytoy a direkta nga alternatibo iti knip.dev para kadagita nga aglawlaw. Mabalin a lumawa ti suporta para kadagiti kanayonan a pagsasao bayat nga agmataengan ti proyekto. No ti grupom ket mangbangon kadagiti produkto a naibatay iti web wenno dagiti ramit ti SaaS — a kapada no kasano nga ited ti Mewayz ti naan-anay nga OS ti negosiona iti app.mewayz.com — ken ti stack-mo ket JS/TS-nadagsen, ti Rev-dep ket maikari unay a matingiting a kas paset ti developer toolchain-mo ita.

Mabalinko kadi nga isilpo ti Rev-dep iti agdama a CI/CD pipeline-ko?

Wen. Ti Rev-dep ket nadisenio a kas maysa nga alikamen ti CLI, a mangaramid daytoy a diretso a maitumba iti ania man a tubo ti CI/CD iti abay dagiti agdama nga addangmo iti panaglinting ken panagsubok. Ti bentaha ti kapartak daytoy ket nangruna a napateg kadagiti automated a tubo a sadiay dagiti naparpartak a feedback loop ket mangkissay kadagiti panawen ti panaguray ti developer. Basta agpatpatarayka iti nalukmeg a pangrugian wenno mangiturturong iti naan-anay a naitampok a plataporma a kas iti $19/mo a negosio nga OS ti Mewayz, ti panangikapet iti panaganalisar ti natay a kodigo iti tubom ket makatulong a mangipatungpal iti kinadalus ti codebase iti tunggal panagtipon.

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Start managing your business smarter today

Join 30,000+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime