Mae ShellCheck 0.9 ar gael, dadansoddwr statig ar gyfer sgriptiau cregyn

Mae rhyddhau'r prosiect ShellCheck 0.9 wedi'i gyhoeddi, gan ddatblygu system ar gyfer dadansoddiad statig o sgriptiau cregyn sy'n cefnogi nodi gwallau mewn sgriptiau gan ystyried nodweddion bash, sh, ksh a dash. Mae cod y prosiect wedi'i ysgrifennu yn Haskell a'i ddosbarthu o dan drwydded GPLv3. Darperir cydrannau i'w hintegreiddio Γ’ Vim, Emacs, VSCode, Sublime, Atom, a fframweithiau amrywiol sy'n cefnogi adrodd ar wallau sy'n gydnaws Γ’ GCC.

Mae ShellCheck 0.9 ar gael, dadansoddwr statig ar gyfer sgriptiau cregyn

Mae'n cefnogi nodi gwallau cystrawen yn y cod, sy'n arwain at y cyfieithydd yn arddangos gwall ar adeg gweithredu, a phroblemau semantig, oherwydd nad amharir ar y gweithredu, ond mae anghysondebau yn ymddygiad y sgript yn digwydd. Gall y dadansoddwr hefyd nodi tagfeydd, problemau nad ydynt yn amlwg a pheryglon a all arwain at fethiannau o dan rai amgylchiadau.

Ymhlith y dosbarthiadau o wallau a ganfuwyd, gallwn nodi problemau gyda dianc cymeriadau arbennig a'u fframio mewn dyfyniadau, gwallau mewn ymadroddion amodol, defnydd anghywir o orchmynion, problemau prosesu amser a dyddiadau, a gwallau cystrawen nodweddiadol ar gyfer dechreuwyr. Er enghraifft, absenoldeb bylchau wrth gymharu β€œ[[ $foo===0 ]]”, presenoldeb bylchau β€œvar = 42” neu arwydd y symbol $ wrth aseinio β€œ$foo=42”, y defnydd o newidynnau heb ddyfyniadau "adlais $1", arwydd o gromfachau sgwΓ’r ychwanegol yn "tr -cd '[a-zA-Z0-9]'",

Yn ogystal, mae'n cefnogi allbwn argymhellion ar gyfer gwella arddull cod, dileu problemau hygludedd, a chynyddu dibynadwyedd sgriptiau. Er enghraifft, yn lle "adlais $[1+2]" awgrymir defnyddio'r gystrawen β€œ$((..))”, bydd yr adeiladwaith 'rm -rf β€œ$STEAMROOT/”*' yn cael ei farcio'n anniogel ac yn gallu dileu'r cyfeiriadur gwraidd os nad yw'r newidyn wedi'i lenwi $ STEAMROOT, a bydd y defnydd o "echo {1...10}" yn cael ei amlygu fel un anghydnaws Γ’ dash a sh.

Yn y fersiwn newydd:

  • Ychwanegwyd rhybudd ar gyfer ymadroddion fel 'local readonly foo'.
  • Ychwanegwyd rhybudd am orchmynion nad ydynt ar gael.
  • Ychwanegwyd rhybudd am backlinks i 'ddatgan x=1 y=$x'.
  • Ychwanegwyd rhybudd os $? a ddefnyddir i argraffu'r cod dychwelyd adlais, printf, [ ], [ [ ]] a phrofi.
  • Ychwanegwyd argymhelliad i ddileu ((..))inarray[((idx))]=val.
  • Ychwanegwyd argymhelliad ar gyfer cydgadwynu cromfachau dwbl mewn cyd-destunau rhifyddol.
  • Ychwanegwyd argymhelliad i ddileu cromfachau yn y mynegiad a[(x+1)]=val.

Ffynhonnell: opennet.ru

Ychwanegu sylw