ShellCheck 0.9 është i disponueshëm, një analizues statik për skriptet e guaskës

Është publikuar publikimi i projektit ShellCheck 0.9, duke zhvilluar një sistem për analizën statike të skripteve të guaskës që mbështet identifikimin e gabimeve në skriptet duke marrë parasysh veçoritë e bash, sh, ksh dhe dash. Kodi i projektit është shkruar në Haskell dhe shpërndahet nën licencën GPLv3. Komponentët ofrohen për integrim me Vim, Emacs, VSCode, Sublime, Atom dhe korniza të ndryshme që mbështesin raportimin e gabimeve të pajtueshme me GCC.

ShellCheck 0.9 është i disponueshëm, një analizues statik për skriptet e guaskës

Ai mbështet identifikimin e të dy gabimeve sintaksore në kod, të cilat çojnë në shfaqjen e një gabimi nga interpretuesi në momentin e ekzekutimit, dhe problemet semantike, për shkak të të cilave ekzekutimi nuk ndërpritet, por ndodhin anomali në sjelljen e skriptit. Analizuesi mund të identifikojë gjithashtu pengesat, problemet jo të dukshme dhe grackat që mund të çojnë në dështime në rrethana të caktuara.

Ndër klasat e gabimeve të zbuluara, mund të vërehen probleme me ikjen e karaktereve speciale dhe inkuadrimin e tyre në thonjëza, gabime në shprehjet e kushtëzuara, përdorimin e gabuar të komandave, problemet me kohën dhe datat e përpunimit dhe gabimet tipike sintaksore për fillestarët. Për shembull, mungesa e hapësirave kur krahasohet "[[ $foo==0 ]]", prania e hapësirave "var = 42" ose treguesi i simbolit $ kur caktohet "$foo=42", përdorimi i variablave pa thonjëza "echo $1", treguesi i kllapave katrore shtesë në "tr -cd '[a-zA-Z0-9]'",

Për më tepër, ai mbështet daljen e rekomandimeve për përmirësimin e stilit të kodit, eliminimin e problemeve të transportueshmërisë dhe rritjen e besueshmërisë së skripteve. Për shembull, në vend të "echo $[1+2]" do të propozohet të përdoret sintaksa "$((..))", ndërtimi 'rm -rf "$STEAMROOT/"*' do të shënohet si i pasigurt dhe mund të fshijë direktoriumin rrënjë nëse ndryshorja nuk është e mbushur $STEAMROOT dhe përdorimi i "echo {1..10}" do të theksohet si i papajtueshëm me dash dhe sh.

Në versionin e ri:

  • Paralajmërim i shtuar për shprehje si 'foo lokale vetëm për lexim'.
  • Paralajmërim i shtuar për komandat e padisponueshme.
  • Paralajmërim i shtuar për lidhjet e pasme për 'deklaro x=1 y=$x'.
  • Paralajmërim i shtuar nëse $? përdoret për të printuar kodin e kthimit të echo, printf, [ ], [[ ]] dhe test.
  • U shtua rekomandim për të hequr ((..))inarray[((idx))]=val.
  • U shtua një rekomandim për lidhjen e kllapave të dyfishta në kontekstet aritmetike.
  • Shtoi një rekomandim për të hequr kllapat në shprehjen a[(x+1)]=val.

Burimi: opennet.ru

Shto një koment