ShellCheck - Alat koji prikazuje upozorenja i prijedloge za shell skripte
ShellCheck je alat za statičku analizu koji prikazuje upozorenja i prijedloge u vezi s lošim kodom u bash/sh shell skriptama. Može se koristiti na nekoliko načina: s weba lijepljenjem vaše shell skripte u online editor (Ace – samostalni uređivač koda napisan u JavaScript-u) na https://www.shellcheck.net (uvijek je sinkroniziran sa najnovijim git-om commit, i najjednostavniji je način da isprobate ShellCheck) za trenutne povratne informacije.
Alternativno, možete ga instalirati na svoju mašinu i pokrenuti sa terminala, integrisati ga sa svojim uređivačem teksta, kao iu vašim programskim ili testnim paketima.
Postoje tri stvari koje ShellCheck prvenstveno radi:
- Ukazuje i objašnjava tipične probleme sa sintaksom za početnike koji uzrokuju da ljuska daje kriptične poruke o grešci.
- Ukazuje i objašnjava tipične semantičke probleme srednjeg nivoa koji uzrokuju da se školjka ponaša čudno i kontraintuitivno.
- Također ukazuje na suptilna upozorenja, kutne slučajeve i zamke koje mogu uzrokovati da skripta naprednog korisnika, inače, ne funkcionira u budućim okolnostima.
U ovom članku ćemo pokazati kako instalirati i koristiti ShellCheck na različite načine za pronalaženje grešaka ili lošeg koda u vašim shell skriptama u Linuxu.
Kako instalirati i koristiti ShellCheck u Linuxu
ShellCheck se može lako instalirati lokalno preko vašeg upravitelja paketa kao što je prikazano.
Na Debian/Ubuntu
apt-get install shellcheck
Na RHEL/CentOS
yum -y install epel-release
yum install ShellCheck
Na Fedori
dnf install ShellCheck
Kada se ShellCheck instalira, pogledajmo kako koristiti ShellCheck u različitim metodama koje smo ranije spomenuli.
Korištenje ShellCheck-a s weba
Idite na https://www.shellcheck.net i zalijepite svoju skriptu u dostavljeni Ace editor, vidjet ćete izlaz na dnu uređivača kao što je prikazano na snimku ekrana ispod.
U sljedećem primjeru, skripta testne ljuske sastoji se od sljedećih redaka:
#!/bin/bash
#declare variables
MINARGS=2
E_NOTROOT=50
E_MINARGS=100
#echo values of variables
echo $MINARGS
echo $E_NONROOT
exit 0;
Sa gornje slike ekrana, prve dvije varijable E_NOTROOT i E_MINARGS su deklarirane, ali se ne koriste, ShellCheck ih prijavljuje kao "sugestivne greške":
SC2034: E_NOTROOT appears unused. Verify it or export it.
SC2034: E_MINARGS appears unused. Verify it or export it.
Zatim, drugo, pogrešno ime (u izjavi echo $E_NONROOT) je korišteno za echo varijablu E_NOTROOT, zbog čega ShellCheck pokazuje grešku:
SC2153: Possible misspelling: E_NONROOT may not be assigned, but E_NOTROOT is
Opet, kada pogledate echo komande, varijable nisu stavljene u duple navodnike (pomaže u sprečavanju globiranja i cijepanja riječi), stoga Shell Check prikazuje upozorenje:
SC2086: Double quote to prevent globbing and word splitting.
Korištenje ShellCheck-a sa terminala
Također možete pokrenuti ShellCheck iz komandne linije, mi ćemo koristiti istu shell skriptu iznad kako slijedi:
shellcheck test.sh
Korištenje ShellCheck-a iz uređivača teksta
Također možete vidjeti ShellCheck prijedloge i upozorenja direktno u raznim uređivačima, ovo je vjerovatno efikasniji način korištenja ShellChecka, kada jednom snimite fajlove, on vam pokazuje sve greške u kodu.
U Vimu koristite ALE ili Syntastic (koristit ćemo ovo):
Započnite instalacijom Pathogen tako da je lako instalirati sintastičku. Pokrenite naredbe u nastavku da dobijete datoteku pathogen.vim i direktorijume koji su joj potrebni:
mkdir -p ~/.vim/autoload ~/.vim/bundle && curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim
Zatim dodajte ovo u svoj ~/.vimrc fajl:
execute pathogen#infect()
Nakon što ste instalirali patogen, sada možete staviti sintasticu u ~/.vim/bundle na sljedeći način:
cd ~/.vim/bundle && git clone --depth=1 https://github.com/vim-syntastic/syntastic.git
Zatim zatvorite vim i pokrenite ga da ga ponovo učitate, a zatim upišite naredbu ispod:
:Helptags
Ako sve prođe kako treba, trebali biste imati ShellCheck integriran sa Vimom, sljedeći snimci ekrana pokazuju kako radi koristeći istu skriptu iznad.
U slučaju da dobijete grešku nakon što slijedite gore navedene korake, možda niste ispravno instalirali Pathogen. Ponovite korake, ali ovo osigurava da ste uradili sljedeće:
- Kreiran i ~/.vim/autoload i ~/.vim/bundle direktorij.
- Dodan je execute pathogen#infect() u vašu datoteku ~/.vimrc.
- Da li je git klon sintastičkog unutar ~/.vim/bundle.
- Koristite odgovarajuće dozvole za pristup svim gore navedenim direktorijima.
Također možete koristiti druge uređivače da provjerite loš kod u shell skriptama kao što su:
- U Emacsu koristite Flycheck.
- U Sublime-u koristite SublimeLinter.
- U Atomu koristite Linter.
- U većini drugih uređivača koristite kompatibilnost s GCC greškom.
Napomena: Koristite galeriju loših kodova da izvršite više ShellCheckinga.
ShellCheck Github spremište: https://github.com/koalaman/shellcheck
To je to! U ovom članku smo pokazali kako instalirati i koristiti ShellCheck za pronalaženje grešaka ili lošeg koda u vašim shell skriptama u Linuxu. Podijelite svoje misli s nama putem odjeljka za komentare ispod.
Znate li za neke druge slične alate? Ako jeste, podijelite i informacije o njima u komentarima.