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.