ShellCheck 0.9 està disponible, un analitzador estàtic per a scripts de shell

S'ha publicat el llançament del projecte ShellCheck 0.9, desenvolupant un sistema d'anàlisi estàtica dels scripts d'intèrpret d'ordres que admet la identificació d'errors en els scripts tenint en compte les característiques de bash, sh, ksh i dash. El codi del projecte està escrit en Haskell i es distribueix sota la llicència GPLv3. Es proporcionen components per a la integració amb Vim, Emacs, VSCode, Sublime, Atom i diversos marcs que admeten informes d'errors compatibles amb GCC.

ShellCheck 0.9 està disponible, un analitzador estàtic per a scripts de shell

Admet la identificació tant d'errors de sintaxi al codi, que fan que l'intèrpret mostri un error en el moment de l'execució, com de problemes semàntics, a causa dels quals l'execució no s'interromp, però es produeixen anomalies en el comportament de l'script. L'analitzador també pot identificar colls d'ampolla, problemes no evidents i inconvenients que poden provocar fallades en determinades circumstàncies.

Entre les classes d'errors detectats, podem destacar problemes per escapar de caràcters especials i emmarcar-los entre cometes, errors en expressions condicionals, ús incorrecte d'ordres, problemes de processament de temps i dates i errors de sintaxi típics per a principiants. Per exemple, l'absència d'espais en comparar “[[ $foo==0 ]]”, la presència d'espais “var = 42” o la indicació del símbol $ en assignar “$foo=42”, l'ús de variables sense cometes "eco $1", la indicació de claudàtors addicionals a "tr -cd '[a-zA-Z0-9]'",

A més, admet la sortida de recomanacions per millorar l'estil de codi, eliminar problemes de portabilitat i augmentar la fiabilitat dels scripts. Per exemple, en comptes de "eco $[1+2]" es proposarà utilitzar la sintaxi "$((..))", la construcció "rm -rf "$STEAMROOT/"*' es marcarà com a no segura. i capaç d'esborrar el directori arrel si la variable no s'omple $STEAMROOT, i l'ús de "eco {1..10}" es ressaltarà com a incompatible amb dash i sh.

En la nova versió:

  • S'ha afegit un avís per a expressions com "local readonly foo".
  • S'ha afegit un avís sobre comandes no disponibles.
  • S'ha afegit un avís sobre els enllaços d'entrada a "declare x=1 y=$x".
  • Avís afegit si $? s'utilitza per imprimir el codi de retorn de echo, printf, [ ], [[ ]] i test.
  • S'ha afegit una recomanació per eliminar ((..))inarray[((idx))]=val.
  • S'ha afegit una recomanació per concatenar parèntesis dobles en contextos aritmètics.
  • S'ha afegit una recomanació per eliminar els parèntesis de l'expressió a[(x+1)]=val.

Font: opennet.ru

Afegeix comentari