Hacker News

Coccinelle: Sesebelisoa sa ho fetola mohloli ho ea mohloling oa Linux kernel

Maikutlo

9 min read Via github.com

Mewayz Team

Editorial Team

Hacker News

Coccinelle: Sesebediswa sa Phetoho sa Mohlodi ho ya Mohloding sa Linux Kernel

Coccinelle ke sesebelisoa se matla sa ho fetola mohloli ho ea mohloling qalong se etselitsoe ho iketsetsa liphetoho tse kholo ho Linux kernel codebase. E sebelisa puo e ikhethileng e bitsoang SmPL (Semantic Patch Language) ho hlahisa mekhoa ea khoutu le liphetoho, e nolofalletsa bahlahisi ho fumana le ho lokisa liphoso, ho ntlafatsa li-API tse sa sebetseng, le ho fetola limilione tsa mela ea C ka ho nepahala ha ho buuoa.

Coccinelle ke Eng mme Hobaneng ha Linux Kernel e e Hloka?

Linux kernel ke e 'ngoe ea merero e meholo ka ho fetesisa ea software nalaneng, e nang le mela e fetang limilione tse 30 ea likhoutu e kentsoeng ke bahlahisi ba likete. Ha API ea ka hare e fetoha kapa mokhoa oa bug o hlahang khafetsa, ho nchafatsa faele e 'ngoe le e' ngoe e amehang ha se ntho e tenang feela - ho ke ke ha khoneha ntle le ho hlahisa liphoso tse ncha. Sena ke sona hantle bothata boo Coccinelle e etselitsoeng ho bo rarolla.

E thehiloe ke bafuputsi ba Inria le Univesithi ea Copenhagen, Coccinelle e lumella bahlokomeli ba kernel ho ngola li-patches tsa semantic - melao e khuts'oane e hlalosang mokhoa oa bobeli oa khoutu ho bapisa le phetoho e lokelang ho sebelisoa. Ho fapana le mokhoa oa ho batla le ho nkela sebaka kapa mantsoe a tloaelehileng, Coccinelle o utloisisa mantsoe a C le semantics. E ka tsamaisana le khoutu ho sa tsotelehe sebaka se sesoeu, mabitso a feto-fetohang, kapa phapang e nyane ea sebopeho, e etsa hore e tšepahale haholo bakeng sa refactoring e kholo ea automated.

Ho tloha ha e qala, Coccinelle e bile le boikarabello ba likete-kete tsa boitlamo ho Linux kernel, 'me ho kopanngoa ha eona ho nts'etsopele ea kernel ho entse hore e be karolo ea bohlokoa ea tikoloho.

SmPL (Semantic Patch Language) e Sebetsa Joang?

Bohareng ba Coccinelle ke SmPL, mongolo o kang oa patch o lumellang bahlahisi ho hlahisa liphetoho ka tsela e utloahalang. Patch ea semantic e shebahala e ts'oana le diff e kopaneng, e sebelisa - ho tšoaea khoutu e lokelang ho tlosoa le + ho bontša hore na e lokela ho nkeloa sebaka ke eng. Leha ho le joalo, SmPL e sebetsa ka mokhoa o hlakileng oa sefate sa syntax ho e-na le ho latela mongolo o tala.

Ka mohlala, haeba kernel e nyenyefatsa tshebetso e kang kmalloc e tsamaisanang le memset molemong wa kzalloc, mohlahisi a ka ngola molao o mokgutshwane wa SmPL o tsamaellanang le mohlala o mong le o mong wa paterone ya kgale ho pholletsa le codebase kaofela mme a e nkele sebaka ka boyona. Molao o ikarabella bakeng sa ho fapana ho ea ka tatellano ea likhang, mefuta ea litšupiso, le moelelo o potolohileng taba - ntho eo ho se nang polelo e tloaelehileng e ka sebetsang ka nepo.

"Coccinelle ha e fumane feela mongolo o tsamaisanang le mongolo - e utloisisa sebopeho sa khoutu. Tlhokomeliso ena ea semantic ke eona e e etsang hore e khone ho etsa liphetoho melaleng e limilione ea khoutu ntle le ho hlahisa maemo, e leng mosebetsi o e arohanyang le sesebelisoa se seng le se seng sa ho fumana le ho nkela sebaka."

SmPL e boetse e ts'ehetsa li-metavariables, tse sebetsang joalo ka li-wildcards tse ka ts'oanang le polelo efe kapa efe, sekhetho, kapa mofuta ofe kapa ofe. Sena se etsa hore melao e sebelisoe hape haholo 'me e ikamahanye le lipaterone tse hlahang ka mefuta e fapaneng hanyane ho pholletsa le codebase.

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

Ke Maemo Afe a Tloaelehileng a Tšebeliso ea Coccinelle?

Ho feto-fetoha ha Coccinelle ho feta ho falla ha API. Bahlahisi ba kernel le bahlokomeli ba itšetlehile ka eona bakeng sa mesebetsi e mengata e fapaneng e ka jang nako e ngata le tlhokomelo.

  • API evolution: Ha mesaeno ea tšebetso e fetoha kapa li-wrappers li hlahisoa, Coccinelle e ka nchafatsa sebaka se seng le se seng sa mehala ka bo eona, ho netefatsa ts'ebetso e ts'oanang ho litsamaiso tse nyane.
  • Ho lemoha liphoso: Melao ea SmPL e ka tsebahatsa mekhoa ea litšitšili tse hlahang khafetsa joalo ka ho haella ha li- null checks, ho tšoara liphoso tse fosahetseng, maemo a ho se sebelise ka mor'a moo, le ho lutla ha lisebelisoa.
  • Ho ntlafatsoa ha likhoutu: Ha maemo a likhoutu a ntse a fetoha, Coccinelle e thusa ho fallisetsa mekhoa ea khale ho ea ho mekhoa ea sejoale-joale, mohlala, ho nkela lilopi tse pitikolohang ka letsoho ka li-macro tse tloaelehileng.
  • Liphetoho tsa konteraka: Ha sebopeho sa pokello ea libuka kapa sa mokhanni se fetoha, khoutu eohle e itšetlehileng e tlameha ho ikamahanya le maemo. Coccinelle e sebetsana le "liphetoho tsena tse kopanetsoeng" ka ho phatlalatsa liphetoho ho bareki bohle ba tlase.
  • Tlhahiso ea setaele: Ntle le liphetoho tsa ts'ebetso, Coccinelle e ka tiisa melaoana e ts'oanang ea likhoutu, ea fokotsa lerata litlhahlobong tsa khoutu le ho ntlafatsa ho baloa ka kakaretso.

Sefate sa mohloli oa kernel ea Linux se bile se romella scripts/coccinelle/ directory e nang le melao e seng e entsoe ea SmPL eo baetsi ba eona ba ka e tsamaisang ho lekola likarolo tsa bona pele ba e romella.

Na Coccinelle e ka Sebelisoa Kantle ho Linux Kernel?

Leha Coccinelle a hlahile ho nts'etsopele ea kernel ea Linux, ho hang ha e felle ho eona. C codebase efe kapa efe - firmware e kenelletseng ea sistimi, lits'ebetso tsa sebaka sa basebelisi, likarolo tsa sistimi e sebetsang - e ka rua molemo ho bokhoni ba phetoho ea Coccinelle. Merero e kang Veine, OpenSSL, le kabo e fapaneng ea BSD e e amohetse bakeng sa ts'ebetso ea bona ea tlhokomelo.

Sesebediswa sena hape se sebetsa e le motheo bakeng sa dipatlisiso tsa thuto mabapi le ho iphetola ha disoftware, tokiso ya mananeo a itirisang, le tshekatsheko e tsitsitseng. Bokhoni ba eona ba ho hlahisa mekhoa e rarahaneng ea likhoutu ka mokhoa o baloang, o hlakileng o e etsa sesebelisoa se setle sa ho ruta ho utloisisa hore na lisebelisoa tse kholo tsa software li fetoha joang ha nako e ntse e ea.

Bakeng sa lihlopha tse laolang li-codebases tsa C, Coccinelle e ka fokotsa haholo litšenyehelo le kotsi ea boiteko ba ho ntlafatsa. Sebakeng sa ho abela lienjiniere ho hlahloba le ho nchafatsa lifaele tse likete, patch e le 'ngoe e entsoeng hantle ea semantic e ka etsa mosebetsi o tšoanang ka metsotso e nepahetseng haholoanyane.

Lipotso Tse Botsoang Hangata

Na Coccinelle e na le thuso bakeng sa lenaneo la C feela?

Coccinelle e etselitsoe C ka ho khetheha 'me e sebetsa hantle ka ho fetisisa ka C codebases. Ho bile le katoloso ea liteko le merero ea lipatlisiso e hlahlobang tšehetso bakeng sa lipuo tse ling, empa sesebelisoa se lokiselitsoeng tlhahiso se tsepamisitse maikutlo ho C. Bakeng sa lihlopha tse sebetsanang le litsamaiso tse thehiloeng ho C - ho tloha ho lisebelisoa tse kentsoeng ho isa lits'ebetsong tsa ts'ebetso - e ntse e le sesebelisoa se sebetsang ka ho fetisisa sa phetoho e ikemetseng e fumanehang.

Coccinelle e bapisoa joang le lisebelisoa tse kang sed, awk, kapa codemod?

Lisebelisoa tsa khale tsa ho fetolela mongolo li sebetsa ka likhoele ntle le ho utloisisa sebopeho sa khoutu. Ha ba khone ho khetholla pakeng tsa lebitso le feto-fetohang le tlhaloso e nang le taba e ngotsoeng e tšoanang, leha e le hore ba ka ikarabella bakeng sa ho fapana ha syntactic mabapi le hore na moelelo o tšoanang o hlalosoa joang. Coccinelle e fetisa khoutu ea 'nete ea C 'me e sebetsa sefateng sa eona sa syntax, ho bolelang hore e fana ka lintlha tse fokolang haholo 'me ha ho mohla e hlahisang tlhahiso e robehileng ho tsoa molaong o ngotsoeng ka nepo.

Na ba qalang ba ka ithuta ho sebelisa Coccinelle ka katleho?

E, leha ho na le mokhoa oa ho ithuta. Puo ea SmPL e etselitsoe ka boomo ho tšoana le li-diffs tse kopaneng, tseo bahlahisi ba bangata ba seng ba ntse ba tseba ho li bala. Litokomane tsa Coccinelle li fana ka mehlala e mengata ho tloha ho liphetoho tse bonolo ho ea ho tse rarahaneng tsa melao e mengata. Batho ba bangata ba sa tsoa fihla ba qala ka ho ithuta melao e teng bukeng ea scripts/coccinelle/ ea Linux kernel le ho e fetola ho latela litlhoko tsa bona.

Eketsa Ts'ebetso ea Hao ea Khoebo

Joalo ka ha Coccinelle e iketsetsa liphetoho tse rarahaneng ho pholletsa le li-codebases tse kholo, sethala se nepahetseng sa khoebo se tsamaisa tšebetso e rarahaneng ho pholletsa le mokhatlo oohle oa hau. Mewayz e tlisa li-module tse 207 tse kopaneng - ho tloha taolong ea projeke le CRM ho isa ho li-invoice le HR - ho sistimi e le 'ngoe ea ts'ebetso bakeng sa khoebo ea hau. Sebakeng sa ho kopanya lisebelisoa tse ngata tse khaotsoeng, u fumana sethala se le seng se kopaneng se tšeptjoang ke basebelisi ba fetang 138,000. Merero e qala ho $19 feela ka khoeli. Qala ho leka mahala ho app.mewayz.com 'me u utloe hore na ho bolela'ng ho tsamaisa khoebo ea hau ka boiketsetso.

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