„ShellCheck“ - įrankis, rodantis „Shell“ scenarijų įspėjimus ir pasiūlymus


„ShellCheck“ yra statinės analizės įrankis, rodantis įspėjimus ir pasiūlymus dėl netinkamo kodo „bash/sh shell“ scenarijuose. Jį galima naudoti keliais būdais: iš žiniatinklio, įklijuojant apvalkalo scenarijų internetiniame redaktoriuje („Ace“ - autonominis kodo redaktorius, parašytas „JavaScript“), esančiame https://www.shellcheck.net (jis visada sinchronizuojamas su naujausia git versija). įsipareigoti ir yra paprasčiausias būdas suteikti „ShellCheck“ galimybę greitai gauti atsiliepimą.

Arba galite ją įdiegti savo kompiuteryje ir paleisti iš terminalo, integruoti į savo teksto rengyklę, taip pat į savo kūrimo ar bandymo rinkinius.

„ShellCheck“ pirmiausia daro tris dalykus:

  • Tai nurodo ir paaiškina tipines pradedančiųjų sintaksės problemas, dėl kurių apvalkalas pateikia kriptinius klaidų pranešimus.
  • Jame nurodomos ir paaiškinamos tipinės vidutinio lygio semantinės problemos, dėl kurių apvalkalas elgiasi keistai ir intuityviai.
  • Taip pat nurodomi subtilūs įspėjimai, kampiniai atvejai ir keblumai, dėl kurių pažengusio vartotojo kitaip dirbantis scenarijus ateityje gali sugesti.

Šiame straipsnyje mes parodysime, kaip įvairiais būdais įdiegti ir naudoti „ShellCheck“, kad rastumėte klaidų ar blogo kodo „Linux“ „shell“ scenarijuose.

Kaip įdiegti ir naudoti „ShellCheck“ sistemoje „Linux“

„ShellCheck“ galima lengvai įdiegti vietoje per paketų tvarkyklę, kaip parodyta.

# apt-get install shellcheck
# yum -y install epel-release
# yum install ShellCheck
# dnf install ShellCheck

Įdiegę „ShellCheck“, pažvelkime, kaip naudoti „ShellCheck“ įvairiais anksčiau minėtais būdais.

Eikite į https://www.shellcheck.net ir įklijuokite scenarijų į pateiktą „Ace“ redaktorių. Išvestį pamatysite redaktoriaus apačioje, kaip parodyta žemiau esančiame ekrano kadre.

Šiame pavyzdyje bandomojo apvalkalo scenarijų sudaro šios eilutės:

#!/bin/bash
#declare variables
MINARGS=2
E_NOTROOT=50
E_MINARGS=100
  
#echo values of variables 
echo $MINARGS
echo $E_NONROOT
exit 0;

Aukščiau pateiktoje ekrano kopijoje pirmieji du kintamieji E_NOTROOT ir E_MINARGS buvo paskelbti, tačiau jie nenaudojami. „ShellCheck“ praneša apie tai kaip „įtaigias klaidas“:

SC2034: E_NOTROOT appears unused. Verify it or export it.
SC2034: E_MINARGS appears unused. Verify it or export it. 

Antra, neteisingas pavadinimas (sakinyje echo $E_NONROOT) buvo naudojamas norint pakartoti kintamąjį E_NOTROOT, todėl „ShellCheck“ rodo klaidą:

SC2153: Possible misspelling: E_NONROOT may not be assigned, but E_NOTROOT is

Vėlgi, kai žiūrite į aido komandas, kintamieji nebuvo dvigubai cituojami (padeda išvengti suklydimo ir žodžių skaidymo), todėl „Shell Check“ rodo įspėjimą:

SC2086: Double quote to prevent globbing and word splitting.

Taip pat galite paleisti „ShellCheck“ iš komandinės eilutės, mes naudosime tą patį aukščiau pateiktą apvalkalo scenarijų taip:

$ shellcheck test.sh

Taip pat galite tiesiogiai peržiūrėti „ShellCheck“ pasiūlymus ir įspėjimus įvairiuose redaktoriuose. Tai tikriausiai yra efektyvesnis „ShellCheck“ naudojimo būdas. Išsaugojus failus, jame rodomos klaidos.

„Vim“ naudokite ALE arba „Syntastic“ (mes tai naudosime):

Pradėkite nuo „Pathogen“ diegimo, kad būtų lengva įdiegti sintaksę. Paleiskite toliau pateiktas komandas, kad gautumėte failą pathogen.vim ir jam reikalingus katalogus:

# mkdir -p ~/.vim/autoload ~/.vim/bundle && curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

Tada pridėkite tai prie savo ~/.vimrc failo:

execute pathogen#infect()

Įdiegę patogeną ir dabar sintaksę į ~/.vim/bundle galite įdėti taip:

# cd ~/.vim/bundle && git clone --depth=1 https://github.com/vim-syntastic/syntastic.git

Tada uždarykite „vim“ ir paleiskite jį atgal, kad jį perkeltumėte, tada įveskite žemiau esančią komandą:

:Helptags

Jei viskas gerai, turėtumėte turėti „ShellCheck“ integruotą su „Vim“, šie ekrano vaizdai rodo, kaip jis veikia naudojant tą patį scenarijų aukščiau.

Jei atlikę anksčiau nurodytus veiksmus gausite klaidą, galbūt netinkamai įdiegėte patogeną. Grąžinkite veiksmus, tačiau taip įsitikinsite, kad atlikote šiuos veiksmus:

  • Sukūrė katalogus ~/.vim/autoload ir ~/.vim/bundle.
  • Į failą ~/.vimrc pridėta vykdymo patogeno # infekcijos() eilutė.
  • Ar sintetinis gitas buvo klonas ~/.vim/paketo viduje.
  • Norėdami pasiekti visus anksčiau nurodytus katalogus, naudokite atitinkamus leidimus.

Taip pat galite naudoti kitus redaktorius, kad patikrintumėte netinkamą kodą „shell“ scenarijuose, pvz .:

  • „Emacs“ naudokite „Flycheck“.
  • „Sublime“ naudokite „SublimeLinter“.
  • „Atom“ naudokitės „Linter“.
  • Daugelyje kitų redaktorių naudokite GCC klaidų suderinamumą.

Pastaba: naudokite blogo kodo galeriją, kad atliktumėte daugiau „ShellChecking“.

„ShellCheck Github“ saugykla: https://github.com/koalaman/shellcheck

Viskas! Šiame straipsnyje mes parodėme, kaip įdiegti ir naudoti „ShellCheck“ norint rasti klaidų ar blogo kodo jūsų „Linux“ „shell“ scenarijuose. Pasidalykite savo mintimis su mumis naudodamiesi žemiau esančia komentarų skiltimi.

Ar žinote kokių nors kitų panašių įrankių? Jei taip, tada pasidalykite informacija apie juos ir komentaruose.