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.