ShellCheck 0.9 huwa disponibbli, analizzatur statiku għal skripts tal-qoxra

Ġie ppubblikat ir-rilaxx tal-proġett ShellCheck 0.9, li jiżviluppa sistema għall-analiżi statika ta 'skripts tal-qoxra li tappoġġja l-identifikazzjoni ta' żbalji fl-iskripts b'kont meħud tal-karatteristiċi ta 'bash, sh, ksh u dash. Il-kodiċi tal-proġett huwa miktub f'Haskell u mqassam taħt il-liċenzja GPLv3. Komponenti huma pprovduti għall-integrazzjoni ma 'Vim, Emacs, VSCode, Sublime, Atom, u oqfsa varji li jappoġġjaw ir-rappurtar ta' żbalji kompatibbli mal-GCC.

ShellCheck 0.9 huwa disponibbli, analizzatur statiku għal skripts tal-qoxra

Jappoġġa l-identifikazzjoni kemm ta 'żbalji ta' sintassi fil-kodiċi, li jwasslu biex l-interpretu juri żball fil-ħin tal-eżekuzzjoni, kif ukoll problemi semantiċi, li minħabba fihom l-eżekuzzjoni ma tiġix imfixkla, iżda jseħħu anomaliji fl-imġieba tal-iskrittura. L-analizzatur jista 'wkoll jidentifika konġestjonijiet, problemi mhux ovvji u nases li jistgħu jwasslu għal fallimenti taħt ċerti ċirkostanzi.

Fost il-klassijiet ta 'żbalji skoperti, nistgħu ninnotaw problemi bil-ħarba ta' karattri speċjali u tfassil tagħhom fi kwotazzjonijiet, żbalji fl-espressjonijiet kondizzjonali, użu ħażin ta 'kmandi, problemi fl-ipproċessar tal-ħin u d-dati, u żbalji tipiċi ta' sintassi għal dawk li jibdew. Pereżempju, in-nuqqas ta’ spazji meta tqabbel “[[ $foo==0 ]]”, il-preżenza ta’ spazji “var = 42” jew l-indikazzjoni tas-simbolu $ meta tassenja “$foo=42”, l-użu ta’ varjabbli mingħajr kwotazzjonijiet "echo $1", l-indikazzjoni ta' parentesi kwadri żejda fi "tr -cd '[a-zA-Z0-9]'",

Barra minn hekk, jappoġġja l-output ta 'rakkomandazzjonijiet għat-titjib tal-istil tal-kodiċi, l-eliminazzjoni tal-problemi tal-portabbiltà, u ż-żieda tal-affidabbiltà tal-iskripts. Pereżempju, minflok “echo $[1+2]” se jkun propost li tintuża s-sintassi “$((..))”, il-kostruzzjoni 'rm -rf “$STEAMROOT/”*' se tkun immarkata bħala mhux sigura u kapaċi tħassar id-direttorju tal-għeruq jekk il-varjabbli ma timtelax $STEAMROOT, u l-użu ta '"echo {1..10}" se jiġi enfasizzat bħala inkompatibbli ma' dash u sh.

Fil-verżjoni l-ġdida:

  • Twissija miżjuda għal espressjonijiet bħal 'lokali readonly foo'.
  • Twissija miżjuda dwar kmandi mhux disponibbli.
  • Miżjud twissija dwar backlinks biex 'tiddikjara x=1 y=$x'.
  • Twissija miżjuda jekk $? użat biex jistampa l-kodiċi tar-ritorn ta 'echo, printf, [ ], [[ ]] u test.
  • Rakkomandazzjoni miżjuda biex titneħħa ((..))inarray[((idx))]=val.
  • Żid rakkomandazzjoni għall-konkatenazzjoni ta' parentesi doppji f'kuntesti aritmetiċi.
  • Żid rakkomandazzjoni biex jitneħħew il-parentesi fl-espressjoni a[(x+1)]=val.

Sors: opennet.ru

Żid kumment