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 skriptama ljuske. Može se koristiti na nekoliko načina: s weba lijepljenjem vaše shell skripte u mrežni uređivač (Ace – samostalni uređivač koda napisan u JavaScriptu) na https://www.shellcheck.net (uvijek je sinkroniziran na najnoviji git commit, i to je najjednostavniji način da se ShellCheck pokrene) za trenutnu povratnu informaciju.

Alternativno, možete ga instalirati na svoje računalo i pokrenuti s terminala, integrirati ga sa svojim uređivačem teksta kao i u svojim paketima za izradu ili testiranje.

Tri su stvari koje ShellCheck prvenstveno radi:

  • Ističe i objašnjava tipične sintaksne probleme za početnike koji uzrokuju da ljuska daje zagonetne poruke o pogrešci.
  • Ističe i objašnjava tipične semantičke probleme srednje razine koji uzrokuju čudno i protuintuitivno ponašanje ljuske.
  • Također ukazuje na suptilna upozorenja, slučajeve u kutu i zamke koje mogu uzrokovati kvar skripte naprednog korisnika koja inače radi u budućim okolnostima.

U ovom ćemo članku pokazati kako instalirati i koristiti ShellCheck na različite načine za pronalaženje grešaka ili lošeg koda u vašim skriptama ljuske u Linuxu.

Kako instalirati i koristiti ShellCheck u Linuxu

ShellCheck može se lako instalirati lokalno putem vašeg upravitelja paketima 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

Nakon što instalirate ShellCheck, pogledajmo kako koristiti ShellCheck na različite metode koje smo prije spomenuli.

Korištenje ShellChecka s weba

Idite na https://www.shellcheck.net i zalijepite svoju skriptu u priloženi Ace editor, vidjet ćete izlaz na dnu uređivača kao što je prikazano na snimci zaslona u nastavku.

U sljedećem primjeru testna skripta 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;

Na gornjoj snimci zaslona, prve dvije varijable E_NOTROOT i E_MINARGS su deklarirane, ali se ne koriste, ShellCheck ih prijavljuje kao "sugestivne pogreške":

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

Drugo, krivo ime (u izjavi echo $E_NONROOT) korišteno je za echo varijablu E_NOTROOT, zbog čega ShellCheck prikazuje pogrešku:

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

Ponovno kada pogledate echo naredbe, varijable nisu dvostruke navodnike (pomaže u sprječavanju globbinga i dijeljenja riječi), stoga Shell Check prikazuje upozorenje:

SC2086: Double quote to prevent globbing and word splitting.

Korištenje ShellChecka iz terminala

Također možete pokrenuti ShellCheck iz naredbenog retka, mi ćemo koristiti istu skriptu ljuske iznad kako slijedi:

shellcheck test.sh

Korištenje ShellChecka iz uređivača teksta

Također možete vidjeti ShellCheck prijedloge i upozorenja izravno u raznim uređivačima, ovo je vjerojatno učinkovitiji način korištenja ShellChecka, nakon što spremite datoteke, prikazuje vam sve pogreške u kodu.

U Vim-u koristite ALE ili Syntastic (mi ćemo koristiti ovo):

Započnite instaliranjem Pathogen kako biste mogli jednostavno instalirati syntastic. Izvedite donje naredbe da biste dobili datoteku pathogen.vim i direktorije koji su joj potrebni:

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

Zatim dodajte ovo svojoj ~/.vimrc datoteci:

execute pathogen#infect()

Nakon što ste instalirali patogen, sada možete staviti sintastiku 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 ponovno ga pokrenite da biste ga ponovno učitali, zatim upišite naredbu u nastavku:

:Helptags

Ako je sve u redu, trebali biste imati ShellCheck integriran s Vimom, sljedeće snimke zaslona pokazuju kako radi pomoću iste skripte iznad.

U slučaju da dobijete pogrešku nakon što ste slijedili gore navedene korake, moguće je da niste pravilno instalirali Pathogen. Ponovite korake, ali time provjerite jeste li učinili sljedeće:

  • Stvoreni direktoriji ~/.vim/autoload i ~/.vim/bundle.
  • Dodan je redak za izvršavanje patogena#infect() vašoj ~/.vimrc datoteci.
  • Je li git klon sintastike unutar ~/.vim/bundle.
  • Koristite odgovarajuće dozvole za pristup svim gore navedenim imenicima.

Također možete koristiti druge uređivače za provjeru lošeg koda u skriptama ljuske kao što su:

  • U Emacsu koristite Flycheck.
  • U Sublimeu koristite SublimeLinter.
  • U Atomu koristite Linter.
  • U većini drugih uređivača koristite GCC kompatibilnost s pogreškama.

Napomena: Koristite galeriju lošeg koda za provođenje više ShellCheckinga.

ShellCheck Github Repozitorij: https://github.com/koalaman/shellcheck

To je to! U ovom smo članku pokazali kako instalirati i koristiti ShellCheck za pronalaženje grešaka ili lošeg koda u vašim skriptama ljuske u Linuxu. Podijelite svoje misli s nama putem odjeljka za komentare u nastavku.

Znate li za neke druge slične alate? Ako da, podijelite i informacije o njima u komentarima.