ShellCheck - Kayan aiki Mai Nuna Gargaɗi da Shawarwari don Rubutun Shell


ShellCheck kayan aikin bincike ne a tsaye wanda ke nuna gargaɗi da shawarwari game da muggan code a cikin rubutun bash/sh harsashi. Ana iya amfani da shi ta hanyoyi da yawa: daga gidan yanar gizo ta liƙa rubutun harsashi a cikin editan kan layi (Ace - editan lambar da aka rubuta a cikin JavaScript) a cikin https://www.shellcheck.net (a koyaushe ana daidaita shi zuwa sabon git). aikata, kuma ita ce hanya mafi sauƙi don ba ShellCheck tafi) don amsawa nan take.

A madadin, za ku iya shigar da shi a kan injin ku kuma kunna shi daga tashar tashar, haɗa shi da editan rubutun ku da kuma a cikin ginin ku ko gwajin gwaji.

Akwai abubuwa uku ShellCheck da farko:

  • Yana nuna kuma yana bayyana batutuwan haɗin gwiwar farawa na yau da kullun waɗanda ke haifar da harsashi don ba da saƙonnin kuskuren ɓoye.
  • Yana nuni da bayyana matsalolin ma'anar matsakaicin matakin matsakaici wanda ke haifar da harsashi don yin abin ban mamaki da rashin fahimta.
  • Hakanan yana nuna ƙwaƙƙwaran da hankali, shari'o'i na kusurwa da kuma ramummuka waɗanda za su iya haifar da in ba haka ba rubutun aiki na mai amfani ya gaza a cikin yanayi na gaba.

A cikin wannan labarin, za mu nuna yadda ake shigarwa da amfani da ShellCheck ta hanyoyi daban-daban don nemo kwari ko mummuna code a cikin rubutun harsashi a cikin Linux.

Yadda ake Shigar da Amfani da ShellCheck a cikin Linux

Ana iya shigar da ShellCheck cikin sauƙi a cikin gida ta hanyar mai sarrafa fakitin ku kamar yadda aka nuna.

# apt-get install shellcheck
# yum -y install epel-release
# yum install ShellCheck
# dnf install ShellCheck

Da zarar ShellCheck ya shigar, bari mu kalli yadda ake amfani da ShellCheck a cikin hanyoyi daban-daban da muka ambata a baya.

Je zuwa https://www.shellcheck.net kuma ku liƙa rubutunku a cikin editan Ace da aka bayar, zaku duba fitarwa a ƙasan editan kamar yadda aka nuna a hoton allo na ƙasa.

A cikin misali mai zuwa, rubutun gwajin harsashi ya ƙunshi layiyoyi masu zuwa:

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

Daga hoton hoton da ke sama, an bayyana masu canji biyu na farko E_NOTROOT da E_MINARGS amma ba a yi amfani da su ba, ShellCheck ya ruwaito waɗannan a matsayin kurakurai masu ba da shawara:

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

Sai na biyu, sunan da ba daidai ba (a cikin bayanin echo $E_NONROOT) an yi amfani da shi don amsa madaidaicin E_NOTROOT, shi ya sa ShellCheck ya nuna kuskuren:

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

Hakanan lokacin da kuka kalli umarnin echo, ba a ƙididdige masu canji sau biyu ba (taimaka don hana globbing da rarrabuwar kalmomi), don haka Shell Check yana nuna gargaɗin:

SC2086: Double quote to prevent globbing and word splitting.

Hakanan zaka iya gudanar da ShellCheck daga layin umarni, za mu yi amfani da wannan rubutun harsashi a sama kamar haka:

$ shellcheck test.sh

Hakanan zaka iya duba shawarwari da gargaɗin ShellCheck kai tsaye a cikin editoci iri-iri, wannan tabbas ita ce hanya mafi inganci ta amfani da ShellCheck, da zarar ka adana fayiloli, yana nuna maka duk wani kurakurai a cikin lambar.

A cikin Vim, yi amfani da ALE ko Syntastic (za mu yi amfani da wannan):

Fara da shigar da Pathogen domin yana da sauƙin shigar da syntastic. Gudun umarnin da ke ƙasa don samun fayil ɗin pathogen.vim da kundayen adireshi da yake buƙata:

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

Sannan ƙara wannan zuwa fayil ɗin ~/.vimrc:

execute pathogen#infect()

Da zarar kun shigar da pathogen, kuma yanzu zaku iya sanya syntastic cikin ~/.vim/bundle kamar haka:

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

Bayan haka, rufe vim kuma fara shi sama don sake loda shi, sannan a rubuta umarnin da ke ƙasa:

:Helptags

Idan komai yayi kyau, yakamata a haɗa ShellCheck tare da Vim, hotuna masu zuwa suna nuna yadda yake aiki ta amfani da wannan rubutun na sama.

Idan kun sami kuskure bayan bin matakan da ke sama, to wataƙila ba ku shigar da cutar ba daidai. Maimaita matakan amma wannan tabbatar da cewa kun yi masu zuwa:

  • An ƙirƙira duka ~/.vim/autoload da ~/.vim/bundle directories.
  • An ƙara layin kashe pathogen#infect() zuwa fayil ɗin ~/.vimrc ɗin ku.
  • Ya yi git clone na syntastic a ciki ~/.vim/bundle.
  • Yi amfani da izini masu dacewa don isa ga duk kundayen adireshi na sama.

Hakanan zaka iya amfani da wasu masu gyara don bincika lambar mara kyau a cikin rubutun harsashi kamar:

  • A cikin Emacs, yi amfani da Flycheck.
  • A cikin Sublime, yi amfani da SublimeLinter.
  • A cikin Atom, yi amfani da Linter.
  • A yawancin sauran masu gyara, yi amfani da dacewa da kuskuren GCC.

Lura: Yi amfani da hoton hoton mara kyau don aiwatar da ƙarin ShellChecking.

Wurin ajiya na ShellCheck Github: https://github.com/koalaman/shellcheck

Shi ke nan! A cikin wannan labarin, mun nuna yadda ake girka da amfani da ShellCheck don nemo kwari ko munanan lamba a cikin rubutun harsashi a cikin Linux. Raba ra'ayoyin ku tare da mu ta sashin sharhin da ke ƙasa.

Shin kun san wasu kayan aikin makamancin haka a can? Idan eh, to raba bayani game da su a cikin sharhi kuma.