ShellCheck 0.9 on saatavilla, staattinen analysaattori shell-skripteille

ShellCheck 0.9 -projektin julkaisu on julkaistu, ja se kehittää shell-skriptien staattisen analyysin järjestelmän, joka tukee komentosarjojen virheiden tunnistamista ottaen huomioon bashin, sh:n, ksh:n ja dash:n ominaisuudet. Projektikoodi on kirjoitettu Haskellilla ja jaettu GPLv3-lisenssillä. Komponentit toimitetaan integroitaviksi Vimin, Emacsin, VSCoden, Sublimen, Atomin ja erilaisten GCC-yhteensopivien virheraportointia tukevien puitteiden kanssa.

ShellCheck 0.9 on saatavilla, staattinen analysaattori shell-skripteille

Se tukee sekä koodin syntaksivirheiden tunnistamista, jotka johtavat siihen, että tulkki näyttää virheen suoritushetkellä, että semanttisia ongelmia, joiden vuoksi suoritus ei keskeydy, mutta skriptin käyttäytymisessä ilmenee poikkeavuuksia. Analysaattori voi myös tunnistaa pullonkauloja, ei-ilmeisiä ongelmia ja sudenkuoppia, jotka voivat tietyissä olosuhteissa johtaa häiriöihin.

Havaittujen virheiden luokkien joukossa voidaan havaita ongelmia erikoismerkkien pakottamisen ja lainausmerkein kehyksen kanssa, virheitä ehdollisissa lausekkeissa, virheellistä komentojen käyttöä, ongelmia ajan ja päivämäärän käsittelyssä sekä tyypillisiä syntaksivirheitä aloittelijoille. Esimerkiksi välilyöntien puuttuminen verrattaessa arvoa "[[ $foo==0 ]]", välilyöntien esiintyminen "var = 42" tai $-symbolin osoittaminen määritettäessä "$foo=42", muuttujien käyttö ilman lainausmerkkejä "echo $1", ylimääräisten hakasulkeiden osoitus "tr -cd '[a-zA-Z0-9]'",

Lisäksi se tukee suositusten antamista koodityylin parantamiseksi, siirrettävyysongelmien poistamiseksi ja komentosarjojen luotettavuuden lisäämiseksi. Esimerkiksi sanan "echo $[1+2]" sijaan ehdotetaan käytettäväksi syntaksia "$((..))", rakenne "rm -rf "$STEAMROOT/"*' merkitään vaaralliseksi. ja pystyy poistamaan juurihakemiston, jos muuttujaa ei ole täytetty $STEAMROOT, ja "echo {1..10}":n käyttö korostetaan yhteensopimattomaksi dash ja sh kanssa.

Uudessa versiossa:

  • Lisätty varoitus ilmauksille, kuten "paikallinen vain luku foo".
  • Lisätty varoitus käyttämättömistä komennoista.
  • Lisätty varoitus käänteisistä linkeistä 'declare x=1 y=$x'.
  • Lisätty varoitus jos $? käytetään echo-, printf-, [ ]-, [[]]- ja test-paluukoodien tulostamiseen.
  • Lisätty suositus poistaa ((..))inarray[((idx))]=val.
  • Lisätty suositus kaksoissulkujen ketjuttamisesta aritmeettisissa yhteyksissä.
  • Lisätty suositus sulkeiden poistamiseksi lausekkeesta a[(x+1)]=val.

Lähde: opennet.ru

Lisää kommentti