Hacker News

Show HN: Rev-dep – Go'до 20 эсе тезирээк knip.dev альтернативалуу куруу

Комментарийлер

2 min read Via github.com

Mewayz Team

Editorial Team

Hacker News

Ар бир өсүп жаткан программалык камсыздоо тобуна жашыруун салык

Жетиштүү убакытка чейин жашап жаткан ар бир программалык камсыздоо долбоору акыры ошол эле тынч кризиске туш болот: код базасы команда түшүнө алгандан тезирээк өсө баштайт. Эч ким чакырбаган функциялар, 2022-жылы жөнөтүлгөн жана акырын эскирип калган функция үчүн түзүлгөн экспорттор, дискте жашап, бирок браузерге эч качан жетпей турган компоненттер. Бул шалаакылык эмес - бул физика. Командалар тез кыймылдашат, талаптар өзгөрөт жана энтропия тынымсыз. Суроо сиздин код базаңызда өлүк код бар-жогу эмес. Маселе, бул азыр сизге канча турат.

Google'дун инженердик өндүрүмдүүлүк тобунун изилдөөсүнө ылайык, иштеп чыгуучулар жаңы функцияларды жазууга караганда, коддоо убактысынын орто эсеп менен 42% окуп жана учурдагы кодду түшүнүүгө сарпташат. Ошол учурдагы код эч кандай максатка кызмат кылбай калган миңдеген саптарды камтыса, бул пайыздык көрсөткүч андан да жогору болот. Он инженерден турган команда үчүн бул төрт толук убакыттагы кызматкер жемиштүү эч нерсе жасабай жатат — алар жалкоолуктан эмес, алардын куралдары программалык камсыздоонун эскирген ылдамдыгына туура келбегендиктен.

Ошондуктан, Go жана Rust сыяктуу система тилдеринде курулган иштеп чыгуучу шаймандардын жаңы толкуну инженердик чөйрөлөрдө чыныгы толкунданууну жаратууда. Rev-dep сыяктуу куралдар — популярдуу JavaScript-негизделген knip.devге караганда 20 эсе тезирээк иштейм деп ырастаган тескери көз карандылык анализатору - жөн гана кадам сайын жакшырууну билдирет. Алар иштеп чыгуу процессинин өзүн кандай куралдандырганыбызды түп тамырынан бери кайра карап чыгууну билдирет.

Тескери көз карандылыктын анализи чындыгында эмне кылат

Ылдамдык эмне үчүн мынчалык маанилүү экенин түшүнүүдөн мурун, бул көз карандылыкты талдоо куралдары иш жүзүндө эмне кылып жатканын түшүнүүгө жардам берет. JavaScript же TypeScript долбоорунда ар бир файл башка файлдардан импорттолот. Модулдан экспорттолгон ар бир функция, класс же константа потенциалдуу көз карандылыкты жаратат — код базасынын башка бөлүктөрүнө таяна турган нерсе. "Тескери" көз карандылыкты талдоо бул көз карашты өзгөртөт: "бул модул эмнеден көз каранды" деген суроонун ордуна "бул модулдан эмнеден көз каранды?"

Эгер экинчи суроонун жообу "эч нерсе" болсо, сиз өлүк кодду таптыңыз. Эч нерсе импорттолбогон экспорт ысырап болуп саналат. Эч нерсе чакырбаган функция - бул айлык пайыздык чен менен техникалык карыз. Тескери көз карандылык куралдары системалуу түрдө бүтүндөй долбоордун графигин басып, модулдар ортосундагы ар бир байланышты картага түшүрүп, кирүүчү байланыштары жок түйүндөрдүн бетине. Натыйжада коддук базаңыздагы коопсуз алып салууга мүмкүн болгон бардык нерселердин так аудити.

Knip.dev муну JavaScript жана TypeScript долбоорлору үчүн жакшы аткарат жана ал коомчулукта кеңири кадыр-баркка ээ. Бирок ал JavaScript-те жазылган, башкача айтканда, ал Node.jsде иштейт, башкача айтканда, чоң масштабдагы файл тутумун кыдырып өтүүдө жана символдук талдоо жүргүзүүдө Node'дун бардык бир жиптүү иштөө чектөөлөрүн мурастайт. 500 файлдары бар долбоор үчүн бул жакшы. 50 000 файлдан турган долбоор үчүн - чыныгы ишкананын SaaS өнүмдөрүн иштеткен монорепо түрү - талдоо бир нече мүнөткө созулушу мүмкүн. Заманбап CI/CD түтүктөрүнүн иштеши каденс учурундагы мүнөттөр деталбрейкер болуп саналат.

Эмне үчүн Go эсептөөнү өзгөртөт

Go көз карандылыкты талдоо талап кылган жумуш жүктөмүнүн так түрү үчүн башынан бери иштелип чыккан: тез файл киргизүү/чыгаруу, эң сонун параллелдүүлүк примитивдери жана минималдуу иштөө убактысы. Node.js бир эле жипте бир эле тапшырманы иштетип, кайра чалууларга таянып, жасалма параллелизмди убада кылганда, Go бардык колдо болгон CPU өзөктөрүндө чындап эле параллелдүү аткарылуучу миңдеген горутиндерди чыгара алат. Жүздөгөн файлдарды окуу, алардын AST талдоосу жана символдордун байланыштарынын графигин түзүүнү камтыган тапшырма үчүн, бул архитектуралык айырма түздөн-түз дубал саатынын иштешине айланат.

Rev-dep ырастаган 20 эсе ылдамдык сыйкырдуу эмес — бул туура тилди туура көйгөйгө дал келтиргенде эмне болот. Go компиляцияланган мүнөзү, ошондой эле эч кандай JIT жылытуу жаза билдирет. Суук башталгандан баштап толук анализге чейин Go бинардыкы эң жогорку көрсөткүчтө иштейт. Түйүнгө негизделген куралда 90 секундга созулган талдоо жакшы ишке ашырылган Go эквивалентинде 5 секунддун ичинде бүтүрө алат деген практикалык натыйжа. Иштеп чыгуучулар өткөрүп жиберген текшерүү "түбөлүккө созулат" менен ар бир тапшырмада ашыкча чыгымды байкабай турган чектин ортосундагы айырма ушунда.

"Иштеп чыгуучунун эң мыкты куралы - бул жолдон чыгып кете турган курал. Эгер талдоо топтомуңуз ар бир CI түтүкчөсүнө үч мүнөт кошсо, иштеп чыгуучулар аны өткөрүп жиберүүнүн жолдорун табышат. Ылдамдык жакшы эмес — бул кабыл алуунун негизги шарты."

Код базасынын гигиенасы боюнча бизнес иши

Өлгөн код - бул жөн гана иштеп чыгуучунун эстетикалык көйгөйү эмес, ал убакыттын өтүшү менен татаалдашуучу конкреттүү бизнес кесепеттерге ээ. Иш жүзүндө кандай шишип кеткен код базалары уюмдарга кеткен чыгымды карап көрөлү:

  • Узак куруу убакыттары жайылтуу түтүктөрүн жайлатып, команда жумасына коопсуз жөнөтө турган чыгарылыштардын санын азайтат
  • Жогорку когнитивдик жүк борттогу инженерлер үчүн, алар бир нече жума бою активдүү үлгүлөрдү таштап кеткендерден айырмалоого туура келет
  • Таңгактын чоңойгон өлчөмдөрү колдонмонун майнаптуулугун начарлатат, айрыкча ар бир килобайт жүктөө убактысына жана конверсия ылдамдыгына таасир этүүчү веб колдонмолордо
  • Коопсуздуктун кеңейиши — көз карандылыкты камтыган өлүк код дагы эле ошол пакеттердеги алсыздыктар үчүн вектор болуп саналат
  • Test Suite bloat мында өчүрүлгөн функциялар үчүн сыноолор иштей берет, CI мүнөттөрүн талап кылат жана кээде баш аламан жолдор менен ийгиликсиз болуп калат
  • Жалган татаалдык сигналдарыархитектуралык чечимдерди кыйындатат, анткени эмне жүк көтөрө турганы жана эмнеси эскиргени түшүнүксүз

DevOps Research and Assessment (DORA) тобунун 2023-жылдагы изилдөөсү көрсөткөндөй, күчтүү коддун сапаты боюнча тажрыйбалары бар командалар, анын ичинде үзгүлтүксүз өлүк кодду алып салууну камтыган командалар 2,4 эсе көп жөнөтүлөт жана техникалык карыздын топтолушуна жол берген командаларга караганда 7 эсеге аз өзгөрүү ылдамдыгы болгон. Корреляция кокустук эмес. Таза код базалары жөнүндө ой жүгүртүү, текшерүү жана коопсуз өзгөртүү оңой.

Mewayz сыяктуу платформаларда курулган бизнес үчүн - бул CRM жана эмгек акыдан флотту башкарууга жана био-ин-био куралдарына чейинки 207 түрдүү бизнес модулдары боюнча 138 000 колдонуучуга ыйгарым укуктарды берет - код базасынын ден соолугу бир нече эсеге көбөйдү. Сиздин платформаңыз көптөгөн функционалдык домендерди камтыса, модулдардын ортосундагы интеграциялык бет абдан чоң. Негизги модулда колдонулбаган экспорттор көз каранды модулдар үчүн жалган күтүүлөрдү жаратышы мүмкүн, UI катмарында керексиз кайра көрсөтүүлөрдү жаратышы мүмкүн жана көз карандылык графигин татаалдаштырып, келечектеги өзгөрүүлөрдү кооптуу кылып коюшу мүмкүн.

Заманбап өнүгүү процесстерине көз карандылыктын анализин интеграциялоо

Rev-dep сыяктуу тез инструменттердин чыныгы күчү бул бир жолку тазалоо эмес — бул кадимки өнүгүү циклиңиздин бир бөлүгү катары үзгүлтүксүз талдоо жүргүзүү мүмкүнчүлүгү. Өлгөн кодду сканерлөө 4 мүнөттүн ордуна 4 секундду талап кылганда, сиз аны алдын ала жасалган илгичтериңизге кошо аласыз. 4 мүнөттүн ордуна 4 секунд талап кылынганда, CI түтүкчөңүз үнсүз топтолушуна жол бербей, жаңы пайдаланылбаган экспортторду киргизген тартуу өтүнүчүн аткарбай калышы мүмкүн.

💡 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 →

Бул "чейректик тазалоо иш-чарасынан" "үзгүлтүксүз сапат дарбазасына" өтүү, линтерлер IDEдеги ар бир баскыч басканда иштей тургандай тез болуп калгандагы окуяга окшош. ESLint реалдуу убакыт режиминде иштегенге чейин, код стили мезгил-мезгили менен кодду карап чыгуу аркылуу аткарылчу. Кийинчерээк, ал айлана-чөйрөгө айланды — кайра иштеп чыгуучулар кийин эмес, код жазып жатканда тажрыйбалуу болгон. Көз карандылыкты тез талдоо өлүк коддун айланасында чөйрөнүн сапаты боюнча бирдей басымды жаратышы мүмкүн.

Бул иш процессин орнотуу адатта үч компонентти камтыйт:

<ол>
  • Базалык анализ: Учурдагы өлүк коддун масштабын түшүнүү үчүн куралды учурдагы код базасына каршы иштетиңиз. Баарын дароо оңдоого аракет кылбаңыз — модулдар боюнча бөлүштүрүңүз жана тобокелдикке жараша артыкчылык бериңиз.
  • CI аткаруу: Босого менен талдоо түтүгүңүзгө кошуңуз — жаңы киргизилген пайдаланылбаган экспорттордо ийгиликсиздикке учураңыз, бирок аларды тазаламайынча, учурдагы экспорттоодо иштебей калбаңыз.
  • Тазалоонун пландаштырылган спринттери: Убакыттын өтүшү менен команданын ден соолук көрсөткүчү катары өлүк коддорго көз салып, үзгүлтүксүз тазалоо иштерин жетектөө үчүн куралдын натыйжасын колдонуңуз.
  • SaaS куруучулар үчүн Go Tooling Renaissance сигналдары кандай

    Rev-dep - иштеп чыгуучулардын шаймандарынын кеңири моделинин бир бөлүгү: Go же Rust ичинде орнотулган белгиленген JavaScript куралдарына жогорку натыйжалуу альтернативалар ар бир категорияда пайда болот. Biome көптөгөн командалар үчүн ESLint жана Prettierди алмаштырды. Turbopack жана Rspack Webpackтин түшкү тамагын жеп жатышат. Bun Node.jsтин өзүнө каршы чыгууда. Жалпы нерсе бул инструменттер жөн гана кошумча жакшыртууну сунуштабастан, алар практикалык нерсени өзгөрткөн кадамдык функцияларды жакшыртууну сунуштайт.

    Татаал, көп модулдуу өнүмдөрдү куруп жаткан SaaS компаниялары үчүн бул шаймандык кайра жаралуу инженердик ылдамдыкка түздөн-түз таасирин тийгизет. Mewayzдин 207 модулдук архитектурасы – HR жана эмгек акыдан баштап брондоо тутумдарына жана аналитика панелдерине чейин бардыгын камтыган – көз карандылыкты тез жана так талдоо операциялык жактан маанилүү болуп калган чоң, өз ара байланышкан код базасын билдирет. Бөлүштүрүлгөн пайдалуу модулга өзгөртүү теориялык жактан ондогон функция модулдарынан өтүшү мүмкүн болгондо, чыныгы көз карандылык графигин заматта көрүү ыңгайлуу эмес, бул кымбат өндүрүштүк инциденттерди алдын алган инфраструктуранын түрү.

    "Бул функцияны чындыгында эмне колдонот" деген суроого беш мүнөттө эмес, беш секунддун ичинде жооп берүү мүмкүнчүлүгү инженерлердин чечим кабыл алуу ыкмасын өзгөртөт. Бул тергөөнүн баасын төмөндөтөт, демек, инженерлер тез-тез изилдеп, жакшыраак чечим чыгарышат. Бул уюмдар иштеп чыгуучулардын өндүрүмдүүлүгүнө сарптоолорду ойлогондо көп учурда көз жаздымда кала турган тез инструменттерге болгон инвестициянын кошумча кайтарымы.

    Өлгөн кодду жок кылууну инженердик маданиятыңыздын бир бөлүгүнө айлантуу

    Технология гана таза коддук базаларды түзбөйт - маданият түзөт. Rev-dep сыяктуу куралдар мүмкүнчүлүктөрдү камсыз кылат, бирок бул мүмкүнчүлүктү ырааттуу практикага айландыруу уюштуруучулук милдеттенмени талап кылат. Эң эффективдүү командалар өлүк коддун көрсөткүчтөрүн тестти камтыгандай эле карашат: инженердик жолугушууларда каралып, спринттик пландоодо эсепке алынуучу код базасынын ден соолугунун көзгө көрүнгөн индикатору катары.

    Жакшы иштеген кээ бир белгилүү маданий практикалар "кодду өчүрүү күндөрүн" белгилөөнү камтыйт — мезгил-мезгили менен иш-чаралар, анда ачык максат кодду кошуунун ордуна алып салуу. Netlify муну жок кылынган желе линияларына көз салган лидер такталарын иштетүү менен атактуу ойноду. Stripe алардын кодду өчүрүүнү өзгөчөлүктөр менен бирдей болгон биринчи класстагы инженердик салым катары кароо практикасы жөнүндө ачык жазган. Талап кылынган ой жүгүртүүнүн өзгөрүшү эң жакшы код бул жок код экенин моюнга алуу: Сиз жазбаган ар бир сап - бул сиз эч качан сактабай, сынап, мүчүлүштүктөрдү таап же жаңы жумушка түшүндүрүп бербешиңиз керек болгон сап.

    Татаал бизнес операцияларын башкарган продукт компаниялары үчүн, инженериядан тышкары параллелдүүлүк бирдей эле үйрөтөт. Коддук базаларды ден соолугун чың кылган тартип - үзгүлтүксүз текшерүүлөр, так ээлик кылуу, эч ким колдонбогон нерселерди жок кылуу - бизнес процесстерин да ден-соолукка пайдалуу кылат. Mewayzсыяктуу платформалар бизнеске ушундай оперативдүү ачыктыкты берүү үчүн так курулган: кайсы куралдар колдонулуп жатканы, кайсы иш процесстери баалуулуктарды жаратып жатканы жана уюштуруу өлүк салмагы кайда топтолуп жаткандыгы жөнүндө бирдиктүү көрүнүш. Колдонулбаган программалык камсыздоону экспорттоо же пайдаланылбаган бизнес процесстерин текшерип жатасызбы, негизги дисциплина бирдей.

    Куралдар тезирээк болуп баратат, кайтарым байланыштар күчөп баратат жана бүгүнкү күндө код базасынын гигиеналык инфраструктурасына инвестиция салган командалар бир нече жылдар бою дивиденддерди төлөй турган кошумча артыкчылыктарды куруп жатышат. Rev-dep жана анын Go-powered иштеп чыгуучу куралдарынын когорты жөн гана кызыктуу эталондор эмес, алар программалык камсыздоонун туруктуу ылдамдыгын мүмкүн кылган инфраструктура катмары. Итерациянын ылдамдыгы программалык камсыздоо бизнеси үчүн негизги атаандаштык артыкчылык болгон дүйнөдө, бул перифериялык тынчсыздануу эмес. Бул бүтүндөй оюн.

    Көп берилүүчү суроолор

    Рев-деп эмнеси менен knip.devге караганда ылдамыраак кылат?

    Rev-dep Go-до курулган, компиляцияланган тутумдардын тили параллелдүүлүк жана чийки аткаруу ылдамдыгы үчүн оптималдаштырылган, ал эми knip.dev Node.js'те иштейт. Бул архитектуралык айырма Rev-depге көз карандылык графиктерин талдап, өлүк кодду 20 эсе тезирээк аныктоого мүмкүндүк берет. Чоң монорепостор же татаал код базалары үчүн, мисалы, Mewayzдин app.mewayz.com дарегиндеги бизнес ОСту иштеткен 207 модулдук архитектурасы үчүн, бул аткаруу айырмачылыгы ар бир CI иштетилгенде сакталган реалдуу убакытка которулат.

    Кадимки өсүп жаткан долбоордо канча өлүк код топтолот?

    Изилдөөлөр жана инженердик топтордун анекдоттук отчеттору жетилген коддук базалар 10% дан 35% га чейин колдонулбаган же жеткиликсиз кодду алып жүрөрүн көрсөтүп турат. Көйгөй командалардын масштабында татаалдашат — функциялар эскирип, API'лер өзгөрүп, модулдар тазаланбай эле ташталат. 207ден ашык бизнес модулдарын айына 19 доллар турган бирдиктүү операциялык тутумга бириктирген Mewayz сыяктуу платформалар код базасын арык жана туруктуу сактоо үчүн системалуу өлүк кодду аныктоого таянышат.

    Rev-dep JavaScript же TypeScript колдонбогон командалар үчүн ылайыктуубу?

    Rev-dep учурда JavaScript жана TypeScript экосистемаларына багытталган, бул аны ошол чөйрөлөр үчүн knip.devге түз альтернатива кылат. Долбоор жетилген сайын кошумча тилдерди колдоо кеңейиши мүмкүн. Эгерде сиздин командаңыз веб-негизделген өнүмдөрдү же SaaS куралдарын түзсө - Mewayz өзүнүн толук бизнес OS'сун app.mewayz.com дарегинде жеткиргендей - жана сиздин стекиңиз JS/TS-heavy болсо, Rev-dep бүгүнкү күндө иштеп чыгуучунун куралдар тизмегиңиздин бир бөлүгү катары баалоого арзыйт.

    Мен Rev-depди учурдагы CI/CD конвейериме киргизе аламбы?

    Ооба. Rev-dep CLI куралы катары иштелип чыккан, бул сиздин учурдагы линтинг жана тестирлөө кадамдары менен катар каалаган CI/CD түтүгүнө түшүүнү оңой кылат. Анын ылдамдыгы өзгөчө автоматташтырылган трубопроводдордо баалуу, анда тезирээк кайтарым байланыш циклдери иштеп чыгуучунун күтүү убактысын кыскартат. Жеңил стартап иштетип жатасызбы же Mewayz's $19/ай бизнес OS сыяктуу толук функциялуу платформаны башкарып жатасызбы, өлүк код анализин түтүккө киргизүү ар бир бириктирилгенде код базасынын гигиенасын сактоого жардам берет.

    .

    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