ShellCheck 0.9 është disponible, një analizues statik për skriptet shell

Është publikuar versioni 0.9 i projektit ShellCheck, i cili zhvillon një sistem analizimi statik për shell scripts, duke mbështetur identifikimin e gabimeve në skriptet me shpërndarjen e veçorive të bash, sh, ksh dhe dash. Kodi i projektit është shkruar në gjuhën Haskell dhe shpërndahet nën licencën GPLv3. Ofrohen komponentë për integrim me Vim, Emacs, VSCode, Sublime, Atom dhe mjedise të ndryshme të integruara që mbështesin daljen e informacionit mbi gabimet në përputhje me GCC.

ShellCheck 0.9 është disponible, një analizues statik për skriptet shell

Mbështetet identifikimi në kod si të gabimeve sintaksore që shkaktojnë një gabim në ekzekutimin e interpretorit, ashtu edhe problemeve semantike, të cilat, ndonëse ekzekutimi nuk ndërpritet, shkaktojnë anomali në sjelljen e skriptit. Analizuesi gjithashtu mund të identifikojë ngushticat, problemet e padukshme dhe pengesat që mund të çojnë në dështime nën disa rrethana.

Nga klasat e gabimeve që identifikohen, mund të përmendim problemet me ekranuar simbolat e veçantë dhe kufizimin me citoj, gabimet në shprehjet kushtore, përdorimin e pasaktë të komandeve, si dhe problemet me përpunimin e kohës dhe datave, si dhe gabime sintaksore tipike të fillestarëve. Për shembull, mungesa e hapësirave gjatë krahasimit «[[ $foo==0 ]]», pranimi i hapësirave «var = 42» ose indicimi i simbolit $ gjatë caktimit «$foo=42», përdorimi i variablave pa citoj «echo $1», indicimi i skedave të tepërta në «tr -cd ‘[a-zA-Z0-9]'»

Përveç kësaj, mbështetet ofrimi i rekomandimeve për përmirësimin e stilit të kodit, eliminimin e problemeve me portabilitetin dhe rritjen e besueshmërisë së funksionimit të skripteve. Për shembull, në vend të «echo $[1+2]» do të rekomandohet përdorimi i sintaksës «$((..))», konstrukti ‘rm -rf «$STEAMROOT/»*’ do të shënohet si e pasigurt dhe në gjendje të fshijë katalogun rrënjë nëse variabla $STEAMROOT nuk është e mbushur, ndërsa përdorimi i «echo {1..10}» do të theksohet si jo përputhës me dash dhe sh.

Në këtë version të ri:

  • Është shtuar një paralajmërim për shprehjet e llojit ‘local readonly foo’.
  • Është shtuar një paralajmërim për komandat që nuk janë të disponueshme.
  • Është shtuar një paralajmërim për referencat e prapme në ‘declare x=1 y=$x’.
  • Është shtuar një paralajmërim, nëse $? përdoret për të dhënë kodin e kthimit të echo, printf, [ ], [[ ]] dhe test.
  • Është shtuar një rekomandim për të fshirë ((..))inarray[((idx))]=val.
  • Është shtuar një rekomandim për të bashkuar dyfishin e kornizave në kontekste aritmetike.
  • Është shtuar një rekomandim për të fshirë kornizat e rretha në shprehjen a[(x+1)]=val.

Burimi: opennet.ru

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster