Weboldal keresés

ShellCheck – Egy eszköz, amely figyelmeztetéseket és javaslatokat jelenít meg a Shell-szkriptekhez


A ShellCheck egy statikus elemző eszköz, amely figyelmeztetéseket és javaslatokat jelenít meg a bash/sh shell szkriptekben található rossz kóddal kapcsolatban. Többféleképpen használható: az internetről úgy, hogy beilleszti a shell szkriptjét egy online szerkesztőbe (Ace – egy JavaScriptben írt önálló kódszerkesztő) a https://www.shellcheck.net webhelyen (mindig szinkronizálva van a legújabb gittel commit, és ez a legegyszerűbb módja a ShellCheck kipróbálásának) azonnali visszajelzésért.

Alternatív megoldásként telepítheti a gépére, és futtathatja a terminálról, integrálhatja a szövegszerkesztőbe, valamint a build- vagy tesztcsomagjaiba.

A ShellCheck elsősorban három dolgot tesz:

  • Rámutat és elmagyarázza azokat a tipikus kezdő szintaktikai problémákat, amelyek miatt a shell rejtélyes hibaüzeneteket ad.
  • Rámutat és elmagyarázza azokat a tipikus középszintű szemantikai problémákat, amelyek miatt a shell furcsán és intuitív módon viselkedik.
  • Felhívja a figyelmet azokra a finom figyelmeztetésekre, a sarkalatos esetekre és a buktatókra is, amelyek a jövőbeni körülmények között meghiúsíthatják a haladó felhasználók egyébként működő szkriptjét.

Ebben a cikkben bemutatjuk, hogyan telepítheti és használhatja a ShellCheck-et különféle módokon, hogy hibákat vagy rossz kódot találjon a shell-szkriptekben Linux alatt.

A ShellCheck telepítése és használata Linuxban

A ShellCheck egyszerűen telepíthető helyileg a csomagkezelőn keresztül, az ábrán látható módon.

Debian/Ubuntu alatt

apt-get install shellcheck

RHEL/CentOS rendszeren

yum -y install epel-release
yum install ShellCheck

Fedorán

dnf install ShellCheck

A ShellCheck telepítése után vessünk egy pillantást a ShellCheck használatára a korábban említett különféle módszerekben.

A ShellCheck használata az internetről

Látogasson el a https://www.shellcheck.net oldalra, és illessze be a szkriptet a rendelkezésre álló Ace szerkesztőbe, és a kimenetet a szerkesztő alján tekintheti meg, az alábbi képernyőképen látható módon.

A következő példában a teszthéj-szkript a következő sorokból áll:

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

A fenti képernyőképen az első két változó, az E_NOTROOT és az E_MINARGS deklarálva, de használaton kívül vannak, a ShellCheck ezeket „suggesztív hibákként” jelenti:

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

Másodszor, rossz név (az echo $E_NONROOT utasításban) echo változó E_NOTROOT lett használva, ezért a ShellCheck hibát jelenít meg:

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

Ha ismét megnézzük az echo parancsokat, a változók nincsenek dupla idézőjelek között (segít megelőzni a gömbölyűséget és a szóhasadást), ezért a Shell Check figyelmeztetést jelenít meg:

SC2086: Double quote to prevent globbing and word splitting.

A ShellCheck használata a terminálból

A ShellCheck parancssorból is futtatható, a fenti shell-szkriptet használjuk a következők szerint:

shellcheck test.sh

A ShellCheck használata a szövegszerkesztőből

A ShellCheck javaslatokat és figyelmeztetéseket közvetlenül is megtekintheti számos szerkesztőben. Ez valószínűleg egy hatékonyabb módja a ShellCheck használatának, miután mentett egy fájlt, megmutatja a kódban lévő hibákat.

A Vim-ben használja az ALE-t vagy a Syntastic-ot (ezt fogjuk használni):

Kezdje a Pathogen telepítésével, hogy könnyen telepíthető legyen a szintatika. Futtassa az alábbi parancsokat a pathogen.vim fájl és a szükséges könyvtárak lekéréséhez:

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

Ezután adja hozzá ezt a ~/.vimrc fájlhoz:

execute pathogen#infect()

Miután telepítette a kórokozót, és most a következőképpen helyezheti el a szintasztikát a ~/.vim/bundle fájlba:

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

Ezután zárja be a vim-et, és indítsa újra az újratöltéshez, majd írja be az alábbi parancsot:

:Helptags

Ha minden jól megy, a ShellCheck-et integrálnia kell a Vim-be. A következő képernyőképek bemutatják, hogyan működik a fenti szkript használatával.

Ha a fenti lépések végrehajtása után hibaüzenetet kap, akkor valószínűleg nem megfelelően telepítette a Pathogen programot. Ismételje meg a lépéseket, de ezzel győződjön meg arról, hogy a következőket tette:

  • Létrehozta a ~/.vim/autoload és a ~/.vim/bundle könyvtárat is.
  • Hozzáadta a végrehajtó patogen#infect() sort a ~/.vimrc fájlhoz.
  • A szintastic git klónja a ~/.vim/bundle-en belül történt.
  • Használja a megfelelő engedélyeket a fenti könyvtárak eléréséhez.

Más szerkesztőkkel is ellenőrizheti a rossz kódot a shell szkriptekben, például:

  • Az Emacs rendszerben használja a Flycheck alkalmazást.
  • A Sublime-ban használja a SublimeLintert.
  • Az Atomban használja a Lintert.
  • A legtöbb más szerkesztőben használja a GCC hibakompatibilitást.

Megjegyzés: Használja a hibás kódok galériáját további ShellChecking végrehajtásához.

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

Ez az! Ebben a cikkben bemutattuk, hogyan kell telepíteni és használni a ShellCheck alkalmazást, amellyel hibákat vagy rossz kódot találhat a shell-szkriptekben Linux alatt. Ossza meg velünk gondolatait az alábbi megjegyzés részben.

Tudsz más hasonló eszközöket? Ha igen, akkor kommentben oszd meg róluk is az információkat.