ShellCheck - ഷെൽ സ്ക്രിപ്റ്റുകൾക്കുള്ള മുന്നറിയിപ്പുകളും നിർദ്ദേശങ്ങളും കാണിക്കുന്ന ഒരു ടൂൾ


ഷെൽചെക്ക് ഒരു സ്റ്റാറ്റിക് അനാലിസിസ് ടൂളാണ്, അത് ബാഷ്/ഷ് ഷെൽ സ്ക്രിപ്റ്റുകളിലെ മോശം കോഡുകളെക്കുറിച്ചുള്ള മുന്നറിയിപ്പുകളും നിർദ്ദേശങ്ങളും കാണിക്കുന്നു. ഇത് പല തരത്തിൽ ഉപയോഗിക്കാം: വെബിൽ നിന്ന് https://www.shellcheck.net എന്നതിൽ (എല്ലായ്uപ്പോഴും ഇത് ഏറ്റവും പുതിയ git-ലേക്ക് സമന്വയിപ്പിച്ചിരിക്കുന്നു) ഒരു ഓൺലൈൻ എഡിറ്ററിൽ (Ace - JavaScript-ൽ എഴുതിയ ഒരു സ്വതന്ത്ര കോഡ് എഡിറ്റർ) നിങ്ങളുടെ ഷെൽ സ്uക്രിപ്റ്റ് ഒട്ടിച്ചുകൊണ്ട് പ്രതിജ്ഞാബദ്ധമാണ്, തൽക്ഷണ ഫീഡ്uബാക്കിനായി ShellCheck-ന് പോകാനുള്ള ഏറ്റവും ലളിതമായ മാർഗമാണിത്.

പകരമായി, നിങ്ങൾക്ക് ഇത് നിങ്ങളുടെ മെഷീനിൽ ഇൻസ്റ്റാൾ ചെയ്യാനും ടെർമിനലിൽ നിന്ന് പ്രവർത്തിപ്പിക്കാനും നിങ്ങളുടെ ടെക്സ്റ്റ് എഡിറ്ററുമായും നിങ്ങളുടെ ബിൽഡ് അല്ലെങ്കിൽ ടെസ്റ്റ് സ്യൂട്ടുകളുമായും സംയോജിപ്പിക്കാനും കഴിയും.

ShellCheck പ്രാഥമികമായി ചെയ്യുന്ന മൂന്ന് കാര്യങ്ങളുണ്ട്:

  • നിഗൂഢമായ പിശക് സന്ദേശങ്ങൾ നൽകാൻ ഷെല്ലിന് കാരണമാകുന്ന സാധാരണ തുടക്കക്കാരുടെ വാക്യഘടന പ്രശ്നങ്ങൾ ഇത് ചൂണ്ടിക്കാണിക്കുകയും വിശദീകരിക്കുകയും ചെയ്യുന്നു.
  • ഒരു ഷെല്ലിനെ വിചിത്രമായും അവബോധജന്യമായും പെരുമാറാൻ കാരണമാകുന്ന സാധാരണ ഇന്റർമീഡിയറ്റ് ലെവൽ സെമാന്റിക് പ്രശ്നങ്ങൾ ഇത് ചൂണ്ടിക്കാണിക്കുകയും വിശദീകരിക്കുകയും ചെയ്യുന്നു.
  • ഭാവി സാഹചര്യങ്ങളിൽ ഒരു വികസിത ഉപയോക്താവിന്റെ പ്രവർത്തനക്ഷമമായ സ്uക്രിപ്റ്റ് പരാജയപ്പെടാൻ കാരണമായേക്കാവുന്ന സൂക്ഷ്മമായ മുന്നറിയിപ്പ്, കോർണർ കേസുകൾ, അപകടങ്ങൾ എന്നിവയും ഇത് ചൂണ്ടിക്കാണിക്കുന്നു.

ഈ ലേഖനത്തിൽ, Linux-ലെ നിങ്ങളുടെ ഷെൽ സ്uക്രിപ്റ്റുകളിൽ ബഗുകളോ മോശം കോഡോ കണ്ടെത്തുന്നതിനുള്ള വിവിധ വഴികളിൽ ShellCheck എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാമെന്നും ഉപയോഗിക്കാമെന്നും ഞങ്ങൾ കാണിക്കും.

ലിനക്സിൽ ഷെൽ ചെക്ക് എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാം

കാണിച്ചിരിക്കുന്നതുപോലെ നിങ്ങളുടെ പാക്കേജ് മാനേജർ വഴി ഷെൽചെക്ക് എളുപ്പത്തിൽ പ്രാദേശികമായി ഇൻസ്റ്റാൾ ചെയ്യാൻ കഴിയും.

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

ShellCheck ഇൻസ്റ്റാൾ ചെയ്തുകഴിഞ്ഞാൽ, നമ്മൾ മുമ്പ് സൂചിപ്പിച്ച വിവിധ രീതികളിൽ ShellCheck എങ്ങനെ ഉപയോഗിക്കാമെന്ന് നോക്കാം.

https://www.shellcheck.net എന്നതിലേക്ക് പോയി, നൽകിയിരിക്കുന്ന എയ്uസ് എഡിറ്ററിൽ നിങ്ങളുടെ സ്uക്രിപ്റ്റ് ഒട്ടിക്കുക, ചുവടെയുള്ള സ്uക്രീൻ ഷോട്ടിൽ കാണിച്ചിരിക്കുന്നതുപോലെ എഡിറ്ററിന്റെ ചുവടെ നിങ്ങൾ ഔട്ട്uപുട്ട് കാണും.

ഇനിപ്പറയുന്ന ഉദാഹരണത്തിൽ, ടെസ്റ്റ് ഷെൽ സ്ക്രിപ്റ്റിൽ ഇനിപ്പറയുന്ന വരികൾ അടങ്ങിയിരിക്കുന്നു:

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

മുകളിലെ സ്ക്രീൻഷോട്ടിൽ നിന്ന്, E_NOTROOT, E_MINARGS എന്നീ ആദ്യ രണ്ട് വേരിയബിളുകൾ പ്രഖ്യാപിച്ചു, എന്നാൽ അവ ഉപയോഗിക്കാത്തവയാണ്, ഷെൽചെക്ക് ഇവയെ \നിർദ്ദേശിക്കുന്ന പിശകുകൾ എന്ന് റിപ്പോർട്ട് ചെയ്യുന്നു:

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

രണ്ടാമതായി, E_NOTROOT വേരിയബിൾ എക്കോ ചെയ്യാൻ തെറ്റായ പേര് (എക്കോ $E_NONROOT എന്ന പ്രസ്താവനയിൽ) ഉപയോഗിച്ചു, അതുകൊണ്ടാണ് ഷെൽചെക്ക് പിശക് കാണിക്കുന്നത്:

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

നിങ്ങൾ വീണ്ടും എക്കോ കമാൻഡുകൾ നോക്കുമ്പോൾ, വേരിയബിളുകൾ ഡബിൾ ക്വോട്ട് ചെയ്തിട്ടില്ല (ഗ്ലോബിംഗും വേർഡ് സ്പ്ലിറ്റിംഗും തടയാൻ സഹായിക്കുന്നു), അതിനാൽ ഷെൽ ചെക്ക് മുന്നറിയിപ്പ് കാണിക്കുന്നു:

SC2086: Double quote to prevent globbing and word splitting.

നിങ്ങൾക്ക് കമാൻഡ്-ലൈനിൽ നിന്നും ShellCheck പ്രവർത്തിപ്പിക്കാനും കഴിയും, മുകളിൽ പറഞ്ഞിരിക്കുന്ന അതേ ഷെൽ സ്ക്രിപ്റ്റ് ഞങ്ങൾ ഉപയോഗിക്കും:

$ shellcheck test.sh

നിങ്ങൾക്ക് ഷെൽചെക്ക് നിർദ്ദേശങ്ങളും മുന്നറിയിപ്പുകളും വിവിധ എഡിറ്റർമാരിൽ നേരിട്ട് കാണാനും കഴിയും, ഷെൽചെക്ക് ഉപയോഗിക്കുന്നതിനുള്ള കൂടുതൽ കാര്യക്ഷമമായ മാർഗമാണിത്, ഒരിക്കൽ നിങ്ങൾ ഒരു ഫയലുകൾ സംരക്ഷിച്ചാൽ, അത് കോഡിൽ എന്തെങ്കിലും പിശകുകൾ കാണിക്കുന്നു.

Vim-ൽ, ALE അല്ലെങ്കിൽ Syntastic ഉപയോഗിക്കുക (ഞങ്ങൾ ഇത് ഉപയോഗിക്കും):

രോഗകാരി ഇൻസ്റ്റാൾ ചെയ്തുകൊണ്ട് ആരംഭിക്കുക, അതുവഴി സിന്റാസ്റ്റിക് ഇൻസ്റ്റാൾ ചെയ്യുന്നത് എളുപ്പമാണ്. pathogen.vim ഫയലും അതിന് ആവശ്യമായ ഡയറക്uടറികളും ലഭിക്കുന്നതിന് താഴെയുള്ള കമാൻഡുകൾ പ്രവർത്തിപ്പിക്കുക:

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

തുടർന്ന് ഇത് നിങ്ങളുടെ ~/.vimrc ഫയലിലേക്ക് ചേർക്കുക:

execute pathogen#infect()

ഒരിക്കൽ നിങ്ങൾ രോഗകാരി ഇൻസ്റ്റാൾ ചെയ്തുകഴിഞ്ഞാൽ, നിങ്ങൾക്ക് ഇപ്പോൾ ~/.vim/bundle-ലേക്ക് ഇനിപ്പറയുന്ന രീതിയിൽ സിന്റാസ്റ്റിക് ഉൾപ്പെടുത്താം:

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

അടുത്തതായി, vim അടച്ച് അത് വീണ്ടും ലോഡുചെയ്യുന്നതിന് ബാക്കപ്പ് ആരംഭിക്കുക, തുടർന്ന് താഴെയുള്ള കമാൻഡ് ടൈപ്പ് ചെയ്യുക:

:Helptags

എല്ലാം ശരിയാണെങ്കിൽ, നിങ്ങൾക്ക് Vim-മായി ShellCheck സംയോജിപ്പിച്ചിരിക്കണം, മുകളിലുള്ള അതേ സ്ക്രിപ്റ്റ് ഉപയോഗിച്ച് ഇത് എങ്ങനെ പ്രവർത്തിക്കുന്നുവെന്ന് ഇനിപ്പറയുന്ന സ്ക്രീൻഷോട്ടുകൾ കാണിക്കുന്നു.

മുകളിലുള്ള ഘട്ടങ്ങൾ പാലിച്ചതിന് ശേഷം നിങ്ങൾക്ക് ഒരു പിശക് വന്നാൽ, നിങ്ങൾ രോഗകാരി ശരിയായി ഇൻസ്റ്റാൾ ചെയ്തിട്ടില്ലായിരിക്കാം. ഘട്ടങ്ങൾ വീണ്ടും ചെയ്യുക എന്നാൽ നിങ്ങൾ ഇനിപ്പറയുന്നവ ചെയ്തുവെന്ന് ഇത് ഉറപ്പാക്കുന്നു:

  • ~/.vim/autoload, ~/.vim/bundle എന്നീ ഡയറക്uടറികളും സൃഷ്uടിച്ചു.
  • നിങ്ങളുടെ ~/.vimrc ഫയലിലേക്ക് എക്uസിക്യൂട്ട് pathogen#infect() ലൈൻ ചേർത്തു.
  • ~/.vim/bundle-നുള്ളിൽ വാക്യഘടനയുടെ ജിറ്റ് ക്ലോൺ ഉണ്ടോ.
  • മുകളിലുള്ള എല്ലാ ഡയറക്uടറികളും ആക്uസസ് ചെയ്യുന്നതിന് ഉചിതമായ അനുമതികൾ ഉപയോഗിക്കുക.

ഷെൽ സ്ക്രിപ്റ്റുകളിലെ മോശം കോഡ് പരിശോധിക്കാൻ നിങ്ങൾക്ക് മറ്റ് എഡിറ്റർമാരെയും ഉപയോഗിക്കാം:

  • ഇമാക്സിൽ, ഫ്ലൈചെക്ക് ഉപയോഗിക്കുക.
  • Sublime-ൽ, SublimeLinter ഉപയോഗിക്കുക.
  • ആറ്റത്തിൽ, ലിന്റർ ഉപയോഗിക്കുക.
  • മറ്റു മിക്ക എഡിറ്ററുകളിലും, GCC പിശക് അനുയോജ്യത ഉപയോഗിക്കുക.

ശ്രദ്ധിക്കുക: കൂടുതൽ ഷെൽ ചെക്കിംഗ് നടത്താൻ മോശം കോഡിന്റെ ഗാലറി ഉപയോഗിക്കുക.

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

അത്രയേയുള്ളൂ! ഈ ലേഖനത്തിൽ, Linux-ലെ നിങ്ങളുടെ ഷെൽ സ്ക്രിപ്റ്റുകളിൽ ബഗുകളോ മോശം കോഡോ കണ്ടെത്തുന്നതിന് ShellCheck എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാമെന്നും ഉപയോഗിക്കാമെന്നും ഞങ്ങൾ കാണിച്ചുതന്നു. ചുവടെയുള്ള അഭിപ്രായ വിഭാഗത്തിലൂടെ നിങ്ങളുടെ ചിന്തകൾ ഞങ്ങളുമായി പങ്കിടുക.

സമാനമായ മറ്റേതെങ്കിലും ഉപകരണങ്ങൾ നിങ്ങൾക്ക് അറിയാമോ? ഉണ്ടെങ്കിൽ, അവരെക്കുറിച്ചുള്ള വിവരങ്ങൾ കമന്റുകളിലും പങ്കുവെക്കുക.