Ricerca nel sito web

ShellCheck: uno strumento che mostra avvisi e suggerimenti per gli script di shell


ShellCheck è uno strumento di analisi statica che mostra avvisi e suggerimenti riguardanti codice errato negli script di shell bash/sh. Può essere utilizzato in diversi modi: dal web incollando lo script della shell in un editor online (Ace – un editor di codice autonomo scritto in JavaScript) in https://www.shellcheck.net (è sempre sincronizzato con l'ultima versione git commit ed è il modo più semplice per provare ShellCheck) per un feedback immediato.

In alternativa, puoi installarlo sul tuo computer ed eseguirlo dal terminale, integrarlo con il tuo editor di testo e nelle tue suite di build o test.

Ci sono tre cose che ShellCheck fa principalmente:

  • Sottolinea e spiega i tipici problemi di sintassi dei principianti che fanno sì che una shell fornisca messaggi di errore criptici.
  • Sottolinea e spiega i tipici problemi semantici di livello intermedio che causano un comportamento strano e controintuitivo di una shell.
  • Sottolinea inoltre sottili avvertenze, casi limite e insidie che potrebbero causare il fallimento dello script altrimenti funzionante di un utente avanzato in circostanze future.

In questo articolo mostreremo come installare e utilizzare ShellCheck nei vari modi per trovare bug o codice errato negli script della shell in Linux.

Come installare e utilizzare ShellCheck in Linux

ShellCheck può essere facilmente installato localmente tramite il gestore pacchetti, come mostrato.

Su Debian/Ubuntu

apt-get install shellcheck

Su RHEL/CentOS

yum -y install epel-release
yum install ShellCheck

Su Fedora

dnf install ShellCheck

Una volta installato ShellCheck, diamo un'occhiata a come utilizzare ShellCheck nei vari metodi menzionati prima.

Utilizzo di ShellCheck dal Web

Vai su https://www.shellcheck.net e incolla il tuo script nell'editor Ace fornito, visualizzerai l'output nella parte inferiore dell'editor come mostrato nella schermata qui sotto.

Nell'esempio seguente, lo script della shell di test è costituito dalle seguenti righe:

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

Dallo screenshot qui sopra, le prime due variabili E_NOTROOT e E_MINARGS sono state dichiarate ma non sono utilizzate, ShellCheck le segnala come “errori suggestivi”:

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

In secondo luogo, è stato utilizzato il nome sbagliato (nell'istruzione echo $E_NONROOT) per echo la variabile E_NOTROOT, ecco perché ShellCheck mostra l'errore:

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

Ancora una volta, quando guardi i comandi echo, le variabili non sono state virgolette doppie (aiuta a prevenire il globbing e la suddivisione delle parole), quindi Shell Check mostra l'avviso:

SC2086: Double quote to prevent globbing and word splitting.

Utilizzo di ShellCheck dal terminale

Puoi anche eseguire ShellCheck dalla riga di comando, utilizzeremo lo stesso script di shell sopra come segue:

shellcheck test.sh

Utilizzo di ShellCheck dall'editor di testo

Puoi anche visualizzare suggerimenti e avvisi di ShellCheck direttamente in una varietà di editor, questo è probabilmente un modo più efficiente di utilizzare ShellCheck, una volta salvato un file, mostra eventuali errori nel codice.

In Vim, usa ALE o Syntastic (useremo questo):

Inizia installando Pathogen in modo che sia facile installare syntastic. Esegui i comandi seguenti per ottenere il file pathogen.vim e le directory di cui ha bisogno:

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

Quindi aggiungi questo al tuo file ~/.vimrc:

execute pathogen#infect()

Una volta installato Agent, puoi inserire syntastic in ~/.vim/bundle come segue:

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

Successivamente, chiudi vim e riavvialo per ricaricarlo, quindi digita il comando seguente:

:Helptags

Se tutto va bene, dovresti avere ShellCheck integrato con Vim, i seguenti screenshot mostrano come funziona utilizzando lo stesso script sopra.

Se ricevi un errore dopo aver seguito i passaggi precedenti, è possibile che tu non abbia installato Pathogen correttamente. Ripeti i passaggi ma assicurati di aver fatto quanto segue:

  • Create entrambe le directory ~/.vim/autoload e ~/.vim/bundle.
  • Aggiunta la riga esegui patogeno#infect() al tuo file ~/.vimrc.
  • Il clone git di syntastic all'interno di ~/.vim/bundle.
  • Utilizzare le autorizzazioni appropriate per accedere a tutte le directory di cui sopra.

Puoi anche utilizzare altri editor per controllare il codice errato negli script di shell come:

  • In Emacs, usa Flycheck.
  • In Sublime, utilizza SublimeLinter.
  • In Atom, usa Linter.
  • Nella maggior parte degli altri editor, utilizza la compatibilità degli errori GCC.

Nota: utilizza la galleria di codici errati per eseguire ulteriori ShellChecking.

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

Questo è tutto! In questo articolo, abbiamo mostrato come installare e utilizzare ShellCheck per trovare bug o codice errato negli script della shell in Linux. Condividi i tuoi pensieri con noi tramite la sezione commenti qui sotto.

Conoscete altri strumenti simili là fuori? Se sì, condividi anche le informazioni su di loro nei commenti.