ShellCheck - Għodda Li Turi Twissijiet u Suġġerimenti għal Shell Scripts
ShellCheck hija għodda ta 'analiżi statika li turi twissijiet u suġġerimenti dwar kodiċi ħażin fl-iskripts bash/sh shell. Jista 'jintuża f'diversi modi: mill-web billi tippejstja l-iskript tal-qoxra tiegħek f'editur onlajn (Ace – editur tal-kodiċi awtonomu miktub f'JavaScript) f'https://www.shellcheck.net (huwa dejjem sinkronizzat mal-aħħar git). jikkommettu, u huwa l-eħfef mod biex tagħti ċans lil ShellCheck) għal feedback immedjat.
Alternattivament, tista 'tinstallaha fuq il-magna tiegħek u tħaddem mit-terminal, tintegraha mal-editur tat-test tiegħek kif ukoll fil-bini jew is-suites tat-test tiegħek.
Hemm tliet affarijiet li ShellCheck jagħmel primarjament:
- Tindika u tispjega kwistjonijiet ta' sintassi tipiċi tal-Bidu li jikkawżaw qoxra biex tagħti messaġġi ta' żball kriptiċi.
- Tindika u tispjega problemi semantiċi tipiċi ta' livell intermedju li jikkawżaw qoxra biex iġib ruħu b'mod stramb u kontrointuwittiv.
- Tindika wkoll twissijiet sottili, kaxxi tal-kantunieri u żvantaġġi li jistgħu jikkawżaw li script ta' utent avvanzat li kien jaħdem mod ieħor ifalli f'ċirkostanzi futuri.
F'dan l-artikolu, ser nuru kif tinstalla u tuża ShellCheck fid-diversi modi biex issib bugs jew kodiċi ħażin fl-iskripts tal-qoxra tiegħek fil-Linux.
Kif tinstalla u tuża ShellCheck fil-Linux
ShellCheck jista' jiġi installat faċilment lokalment permezz tal-maniġer tal-pakketti tiegħek kif muri.
# apt-get install shellcheck
# yum -y install epel-release # yum install ShellCheck
# dnf install ShellCheck
Ladarba ShellCheck jiġi installat, ejja nagħtu ħarsa lejn kif tuża ShellCheck fid-diversi metodi li semmejna qabel.
Mur fuq https://www.shellcheck.net u paste l-iskrittura tiegħek fl-editur Ace provdut, inti se tara l-output fil-qiegħ ta ' l-editur kif muri fl-iskrin shot hawn taħt.
Fl-eżempju li ġej, l-iskript tal-qoxra tat-test jikkonsisti fil-linji li ġejjin:
#!/bin/bash #declare variables MINARGS=2 E_NOTROOT=50 E_MINARGS=100 #echo values of variables echo $MINARGS echo $E_NONROOT exit 0;
Mill-screenshot ta' hawn fuq, l-ewwel żewġ varjabbli E_NOTROOT u E_MINARGS ġew iddikjarati iżda mhumiex użati, ShellCheck tirrapporta dawn bħala \żbalji suġġettivi:
SC2034: E_NOTROOT appears unused. Verify it or export it. SC2034: E_MINARGS appears unused. Verify it or export it.
Imbagħad it-tieni, l-isem ħażin (fid-dikjarazzjoni echo $E_NONROOT) intuża biex itenni l-varjabbli E_NOTROOT, għalhekk ShellCheck juri l-iżball:
SC2153: Possible misspelling: E_NONROOT may not be assigned, but E_NOTROOT is
Għal darb'oħra meta tħares lejn il-kmandi tal-eku, il-varjabbli ma ġewx ikkwotati doppju (jgħin biex jipprevjeni l-globbing u l-qsim tal-kliem), għalhekk Shell Check juri t-twissija:
SC2086: Double quote to prevent globbing and word splitting.
Tista 'wkoll tmexxi ShellCheck mil-linja tal-kmand, aħna ser nużaw l-istess script shell hawn fuq kif ġej:
$ shellcheck test.sh
Tista 'wkoll tara s-suġġerimenti u t-twissijiet ta' ShellCheck direttament f'varjetà ta 'edituri, dan huwa probabbilment mod aktar effiċjenti ta' kif tuża ShellCheck, ladarba tissejvja fajls, jurik xi żbalji fil-kodiċi.
F'Vim, uża ALE jew Syntastic (se nużaw dan):
Ibda billi tinstalla l-Patoġenu sabiex ikun faċli li tinstalla sintastika. Mexxi l-kmandi hawn taħt biex tikseb il-fajl pathogen.vim u d-direttorji li teħtieġ:
# mkdir -p ~/.vim/autoload ~/.vim/bundle && curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim
Imbagħad żid dan mal-fajl ~/.vimrc tiegħek:
execute pathogen#infect()
Ladarba tkun installat il-patoġenu, u issa tista' tpoġġi sintastika f'~/.vim/bundle kif ġej:
# cd ~/.vim/bundle && git clone --depth=1 https://github.com/vim-syntastic/syntastic.git
Sussegwentement, agħlaq il-vim u ibdah lura biex terġa' tgħabbi, imbagħad ittajpja l-kmand hawn taħt:
:Helptags
Jekk kollox imur tajjeb, għandu jkollok ShellCheck integrat ma 'Vim, il-screenshots li ġejjin juru kif taħdem billi tuża l-istess skript ta' hawn fuq.
F'każ li jkollok żball wara li ssegwi l-passi ta 'hawn fuq, allura possibilment ma installajtx il-Patoġenu b'mod korrett. Erġa' agħmel il-passi iżda dan żgura li għamilt dan li ġej:
- Ħoloq kemm id-direttorji ~/.vim/autoload kif ukoll ~/.vim/bundle.
- Żidt il-linja execute pathogen#infect() mal-fajl ~/.vimrc tiegħek.
- Il-klonu git ta 'sintastiku ġewwa ~/.vim/bundle.
- Uża permessi xierqa biex taċċessa d-direttorji kollha ta' hawn fuq.
Tista 'wkoll tuża edituri oħra biex tiċċekkja kodiċi ħażin fi skripts tal-qoxra bħal:
- F'Emacs, uża Flycheck.
- F'Sublime, impjega SublimeLinter.
- F'Atom, uża Linter.
- Fil-biċċa l-kbira tal-edituri l-oħra, uża l-kompatibbiltà tal-iżbalji tal-GCC.
Nota: Uża l-gallerija ta 'kodiċi ħażin biex twettaq aktar ShellChecking.
Repożitorju ta' ShellCheck Github: https://github.com/koalaman/shellcheck
Dak hu! F'dan l-artikolu, urejna kif tinstalla u tuża ShellCheck biex issib bugs jew kodiċi ħażin fl-iskripts tal-qoxra tiegħek fil-Linux. Aqsam il-ħsibijiet tiegħek magħna permezz tat-taqsima tal-kummenti hawn taħt.
Taf xi għodda oħra simili hemmhekk? Jekk iva, imbagħad aqsam informazzjoni dwarhom fil-kummenti wkoll.