Yra ShellCheck 0.9, statinis apvalkalo scenarijų analizatorius

Paskelbtas ShellCheck 0.9 projekto leidimas, kuriame sukurta statinės apvalkalo scenarijų analizės sistema, kuri palaiko scenarijų klaidų identifikavimą, atsižvelgiant į bash, sh, ksh ir dash ypatybes. Projekto kodas parašytas Haskell ir platinamas pagal GPLv3 licenciją. Pateikiami komponentai, skirti integruoti su Vim, Emacs, VSCode, Sublime, Atom ir įvairiomis sistemomis, kurios palaiko su GCC suderinamą klaidų ataskaitų teikimą.

Yra ShellCheck 0.9, statinis apvalkalo scenarijų analizatorius

Jis palaiko tiek sintaksės klaidų kode, dėl kurių vertėjas vykdymo metu rodo klaidą, tiek semantines problemas, dėl kurių vykdymas nenutrūksta, tačiau atsiranda scenarijaus veikimo anomalijų. Analizatorius taip pat gali nustatyti kliūtis, neakivaizdžias problemas ir spąstus, kurie tam tikromis aplinkybėmis gali sukelti gedimus.

Tarp aptiktų klaidų klasių galime pastebėti problemas, susijusias su specialiųjų simbolių pašalinimu ir jų įrėmimu į kabutes, sąlyginių reiškinių klaidas, neteisingą komandų naudojimą, laiko ir datų apdorojimo problemas ir įprastas sintaksės klaidas pradedantiesiems. Pavyzdžiui, tarpų nebuvimas lyginant „[[ $foo==0 ]]“, tarpų buvimas „var = 42“ arba simbolio $ nurodymas priskiriant „$foo=42“, kintamųjų naudojimas. be kabučių „echo $1“, papildomų laužtinių skliaustų nuoroda „tr -cd '[a-zA-Z0-9]'“,

Be to, jis palaiko rekomendacijų, kaip pagerinti kodo stilių, pašalinti perkeliamumo problemas ir padidinti scenarijų patikimumą, išvestį. Pavyzdžiui, vietoj „echo $[1+2]“ bus siūloma naudoti sintaksę „$((..))“, konstrukcija „rm -rf“ „$STEAMROOT/“*' bus pažymėta kaip nesaugi. ir gali ištrinti šakninį katalogą, jei kintamasis neužpildytas $STEAMROOT, o „echo {1..10}“ naudojimas bus paryškintas kaip nesuderinamas su dash ir sh.

Naujoje versijoje:

  • Pridėtas įspėjimas dėl tokių posakių kaip „vietinis tik skaitomas foo“.
  • Pridėtas įspėjimas apie nepasiekiamas komandas.
  • Pridėtas įspėjimas apie atgalines nuorodas į 'declare x=1 y=$x'.
  • Pridėtas įspėjimas, jei $? naudojamas echo, printf, [ ], [[ ]] ir testo grąžinimo kodui spausdinti.
  • Pridėta rekomendacija pašalinti ((..))inarray[((idx))]=val.
  • Pridėta rekomendacija dėl dvigubų skliaustų sujungimo aritmetiniuose kontekstuose.
  • Pridėta rekomendacija pašalinti skliaustus iš išraiškos a[(x+1)]=val.

Šaltinis: opennet.ru

Добавить комментарий