ShellCheck 0.9 inowanikwa, static analyzer ye shell scripts

Kuburitswa kweiyo ShellCheck 0.9 purojekiti yakadhindwa, ichigadzira sisitimu yekuongorora kwakamira kwezvinyorwa zvegomba zvinotsigira kuona zvikanganiso muzvinyorwa zvichifunga nezve ma bash, sh, ksh uye dash. Iyo kodhi kodhi yakanyorwa muHaskell uye yakagoverwa pasi peGPLv3 rezinesi. Zvikamu zvinopihwa kuti zvibatanidzwe neVim, Emacs, VSCode, Sublime, Atom, uye akasiyana masisitimu anotsigira GCC-inoenderana kukanganisa kushuma.

ShellCheck 0.9 inowanikwa, static analyzer ye shell scripts

Inotsigira kuzivisa zvikanganiso zvesyntax mukodhi, izvo zvinoita kuti muturikiri aratidze kukanganisa panguva yekuuraya, uye matambudziko e semantic, nekuda kwekuti kuuraya hakukanganiswe, asi kusakanganiswa kwemaitiro echinyorwa kunoitika. Iyo analyzer inogona zvakare kuona mabhodhoro, zvisiri pachena matambudziko uye misungo inogona kutungamira mukukundikana mune mamwe mamiriro.

Pakati pemakirasi ezvikanganiso zvakaonekwa, tinogona kuona matambudziko nekupukunyuka mavara akakosha uye nekuagadzira mumakotesheni, zvikanganiso muzvirevo zvemimiriro, kushandisa zvisirizvo kwemirairo, matambudziko ekugadzirisa nguva nemazuva, uye akajairwa syntax kukanganisa kune vanotanga. Semuenzaniso, kusavapo kwenzvimbo pakuenzanisa β€œ[[ $foo==0 ]]”, kuvapo kwenzvimbo β€œvar = 42” kana chiratidzo chechiratidzo che$ pakupa β€œ$foo=42”, kushandiswa kwezvakasiyana. pasina makotesheni "echo $1", chiratidzo chekuwedzera masikweya mabhuraketi mu "tr -cd '[a-zA-Z0-9]'",

Pamusoro pezvo, inotsigira kuburitswa kwemazano ekuvandudza kodhi maitiro, kubvisa matambudziko ekutakurika, uye kuwedzera kuvimbika kwezvinyorwa. Semuyenzaniso, pachinzvimbo che "echo $[1+2]" ichanzi ishandise syntax "$((..))", chivakwa 'rm -rf "$STEAMROOT/"*' chichamakwa sechisina kuchengetedzeka. uye inokwanisa kudzima dhairekitori remidzi kana shanduko isina kuzadzwa $STEAMROOT, uye kushandiswa kwe "echo {1..10}" kucharatidzwa sekusingaenderane nedash uye sh.

Mushanduro itsva:

  • Yakawedzera yambiro yemashoko akaita se 'local readonly foo'.
  • Yakawedzerwa yambiro pamusoro pemirairo isingawanikwe.
  • Yakawedzera yambiro nezve backlinks ku 'declare x=1 y=$x'.
  • Yakawedzerwa yambiro kana $? yakashandiswa kudhinda kodhi yekudzoka ye echo, printf, [], [[]] uye test.
  • Yakawedzerwa kurudziro yekubvisa ((..))inarray[((idx))]]=val.
  • Yakawedzera kurudziro yekubatanidza maparentheses maviri mune arithmetic mamiriro.
  • Yakawedzera kurudziro yekubvisa maparentheses muchirevo a[(x+1)]=val.

Source: opennet.ru

Voeg