Análisis estático de código en scripts de Bash

Selection_006.png

Una de las opciones de las que dispone Bash es la opción -n, que hace un análisis sintáctico de un script y nos alerta de errores en nuestro script.

Muchas veces, cometemos errores que no son sintácticos, sino más bien por desconocimiento o despiste podemos escribir código que sintácticamente es correcto, pero la ejecución del mismo no es lo que realmente esperamos del mismo.

Una buena referencia sobre este tipo de errores, errores comunes que se cometen en la programación de scripts Bash es Bash Pitfalls. Dónde concretamente nos dan 44 ejemplos de errores comunes con su correspondiente explicación.

Pero también existe un servicio llamado ShellCheck que nos hace un análisis estático de nuestro script de forma automática. Éste es capaz de detectar errores en scripts o simples comandos. Aunque puedes correr el análisis de tu script desde la web de ShellCheck, también puedes bajarte y compilar ShellCode desde su repositorio de Github, en caso de que te sientas más cómodo de esta forma.

Algunas de las comprobaciones que ShellCheck hace son:

  • Unquoted globs for find/grep
  • Constant test expressions
  • Redirecting into source file
  • Globs in regex context
  • PS1 colors not in \[..\]
  • Prematurely terminated find -exec
  • Literal quotes in arguments
  • Assignment in subshells
  • Confusing time(1) for builtin
  • ~ in quotes
  • Single, quoted 'for' argument
  • Arithmetic truncation
  • Unused variables
  • Looping over ls output
  • Unquoted command expansion
  • Unicode quotes
  • Attempted redirection of stdout+stderr
  • Attempted indirect assignment
  • Attempted indirect reference
  • Variables in single quotes
  • Comparing numbers with < or >
  • Unsupported [ ] operators
  • Quoted =~ regex
  • Tautology due to spacing
  • Variable brace expansion (Bash)
  • Decimals arithmetics
  • Comma separated arrays
  • etc...

Sin duda alguna creo que es una herramienta para añadir a nuestra colección.