Disponível o ShellCheck 0.9, um analisador estático para scripts shell.

Foi publicado o lançamento do projeto ShellCheck 0.9, que desenvolve um sistema de análise estática de scripts shell, suportando a identificação de erros em scripts com base nas particularidades do bash, sh, ksh e dash. O código do projeto é escrito em Haskell e é distribuído sob a licença GPLv3. Componentes para integração com Vim, Emacs, VSCode, Sublime, Atom e várias IDEs que suportam a saída de informações de erro compatível com GCC são fornecidos.

Disponível o ShellCheck 0.9, um analisador estático para scripts shell.

Suporta a identificação de erros no código, tanto erros de sintaxe que levariam o interpretador a gerar um erro em tempo de execução, quanto problemas semânticos, onde a execução não é interrompida, mas há anomalias no comportamento do script. O analisador também pode identificar gargalos, problemas não evidentes e armadilhas que podem levar a falhas em determinadas circunstâncias.

Entre as categorias de erros identificados, podemos destacar problemas com a escape de caracteres especiais e a delimitação entre aspas, erros em expressões condicionais, uso incorreto de comandos, problemas de manipulação de tempo e data, e erros de sintaxe comuns entre novatos. Por exemplo, a falta de espaços ao comparar "[[ $foo==0 ]]", a presença de espaços em "var = 42" ou a atribuição de valor ao usar o símbolo $ como em "$foo=42", uso de variáveis sem entre aspas como em "echo $1", e a inclusão de colchetes desnecessários em "tr -cd '[a-zA-Z0-9]'".

Além disso, é suportada a exibição de recomendações para melhorar o estilo do código, resolver problemas de portabilidade e aumentar a confiabilidade da execução dos scripts. Por exemplo, em vez de "echo $[1+2]" será sugerido usar a sintaxe "$((..))", a construção ‘rm -rf "$STEAMROOT/"*’ será marcada como insegura e capaz de remover o diretório raiz se a variável $STEAMROOT não estiver preenchida, e o uso de "echo {1..10}" será destacado como incompatível com dash e sh.

Na nova versão:

  • Foi adicionada uma advertência para expressões do tipo ‘local readonly foo’.
  • Foi adicionada uma advertência sobre a inacessibilidade de comandos.
  • Foi adicionada uma advertência sobre referências circulares em ‘declare x=1 y=$x’.
  • Foi adicionada uma advertência se $? for usado para retornar o código de saída de echo, printf, [ ], [[ ]] e test.
  • Foi adicionada uma recomendação para remover ((..))inarray[((idx))]=val.
  • Foi adicionada uma recomendação para combinar colchetes duplos em contextos aritméticos.
  • Foi adicionada uma recomendação para remover parênteses na expressão a[(x+1)]=val.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster