ShellCheck 0.9 er tilgængelig, en statisk analysator til shell-scripts

Udgivelsen af ​​ShellCheck 0.9-projektet er blevet offentliggjort, der udvikler et system til statisk analyse af shell-scripts, der understøtter identifikation af fejl i scripts under hensyntagen til funktionerne bash, sh, ksh og dash. Projektkoden er skrevet i Haskell og distribueret under GPLv3-licensen. Komponenter leveres til integration med Vim, Emacs, VSCode, Sublime, Atom og forskellige rammer, der understøtter GCC-kompatibel fejlrapportering.

ShellCheck 0.9 er tilgængelig, en statisk analysator til shell-scripts

Det understøtter identifikation af både syntaksfejl i koden, som fører til, at fortolkeren viser en fejl på udførelsestidspunktet, og semantiske problemer, som skyldes, at udførelsen ikke afbrydes, men der opstår anomalier i scriptets adfærd. Analysatoren kan også identificere flaskehalse, ikke-oplagte problemer og faldgruber, der kan føre til fejl under visse omstændigheder.

Blandt klasserne af opdagede fejl kan vi notere problemer med at undslippe specialtegn og indramme dem i anførselstegn, fejl i betingede udtryk, forkert brug af kommandoer, problemer med at behandle tid og datoer og typiske syntaksfejl for begyndere. For eksempel fraværet af mellemrum ved sammenligning af "[[ $foo==0 ]]", tilstedeværelsen af ​​mellemrum "var = 42" eller indikationen af ​​$-symbolet ved tildeling af "$foo=42", brugen af ​​variabler uden anførselstegn "ekko $1", indikationen af ​​ekstra firkantede parenteser i "tr -cd '[a-zA-Z0-9]'",

Derudover understøtter det output af anbefalinger til forbedring af kodestil, eliminering af portabilitetsproblemer og forøgelse af scripts pålidelighed. For eksempel, i stedet for "ekko $[1+2]" vil det blive foreslået at bruge syntaksen "$((..))", konstruktionen 'rm -rf "$STEAMROOT/"*' vil blive markeret som usikker og i stand til at slette rodmappen, hvis variablen ikke er udfyldt $STEAMROOT, og brugen af ​​"echo {1..10}" vil blive fremhævet som inkompatibel med bindestreg og sh.

I den nye version:

  • Tilføjet advarsel for udtryk som 'local readonly foo'.
  • Tilføjet advarsel om utilgængelige kommandoer.
  • Tilføjet advarsel om backlinks til 'erklære x=1 y=$x'.
  • Tilføjet advarsel, hvis $? bruges til at udskrive returkoden for ekko, printf, [ ], [[ ]] og test.
  • Tilføjet anbefaling om at fjerne ((..))inarray[((idx))]=val.
  • Tilføjet en anbefaling til sammenkædning af dobbeltparenteser i aritmetiske sammenhænge.
  • Tilføjet en anbefaling om at fjerne parenteser i udtrykket a[(x+1)]=val.

Kilde: opennet.ru

Tilføj en kommentar