ShellCheck - työkalu, joka näyttää varoituksia ja ehdotuksia Shell-skripteistä


ShellCheck on staattinen analyysityökalu, joka näyttää varoituksia ja ehdotuksia huonosta koodista bash/sh shell-skripteissä. Sitä voidaan käyttää useilla tavoilla: verkosta liittämällä komentosarjasi online-editoriin (Ace – JavaScriptillä kirjoitettu erillinen koodieditori) osoitteessa https://www.shellcheck.net (se synkronoidaan aina uusimpaan gitiin sitoutua, ja se on yksinkertaisin tapa antaa ShellCheckille välitöntä palautetta.

Vaihtoehtoisesti voit asentaa sen koneellesi ja ajaa sitä päätteestä, integroida sen tekstieditoriin sekä koonti- tai testipaketteihin.

ShellCheck tekee ensisijaisesti kolme asiaa:

  • Se osoittaa ja selittää tyypillisiä aloittelijan syntaksiongelmia, jotka saavat kuoren antamaan salaperäisiä virheilmoituksia.
  • Se osoittaa ja selittää tyypillisiä keskitason semanttisia ongelmia, jotka saavat kuoren käyttäytymään oudosti ja vasta-intuitiivisesti.
  • Se korostaa myös hienovaraisia varoituksia, kulmakoteloita ja sudenkuoppia, jotka voivat aiheuttaa kokeneen käyttäjän muuten toimivan skriptin epäonnistumisen tulevissa olosuhteissa.

Tässä artikkelissa näytämme, kuinka ShellCheck asennetaan ja sitä käytetään eri tavoilla löytääksesi vikoja tai huonoa koodia komentotulkkikomentosarjoistasi Linuxissa.

Kuinka asentaa ja käyttää ShellCheckiä Linuxissa

ShellCheck voidaan asentaa helposti paikallisesti paketinhallinnan kautta kuvan osoittamalla tavalla.

Debianissa/Ubuntussa

apt-get install shellcheck

RHEL/CentOS:ssä

yum -y install epel-release
yum install ShellCheck

Fedorassa

dnf install ShellCheck

Kun ShellCheck on asennettu, katsotaanpa, kuinka ShellCheckiä käytetään aiemmin mainitsemissamme menetelmissä.

ShellCheckin käyttäminen verkosta

Siirry osoitteeseen https://www.shellcheck.net ja liitä skriptisi toimitettuun Ace-editoriin. Näet tulosteen editorin alareunassa alla olevan kuvakaappauksen mukaisesti.

Seuraavassa esimerkissä testikuoren komentosarja koostuu seuraavista riveistä:

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

Yllä olevasta kuvakaappauksesta kaksi ensimmäistä muuttujaa E_NOTROOT ja E_MINARGS on ilmoitettu, mutta niitä ei käytetä. ShellCheck raportoi nämä "viittaaviksi virheiksi":

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

Toiseksi, väärää nimeä (käskyssä echo $E_NONROOT) käytettiin echo-muuttujaan E_NOTROOT, minkä vuoksi ShellCheck näyttää virheen:

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

Jälleen kun katsot echo-komentoja, muuttujia ei ole lainattu kaksoislainausmerkkeinä (auttaa estämään globbing ja sanan jakaminen), joten Shell Check näyttää varoituksen:

SC2086: Double quote to prevent globbing and word splitting.

ShellCheckin käyttäminen terminaalista

Voit myös suorittaa ShellCheckin komentoriviltä, käytämme samaa yllä olevaa komentotulkkikomentosarjaa seuraavasti:

shellcheck test.sh

ShellCheckin käyttäminen tekstieditorista

Voit myös tarkastella ShellCheck -ehdotuksia ja -varoituksia suoraan useissa muokkausohjelmissa. Tämä on luultavasti tehokkaampi tapa käyttää ShellCheckiä. Kun olet tallentanut tiedostot, se näyttää koodin virheet.

Käytä Vimissä ALE:tä tai Syntasticia (käytämme tätä):

Aloita asentamalla Pathogen, jotta se on helppo asentaa syntastic. Suorita alla olevat komennot saadaksesi pathogen.vim-tiedoston ja sen tarvitsemat hakemistot:

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

Lisää sitten tämä ~/.vimrc-tiedostoosi:

execute pathogen#infect()

Kun olet asentanut patogeenin ja voit nyt lisätä syntastiikan tiedostoon ~/.vim/bundle seuraavasti:

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

Sulje seuraavaksi vim ja käynnistä se uudelleen ladataksesi sen uudelleen, ja kirjoita sitten alla oleva komento:

:Helptags

Jos kaikki menee hyvin, ShellCheckin pitäisi olla integroitu Vimiin. Seuraavat kuvakaappaukset osoittavat, kuinka se toimii käyttämällä samaa yllä olevaa komentosarjaa.

Jos saat virheilmoituksen yllä olevien vaiheiden noudattamisen jälkeen, et mahdollisesti asentanut Pathogen-ohjelmaa oikein. Toista vaiheet, mutta varmista, että teit seuraavat asiat:

  • Loi sekä ~/.vim/autoload- että ~/.vim/bundle-hakemistot.
  • Suorita patogen#infect() -rivi lisätty ~/.vimrc-tiedostoosi.
  • Onko git-klooni syntastic sisällä ~/.vim/bundle.
  • Käytä asianmukaisia käyttöoikeuksia päästäksesi kaikkiin yllä oleviin hakemistoihin.

Voit myös käyttää muita muokkausohjelmia tarkistaaksesi virheellisen koodin shell-skripteistä, kuten:

  • Käytä Emacsissa Flycheckiä.
  • Käytä Sublimessa SublimeLinteriä.
  • Käytä Atomissa Linteriä.
  • Useimmissa muissa muokkausohjelmissa käytetään GCC-virheyhteensopivuutta.

Huomaa: käytä huonon koodin galleriaa suorittaaksesi lisää ShellCheckingiä.

ShellCheck Githubin arkisto: https://github.com/koalaman/shellcheck

Se siitä! Tässä artikkelissa osoitimme, kuinka ShellCheck asennetaan ja käytetään virheiden tai huonon koodin löytämiseen komentotulkkikomentosarjasta Linuxissa. Jaa ajatuksesi kanssamme alla olevan kommenttiosion kautta.

Tiedätkö muita vastaavia työkaluja? Jos kyllä, niin jaa tietoja myös kommenteissa.