Se dio a conocer la disponibilidad de la nueva versión de ShellCheck 0.9, un analizador estático para scripts de shell el cual es una excelente herramienta para el análisis de código.
Para quienes desconocen de ShellCheck deben saber que este es una herramienta de análisis estático que muestra advertencias y sugerencias sobre códigos incorrectos en los scripts de shell de bash/sh.
Se puede usar de varias maneras: desde la web pegando su script de shell en un editor en línea o alternativamente, puede ser instalarlo en su sistema y ejecutarlo desde el terminal, integrarlo con su editor de texto, así como en su compilación o suites de prueba.
Hay tres cosas que ShellCheck hace principalmente:
- Señala y explica los problemas típicos de sintaxis de los principiantes que hacen que un shell dé mensajes de error crípticos.
- Señala y explica los problemas semánticos típicos de nivel intermedio que hacen que una shell se comporte de forma extraña.
- También señala advertencias sutiles, que pueden hacer que un script avanzado que de otra manera funcione, falle en circunstancias futuras.
Además, admite la salida de recomendaciones para mejorar el estilo del código, eliminar problemas de portabilidad y mejorar la confiabilidad de los scripts. Por ejemplo, en lugar de «echo $[1+2]» se sugerirá usar la sintaxis «$((…))», la construcción ‘rm -rf «$STEAMROOT/»*’ se marcará como no segura y capaz de eliminar el directorio raíz si la variable no está llena $ STEAMROOT y usar «echo {1..10}» se resaltará como incompatible con dash y sh.
Principales novedades de ShellCheck 0.9
La nueva versión de ShellCheck 0.9 llega con pocos cambios, de los cuales podemos destacar que se agregó una recomendación para eliminar ((..))inarray[((idx))]=val, asi como tambien que se agregó una advertencia sobre los comandos no disponibles.
Otro de los cambios que se destaca es que se agregó una advertencia de referencia inversa para ‘declarar x = 1 y = $ x’, ademas de que se agrego una advertencia agregada si $? se utiliza para emitir el código de retorno de echo, printf, [ ], [[ ]] y test.
Ademas de ello, tambien podremos encontrar que se agregó una recomendación para concatenar corchetes dobles en contextos aritméticos, asi como tambien que se agregó la recomendación de eliminar los paréntesis en la expresión a[(x+1)]=val.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.
¿Cómo instalar ShellCheck en Linux?
Si estás interesado en poder obtener esta gran utilidad, solo deberás abrir una terminal en tu sistema y teclear alguno de los siguientes comandos, acorde a tu distribución de Linux que estés utilizando.
Usuarios de Debian, Ubuntu y cualquier otra distribución derivada de estas, solo deben teclear en la terminal el siguiente comando:
sudo apt-get install shellcheck
Si son usuarios de RHEL, CentOS, Fedora o cualquier distribución derivada de estas, pueden realizar la instalación con:
sudo dnf instalar shellcheck
Para usuarios de Arch Linux, Antergos, Manjaro y derivados de Arch Linux, instalan la utilidad con:
sudo pacman -S shellcheck
Mientras que para los que son usuarios de openSUSE la instalación la realizan con:
sudo zypper in shellcheck
Si usan el editor de texto Atom, también puede usar ShellCheck dentro de la ventana de su editor sobre la marcha. Solo tienen que instalar los paquetes atom necesarios para ShellCheck:
apm install linter linter-shellcheck
ShellCheck también admite otros editores, como: Vim, Emacs, Sublime, etc. Pueden encontrar una lista completa en el siguiente enlace.
Uso básico de ShellCheck
Después de instalar los paquetes necesarios para ShellCheck en su sistema, pueden usarlos desde su terminal, tan solo deben escribir el siguiente comando:
shellcheck /ruta/a/archivo
Donde solo tienen que colocar la ruta con el nombre de archivo de su script de shell.
Usando ShellCheck en línea
También, puede usar ShellCheck en línea sin instalar nada en su sistema, por lo que solo deben hacer uso de su navegador web preferido y en el deberán dirigirse al siguiente enlace.
Aquí solo tienen que copiar los códigos de su shell script y se lees mostrará la salida de ShellCheck.