ShellCheck 0.9 eskuragarri dago, shell scriptetarako analizatzaile estatikoa

ShellCheck 0.9 proiektuaren oharra argitaratu da, bash, sh, ksh eta dash-en ezaugarriak kontuan hartuta scriptetan akatsak identifikatzea onartzen duen shell scripten analisi estatikorako sistema garatuz. Proiektuaren kodea Haskell-en idatzita dago eta GPLv3 lizentziapean banatzen da. Osagaiak Vim, Emacs, VSCode, Sublime, Atom eta GCC-rekin bateragarria den erroreen txostena onartzen duten hainbat esparrurekin integratzeko eskaintzen dira.

ShellCheck 0.9 eskuragarri dago, shell scriptetarako analizatzaile estatikoa

Kodean sintaxi-akatsak identifikatzea onartzen du, interpretatzaileak exekuzioan errore bat bistaratzea eragiten baitute, eta arazo semantikoak, exekuzioa eteten ez dena, baina scriptaren portaeran anomaliak gertatzen dira. Analizatzaileak egoera jakin batzuetan hutsegiteak ekar ditzaketen botilak, begi-bistakoak ez diren arazoak eta hutsuneak ere identifikatu ditzake.

Detektatu diren erroreen klaseen artean, karaktere berezietatik ihes egiteko eta komatxoen artean markotzeko arazoak, baldintzazko adierazpenetan akatsak, komandoen erabilera okerra, denbora eta datak prozesatzeko arazoak eta hasiberrientzako ohiko sintaxi-akatsak nabari ditzakegu. Adibidez, β€œ[[ $foo==0 ]] alderatzean zuriunerik ez izatea, β€œvar = 42” zuriuneak egotea edo $ ikurraren adieraztea β€œ$foo=42” esleitzean, aldagaien erabilera. komatxorik gabe "echo $1", kortxete gehigarrien adierazlea "tr -cd '[a-zA-Z0-9]'"-n,

Gainera, kode-estiloa hobetzeko, eramangarritasun-arazoak ezabatzeko eta scripten fidagarritasuna areagotzeko gomendioen irteera onartzen du. Adibidez, β€œecho $[1+2]”-ren ordez, β€œ$((..))” sintaxia erabiltzea proposatuko da, β€œrm -rf β€œ$STEAMROOT/”*' eraikuntza ez-seguru gisa markatuko da. eta erroko direktorioa ezabatzeko gai da aldagaia $STEAMROOT betetzen ez bada, eta "echo {1..10}" erabiltzea dash eta sh-ekin bateraezina dela nabarmenduko da.

Bertsio berrian:

  • 'Local readonly foo' bezalako esamoldeetarako abisua gehitu da.
  • Eskuragarri ez dauden komandoei buruzko abisua gehitu da.
  • Atzerako estekei buruzko abisua gehitu da 'deklaratu x=1 y=$x'.
  • Abisu gehitu da $ bada? echo, printf, [ ], [[ ]] eta test-en itzulera kodea inprimatzeko erabiltzen da.
  • ((..))inarray[((idx))]=val. kentzeko gomendioa gehitu da.
  • Testuinguru aritmetikoetan parentesi bikoitzak kateatzeko gomendio bat gehitu da.
  • a[(x+1)]=val esapidean parentesiak kentzeko gomendio bat gehitu da.

Iturria: opennet.ru

Gehitu iruzkin berria