ShellCheck 0.9 is beskikbaar, 'n statiese ontleder vir dopskrifte

Die vrystelling van die ShellCheck 0.9-projek is gepubliseer, wat 'n stelsel ontwikkel vir statiese ontleding van dopskrifte wat die identifisering van foute in skrifte ondersteun met inagneming van die kenmerke van bash, sh, ksh en dash. Die projekkode is in Haskell geskryf en onder die GPLv3-lisensie versprei. Komponente word voorsien vir integrasie met Vim, Emacs, VSCode, Sublime, Atom en verskeie raamwerke wat GCC-versoenbare foutrapportering ondersteun.

ShellCheck 0.9 is beskikbaar, 'n statiese ontleder vir dopskrifte

Dit ondersteun die identifisering van beide sintaksfoute in die kode, wat daartoe lei dat die tolk 'n fout vertoon ten tyde van uitvoering, en semantiese probleme, as gevolg waarvan uitvoering nie ontwrig word nie, maar onreΓ«lmatighede in die gedrag van die skrip voorkom. Die ontleder kan ook knelpunte, nie-vanselfsprekende probleme en slaggate identifiseer wat onder sekere omstandighede tot mislukkings kan lei.

Onder die klasse bespeurde foute kan ons probleme opmerk met die ontsnapping van spesiale karakters en dit in aanhalingstekens, foute in voorwaardelike uitdrukkings, verkeerde gebruik van opdragte, probleme met die verwerking van tyd en datums, en tipiese sintaksisfoute vir beginners. Byvoorbeeld, die afwesigheid van spasies wanneer β€œ[[ $foo==0 ]]” vergelyk word, die teenwoordigheid van spasies β€œvar = 42” of die aanduiding van die $-simbool wanneer β€œ$foo=42” toegeken word, die gebruik van veranderlikes sonder aanhalingstekens β€œecho $1”, die aanduiding van ekstra vierkantige hakies in "tr -cd '[a-zA-Z0-9]'",

Daarbenewens ondersteun dit die uitvoer van aanbevelings vir die verbetering van kodestyl, die uitskakeling van oordraagbaarheidsprobleme en die verhoging van die betroubaarheid van skrifte. Byvoorbeeld, in plaas van β€œecho $[1+2]” sal voorgestel word om die sintaksis β€œ$((..))” te gebruik, die konstruksie 'rm -rf β€œ$STEAMROOT/”*' sal as onveilig gemerk word en in staat is om die wortelgids uit te vee as die veranderlike nie gevul is nie $STEAMROOT, en die gebruik van "echo {1..10}" sal uitgelig word as onversoenbaar met dash en sh.

In die nuwe weergawe:

  • Bygevoeg waarskuwing vir uitdrukkings soos 'plaaslike leesalleen foo'.
  • Bygevoeg waarskuwing oor onbeskikbare opdragte.
  • Bygevoeg waarskuwing oor terugskakels na 'x=1 y=$x verklaar'.
  • Bygevoeg waarskuwing as $? gebruik om die terugkeerkode van eggo, printf, [ ], [[ ]] en toets te druk.
  • Bygevoeg aanbeveling om ((..))inarray[((idx))]=val te verwyder.
  • Het 'n aanbeveling bygevoeg vir die aaneenskakeling van dubbele hakies in rekenkundige kontekste.
  • Het 'n aanbeveling bygevoeg om hakies in die uitdrukking a[(x+1)]=val te verwyder.

Bron: opennet.ru

Voeg 'n opmerking