ShellCheck - Et verktøy som viser advarsler og forslag for Shell-skript


ShellCheck er et statisk analyseverktøy som viser advarsler og forslag angående dårlig kode i bash/sh shell-skript. Det kan brukes på flere måter: fra nettet ved å lime inn shell-scriptet ditt i en online editor (Ace – en frittstående koderedigerer skrevet i JavaScript) i https://www.shellcheck.net (det er alltid synkronisert til siste git forplikte seg, og er den enkleste måten å prøve ShellCheck på) for umiddelbar tilbakemelding.

Alternativt kan du installere den på maskinen din og kjøre den fra terminalen, integrere den med tekstredigereren din så vel som i bygge- eller testsuitene dine.

Det er tre ting ShellCheck primært gjør:

  • Den påpeker og forklarer typiske nybegynnersyntaksproblemer som får et skall til å gi kryptiske feilmeldinger.
  • Den påpeker og forklarer typiske semantiske problemer på middels nivå som får et skall til å oppføre seg merkelig og kontraintuitivt.
  • Den påpeker også subtile forbehold, hjørnesaker og fallgruver som kan føre til at en avansert brukers ellers fungerende skript mislykkes under fremtidige omstendigheter.

I denne artikkelen vil vi vise hvordan du installerer og bruker ShellCheck på forskjellige måter for å finne feil eller dårlig kode i skallskriptene dine i Linux.

Hvordan installere og bruke ShellCheck i Linux

ShellCheck kan enkelt installeres lokalt gjennom pakkebehandlingen som vist.

På Debian/Ubuntu

apt-get install shellcheck

På RHEL/CentOS

yum -y install epel-release
yum install ShellCheck

På Fedora

dnf install ShellCheck

Når ShellCheck er installert, la oss ta en titt på hvordan du bruker ShellCheck i de forskjellige metodene vi nevnte før.

Bruke ShellCheck fra nettet

Gå til https://www.shellcheck.net og lim inn skriptet i Ace-editoren som følger med, du vil se utdataene nederst i editoren som vist i skjermbildet nedenfor.

I det følgende eksempelet består testskallskriptet av følgende linjer:

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

Fra skjermbildet ovenfor er de to første variablene E_NOTROOT og E_MINARGS erklært, men er ubrukte, ShellCheck rapporterer disse som "suggestive feil":

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

For det andre ble feil navn (i setningen echo $E_NONROOT) brukt til å echo variabel E_NOTROOT, det er derfor ShellCheck viser feilen:

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

Igjen når du ser på ekko-kommandoene, har variablene ikke blitt anført i doble anførselstegn (hjelper med å forhindre globbing og orddeling), derfor viser Shell Check advarselen:

SC2086: Double quote to prevent globbing and word splitting.

Bruke ShellCheck fra terminalen

Du kan også kjøre ShellCheck fra kommandolinjen, vi bruker det samme shell-skriptet ovenfor som følger:

shellcheck test.sh

Bruke ShellCheck fra tekstredigereren

Du kan også se ShellCheck-forslag og advarsler direkte i en rekke redaktører, dette er sannsynligvis en mer effektiv måte å bruke ShellCheck på. Når du har lagret en fil, viser den deg eventuelle feil i koden.

I Vim bruker du ALE eller Syntastic (vi bruker dette):

Start med å installere Pathogen slik at det er enkelt å installere syntetisk. Kjør kommandoene nedenfor for å få pathogen.vim-filen og katalogene den trenger:

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

Deretter legger du dette til ~/.vimrc-filen din:

execute pathogen#infect()

Når du har installert patogen, og du nå kan sette syntastic inn i ~/.vim/bundle som følger:

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

Deretter lukker du vim og start den opp igjen for å laste den på nytt, og skriv deretter kommandoen nedenfor:

:Helptags

Hvis alt går bra, bør du ha ShellCheck integrert med Vim, følgende skjermbilder viser hvordan det fungerer ved å bruke det samme skriptet ovenfor.

I tilfelle du får en feilmelding etter å ha fulgt trinnene ovenfor, har du muligens ikke installert Pathogen riktig. Gjenta trinnene, men sørg for at du gjorde følgende:

  • Opprettet både ~/.vim/autoload- og ~/.vim/bundle-katalogene.
  • La til execute pathogen#infect()-linjen i ~/.vimrc-filen.
  • Gjorde git-klonen av syntastisk inne i ~/.vim/bundle.
  • Bruk passende tillatelser for å få tilgang til alle katalogene ovenfor.

Du kan også bruke andre redaktører for å sjekke dårlig kode i shell-skript som:

  • I Emacs bruker du Flycheck.
  • I Sublime bruker du SublimeLinter.
  • I Atom, bruk Linter.
  • I de fleste andre redaktører, bruk GCC-feilkompatibilitet.

Merk: Bruk galleriet med dårlig kode for å utføre mer ShellChecking.

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

Det er det! I denne artikkelen viste vi hvordan du installerer og bruker ShellCheck for å finne feil eller dårlig kode i shell-skriptene dine i Linux. Del dine tanker med oss via kommentarfeltet nedenfor.

Vet du om andre lignende verktøy der ute? Hvis ja, del informasjon om dem i kommentarfeltet også.