Hacker News

Coccinelle: Linux kernel ka fɛnɲɛnɛma-yɔrɔ-ko-yɔrɔ-ko-minɛn

Kow fɔcogo

12 min read Via github.com

Mewayz Team

Editorial Team

Hacker News

Coccinelle : Linux Kernel ka sɛnɛfɛnw jiginni baarakɛminɛn

Coccinelle ye fɛn barikama ye min bɛ se ka fɛn caman sɛmɛntiya, min dabɔra a daminɛ na walasa ka fɛnba caman sɛmɛntiya Linux kernel codebase kɔnɔ. A bɛ baara kɛ ni kan kɛrɛnkɛrɛnnen ye min bɛ wele ko SmPL (Semantic Patch Language) walasa ka kode misaliw ni fɛn caman tigɛli jira, o bɛ kɛ sababu ye ka baarakɛlaw dɛmɛ u ka se ka buguw sɔrɔ ani k’u labɛn, ka API kɔrɔlenw kuraya, ani ka C kode layini miliyɔn caman labɛn kokura ni opereli tigitigi ye.

Coccinelle ye mun ye ani mun na Linux kernel mago bɛ a la ?

Linux kernel ye jɛkafɔ porozɛw porozɛba dɔ ye tariku kɔnɔ, a kɔnɔ, kode layini miliyɔn 30 ni kɔ bɛ sɔrɔ min kɔnɔ, baarakɛla ba caman ye minnu dɛmɛ. Ni kɔnɔna API dɔ b’a la ka Changé walima ni bug pattern dɔ sɔrɔla min bɛ segin-ka-bɔ, ka bololabaara kɛ ka file o file min tɔɔrɔla, o tɛ sɛgɛn dɔrɔn ye — a bɛ se ka kɛ ko a tɛ se ka kɛ ni fili kura ma don a kɔnɔ. nin ye gɛlɛya ye tigitigi Coccinelle jɔra ka ɲɛnabɔ.

Inria ni Kɔpɛnhagɛni Iniwɛrisite ɲininikɛlaw ye a labɛn, Coccinelle bɛ sira di kernel ladonbagaw ma u ka semantiki patɔrɔnw sɛbɛn — sariya kunkurunnin minnu bɛ kode misali ɲɛfɔ ka bɛn ani fɛn caman tigɛli ka waleya. Coccinelle tɛ i n’a fɔ sɛbɛnni gansan ɲinini-ni-yɔrɔ-ko walima kumasen kɔrɔw, a bɛ C kɔrɔɲɔgɔnmaya ni kɔrɔko faamuya. A bɛ se ka bɛn kode ma, yɔrɔ finman, tɔgɔdacogo caman, walima danfara misɛnninw jɔcogo mana kɛ min o min ye, o b’a to a bɛ se ka da a kan kosɛbɛ otomatiki refactoring belebelebaw la.

Kabini a daminɛ na, Coccinelle ye komiti ba caman ɲɛnabɔ Linux kernel kɔnɔ, wa a donli kernel yiriwali baarakɛcogo la, o y’a kɛ ekosisɛti yɔrɔ ye min nafa ka bon kosɛbɛ.

SmPL (Semantic Patch Language) bɛ baara kɛ cogo di ?

Coccinelle dusukun na, SmPL bɛ yen, o ye sɛbɛnni ye min bɛ i n’a fɔ patɔrɔn, min b’a to baarakɛlaw bɛ fɛn caman tigɛli jira cogo la min bɛ kɛ i n’a fɔ u bɛ dɔn. Kɔrɔɲɔgɔnmaya patɔrɔn bɛ i n’a fɔ danfara kelen, a bɛ baara kɛ ni - ye walasa ka kode taamasiyɛn min ka kan ka bɔ ani + walasa k’a jira min ka kan ka bila a nɔ na. Nka, SmPL bɛ baara Kɛ daɲɛgafe-jiri-yɔrɔ la min tɛ fɛn ye sanni ka Kɛ sɛbɛnni raw kan.

Misali la, ni kernel ye baarakɛcogo dɔ tiɲɛ i n’a fɔ kmalloc min faralen don ɲɔgɔn kan ni memset ye kzalloc nɔfɛ, baarakɛla bɛ se ka SmPL sariya surun dɔ sɛbɛn min bɛ bɛn misali kɔrɔ in misali bɛɛ ma kodebase bɛɛ kɔnɔ, k’a bila a nɔ na a yɛrɛma. Sariya bɛ jatebɔ kɛ fɛn caman ɲɔgɔnna ye sɔsɔli sigicogo la, taamasiyɛn suguyaw, ani lamini kɔnɔkow — fɛn min fɔcogo kɔrɔlen si tun tɛ se ka min ɲɛnabɔ ni dannaya ye.

ye

"Coccinelle tɛ sɛbɛnniw bɛnkanw sɔrɔ dɔrɔn — a bɛ kode sigicogo faamuya. O kɔrɔko dɔnniya in de b'a to a bɛ se ka fɛn caman tigɛli kɛ kode sinsinni miliyɔn caman kɔnɔ k'a sɔrɔ a ma kɔseginw don a kɔnɔ, o ye wale ye min b'a faranfasi ka bɔ ɲinini-ni-segin-minɛn caman na."

ye

SmPL fana bɛ metavariables dɛmɛ, minnu bɛ kɛ i n’a fɔ kungo kɔnɔ minnu bɛ se ka bɛn fɔcogo, dantigɛli walima suguya bɛɛ ma. O b’a to sariyaw bɛ se ka baara kɛ kokura kosɛbɛ ani minnu bɛ se ka ladamu misaliw la minnu bɛ bɔ cogoya wɛrɛw la dɔɔnin kodebase bɛɛ kɔnɔ.

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

Kɔsinɛli tali ka teli ka kɛ mun ye ?

Coccinelle ka baarakɛcogo caman bɛ tɛmɛn API jiginni nɔgɔman kan kosɛbɛ. Kɛrɛn dilannikɛlaw ni a ladonbagaw b’u jigi da a kan baara caman kama minnu tun bɛna waati ni jateminɛ camanba ta.

  • API jiginni : Ni baarakɛcogo bolonɔbilaw b’a la ka Changé walima ni wrappers donna , Coccinelle bɛ se ka weleli yɔrɔ bɛɛ kuraya a yɛrɛma , ka bɛnkan sabati sigida fitininw bɛɛ kɔnɔ .
  • Bugw dɔnni : SmPL sariyaw bɛ se ka bugw cogoyaw jira minnu bɛ segin-ka-bɔ i n’a fɔ nul sɛgɛsɛgɛliw tununen, filiw ɲɛnabɔcogo jugu, baarakɛcogo-ko-kɔrɔ-ko cogoyaw, ani nafolo bɔli.
  • Kode biɲɛdimi : Ni kodɔn sariyaw bɛ ka yiriwa , Coccinelle bɛ dɛmɛ don ka ciyɛn misaliw wuli ka taa bi ɲɔgɔndanw na — misali la , ka bololabaarakɛminɛnw wulilenw bila makɔrɔw nɔ na minnu bɛ sariya kɔnɔ .
  • Kolatɛri jiginniw : ni gafemarayɔrɔ walima bolifɛntigi dɔ b’a jira ko fɛn dɔ b’a la ka Changé , kode min bɛ tali kɛ a la , o bɛɛ ka kan ka ladamu . Coccinelle bɛ nin "collateral evolutions" ninnu ɲɛnabɔ ni fɛn caman caman cili ye ka ɲɛsin jiginɛ kɔnɔ feerekɛla bɛɛ ma.
  • Stacogo labatoli : baarakɛcogo caman caman cili kɔfɛ , Coccinelle bɛ se ka kodɔn bɛnkanw labato minnu bɛ bɛn ɲɔgɔn ma , ka mankan dɔgɔya kode lajɛw la ani ka kalan bɛɛ lajɛlen ɲɛ .

Linux kernel source tree yɛrɛ bɛ scripts/coccinelle/ ɲɛbilasɛbɛn kɛrɛnkɛrɛnnen dɔ ci min kɔnɔ SmPL sariya labɛnnenw bɛ sɔrɔ min kɔnɔ, baarakɛlaw bɛ se ka minnu boli walasa k’u ka patɔrɔnw lajɛ sani u ka ci.

Yala Coccinelle bɛ se ka baara kɛ ni Linux Kernel kɔkan wa ?

k'a sɔrɔ Coccinelle bangera ka bɔ Linux kernel yiriwali la , a dan tɛ o dɔrɔn na cogo si la . C codebase o base — embedded systems firmware, user-space applications, operating system components — bɛ se ka nafa sɔrɔ Coccinelle ka fɛn caman tigɛli sekow la. Porozɛ minnu bɛ i n’a fɔ Wine, OpenSSL, ani BSD tilali suguya caman y’a ta u yɛrɛ ka ladonni baarakɛcogo kama.

Baarakɛminɛn in fana bɛ kɛ kalanko ɲinini jusigilan ye porozɛw sɛgɛsɛgɛli la, porogaramuw dilancogo otomatiki la, ani sɛgɛsɛgɛli jɔlen na. A ka se ka kode misali gɛlɛnw jira cogo la min bɛ se ka kalan, min bɛ fɔ, o b’a kɛ kalankɛminɛn ɲuman ye walasa ka porogaramuw sigicogo belebelebaw bɛ wuli cogo min na waati kɔnɔ, olu faamuya.

Ekipu minnu bɛ C kodebasi kɔrɔw ɲɛnabɔ , Coccinelle bɛ se ka dɔ bɔ kosɛbɛ musaka ni farati la biɲɛdimi cɛsiriw la . Sani u ka injiniyɛriw bila u ka bololabaara kɛ ka dosiye ba caman sɛgɛsɛgɛ ani k’u kuraya, kɔrɔko siratigɛ la, fɛn kelen min dilannen don koɲuman, o bɛ se ka o baara kelen in kɛ miniti damadɔ kɔnɔ ni tiɲɛni ye min ka bon kosɛbɛ.

Ɲininkali minnu bɛ kɛ tuma caman na

Yala Coccinelle nafa ka bon C porogaramuw dɔrɔn de la wa ?

Coccinelle dabɔra kɛrɛnkɛrɛnnenya la C kama wa a bɛ baara kɛ ka ɲɛ ni C kodebasew ye. Kɔrɔbɔli caman kɛra ka ɲɛsin kan wɛrɛw ma, nka baarakɛminɛn min labɛnnen don ka baara kɛ, o sinsinnen bɛ C kan. Jɛkulu minnu bɛ baara kɛ ni C-based systems ye — k’a ta minɛnw kɔnɔ minnu bɛ don a kɔnɔ ka se baarakɛminɛnw ma — a tora otomatiki fɛn caman tigɛli baarakɛminɛn ye min bɛ se ka kɛ.

Coccinelle bɛ se ka suma cogo di ni baarakɛminɛnw ye i n' a fɔ sed , awk , walima codemod ?

Laada sɛbɛnni-baarakɛminɛnw bɛ baara kɛ sɛrɛw kan k'a sɔrɔ u ma kodɔn sigicogo faamuya. U tɛ se ka danfara don fɛn caman bɛrɛbɛrɛ tɔgɔ ni kumasen min kɔnɔ sɛbɛnni kelen bɛ yen, wa u tɛ se fana ka kɔrɔɲɔgɔnmaya caman fɔ hakilina kelen fɔcogo la. Coccinelle bɛ C kode lakika lajɛ ani ka baara kɛ a ka daɲɛgafe-jiri abstrait kan, o kɔrɔ ye ko a bɛ nkalon pozitifw lase minnu ka dɔgɔ kosɛbɛ, wa a tɛ bɔli tiɲɛnenw bɔ abada sintasi siratigɛ la ka bɔ sariya sɛbɛnnen ɲuman na.

yala daminɛbagaw bɛ se ka baara kɛcogo ɲuman dege Coccinelle la wa ?

Ɔwɔ , hali ni kalansen dɔ bɛ yen . SmPL kan in Dabɔra ni laɲini ye walasa a ka Kɛ i n’a fɔ diffs kelen-kelenw, minnu dabɔbaa fanba bɛ minnu kalanni Dɔn kaban. Coccinelle sɛbɛnw bɛ misali caman di k’a ta fɛn caman tigɛli nɔgɔmanw na ka se sariya caman sɛbɛnni gɛlɛnw ma. Mɔgɔ kura caman bɛ daminɛ ni sariya kɔrɔw kalanni ye Linux kernel ka scripts/coccinelle/ ɲɛbilasɛbɛn kɔnɔ ani k’u bɛrɛbɛn u yɛrɛ magow ma.

A' ye aw yɛrɛ ka jagokow ɲɛnabɔ

I n’a fɔ Coccinelle bɛ fɛn caman tigɛli kɛ otomatiki la cogo min na kodɔnba kɔnɔ, jagokɛyɔrɔ ɲuman bɛ baarakɛcogo gɛlɛnw kɛ otomatiki ye i ka jɛkulu bɛɛ kɔnɔ. Mewayz bɛ na ni modulu 207 ye minnu bɛ ɲɔgɔn kan — k’a ta porozɛw ɲɛnabɔli la ani CRM la ka se faturaw ni HR ma — ka kɛ baarakɛminɛn kelen ye i ka jago kama. Sani i ka baarakɛminɛn tan ni caman siri ɲɔgɔn na minnu ni ɲɔgɔn cɛ tiɲɛna, i bɛ plateforme kelen sɔrɔ min dalen bɛ a la baarakɛla 138 000 ni kɔ fɛ. Labɛnw bɛ daminɛ $19/kalo dɔrɔn na. I ka kɔrɔbɔli fu daminɛ app.mewayz.com ani k’a dɔn i ka jago kɔrɔ ye min ye otopiloti kan.