ShellCheck - Un instrument care afișează avertismente și sugestii pentru scripturile Shell


ShellCheck este un instrument de analiză statică care afișează avertismente și sugestii privind codul defectuos în scripturile shell bash/sh. Poate fi folosit în mai multe moduri: de pe web prin lipirea scriptului shell într-un editor online (Ace – un editor de cod autonom scris în JavaScript) în https://www.shellcheck.net (este întotdeauna sincronizat cu cel mai recent git). commit și este cel mai simplu mod de a încerca ShellCheck) pentru feedback instantaneu.

Alternativ, îl puteți instala pe computer și îl puteți rula de pe terminal, îl puteți integra cu editorul dvs. de text, precum și în suitele dvs. de compilare sau de testare.

Există trei lucruri pe care ShellCheck le face în primul rând:

  • Subliniază și explică problemele de sintaxă tipice ale începătorilor care determină ca un shell să dea mesaje de eroare criptice.
  • Subliniază și explică problemele semantice tipice de nivel intermediar care fac ca un shell să se comporte ciudat și contra-intuitiv.
  • De asemenea, evidențiază avertismente subtile, cazuri de colț și capcane care pot duce la eșecul unui script de lucru al unui utilizator avansat în circumstanțe viitoare.

În acest articol, vom arăta cum să instalați și să utilizați ShellCheck în diferite moduri de a găsi erori sau coduri greșite în scripturile dumneavoastră shell în Linux.

Cum se instalează și se utilizează ShellCheck în Linux

ShellCheck poate fi instalat cu ușurință local prin managerul de pachete, așa cum se arată.

Pe Debian/Ubuntu

apt-get install shellcheck

Pe RHEL/CentOS

yum -y install epel-release
yum install ShellCheck

Pe Fedora

dnf install ShellCheck

Odată instalat ShellCheck, să aruncăm o privire la modul de utilizare a ShellCheck în diferitele metode pe care le-am menționat anterior.

Utilizarea ShellCheck de pe web

Accesați https://www.shellcheck.net și inserați scriptul în editorul Ace furnizat, veți vedea rezultatul în partea de jos a editorului, așa cum se arată în captura de ecran de mai jos.

În exemplul următor, scriptul shell de testare este format din următoarele linii:

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

Din captura de ecran de mai sus, primele două variabile E_NOTROOT și E_MINARGS au fost declarate, dar nu sunt utilizate, ShellCheck le raportează ca „erori sugestive”:

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

Apoi, în al doilea rând, numele greșit (în instrucțiunea echo $E_NONROOT) a fost folosit pentru a echo variabila E_NOTROOT, de aceea ShellCheck arată eroarea:

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

Din nou, când te uiți la comenzile echo, variabilele nu au fost ghilimele duble (ajută la prevenirea divizării globurilor și a cuvintelor), prin urmare Shell Check arată avertismentul:

SC2086: Double quote to prevent globbing and word splitting.

Folosind ShellCheck din terminal

De asemenea, puteți rula ShellCheck din linia de comandă, vom folosi același script shell de mai sus, după cum urmează:

shellcheck test.sh

Folosind ShellCheck din Editorul de text

De asemenea, puteți vizualiza sugestii și avertismente ShellCheck direct într-o varietate de editoare, acesta este probabil o modalitate mai eficientă de a utiliza ShellCheck, odată ce salvați un fișier, vă arată orice erori în cod.

În Vim, folosiți ALE sau Syntastic (vom folosi asta):

Începeți prin a instala Pathogen, astfel încât să fie ușor de instalat sintastic. Rulați comenzile de mai jos pentru a obține fișierul pathogen.vim și directoarele de care are nevoie:

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

Apoi adăugați acest lucru în fișierul dvs. ~/.vimrc:

execute pathogen#infect()

Odată ce ați instalat agentul patogen și acum puteți pune sinteza în ~/.vim/bundle după cum urmează:

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

Apoi, închideți vim și porniți-l înapoi pentru a-l reîncărca, apoi tastați comanda de mai jos:

:Helptags

Dacă totul merge bine, ar trebui să aveți ShellCheck integrat cu Vim, următoarele capturi de ecran arată cum funcționează folosind același script de mai sus.

În cazul în care obțineți o eroare după ce ați urmat pașii de mai sus, este posibil să nu ați instalat corect Pathogen. Repetați pașii, dar asigurați-vă că ați făcut următoarele:

  • Am creat atât directoarele ~/.vim/autoload, cât și ~/.vim/bundle.
  • S-a adăugat linia execute pathogen#infect() în fișierul dvs. ~/.vimrc.
  • A făcut clona git de sintastic în ~/.vim/bundle.
  • Utilizați permisiunile corespunzătoare pentru a accesa toate directoarele de mai sus.

De asemenea, puteți utiliza alte editori pentru a verifica codul necorespunzător în scripturile shell, cum ar fi:

  • În Emacs, utilizați Flycheck.
  • În Sublime, folosiți SublimeLinter.
  • În Atom, folosiți Linter.
  • În majoritatea celorlalți editori, utilizați compatibilitatea cu erorile GCC.

Notă: utilizați galeria de coduri greșite pentru a efectua mai multe ShellChecking.

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

Asta este! În acest articol, am arătat cum să instalați și să utilizați ShellCheck pentru a găsi erori sau coduri greșite în scripturile dvs. shell în Linux. Împărtășiți-vă gândurile cu noi prin secțiunea de comentarii de mai jos.

Cunoașteți și alte instrumente similare? Dacă da, atunci împărtășește informații despre ei și în comentarii.