Sobre el proyecto

ShellCheck es una herramienta de análisis estático para scripts bash/sh, liberado bajo la licencia GNU GPLv3. Escanea scripts y informa de advertencias y sugerencias en lugar de ejecutarlos. Los objetivos declarados incluyen aclarar problemas de sintaxis para principiantes que producen errores de shell crípticos, problemas semánticos de nivel intermedio que hacen que los shells se comporten de manera contraintuitiva y casos especiales o puntos críticos que pueden romper scripts que funcionan correctamente. El README documenta una amplia galería de categorías de problemas detectados: problemas de citación (variables no citadas, expansión de tilde citada, comillas literales en variables, trampas expandidas prematuramente), errores en condiciones (expresiones de prueba constantes, espacios faltantes, expresiones regulares citadas en =~, operadores [ ] no compatibles), comandos frecuentemente mal utilizados (patrones en contextos de expresiones regulares, redirección de sudo, uso incorrecto de exec, precedencia implícita de find), errores de sintaxis para principiantes (espacios alrededor de = en asignaciones, matrices separadas por comas, else if), sugerencias de estilo (cat inútil, backticks vs $(), bloques de redirección), errores de datos y tipos (asignación de matrices a cadenas, discrepancias en el número de argumentos de printf, asignaciones en subshells), preocupaciones de robustez (rm catastrófico, patrones que podrían convertirse en opciones, inyección de shell en find -exec), y advertencias de portabilidad vinculadas al shebang, similares a checkbashisms. Las opciones de uso descritas incluyen pegar scripts en shellcheck.net, ejecutar `shellcheck yourscript` en una terminal, integraciones con editores (Vim mediante ALE/Neomake/Syntastic, Emacs mediante Flycheck/Flymake, Sublime mediante SublimeLinter, Pulsar, VSCode y compatibilidad GCC para otros editores), e inclusión en suites de construcción o pruebas usando códigos de salida, con ejemplos para Makefiles y Travis CI. El README menciona la disponibilidad preinstalada en servicios como Travis CI, Codacy, Code Climate, Code Factor, CircleCI, GitHub Actions (solo Linux), Trunk Code Quality y CodeRabbit, y recomienda fijar una versión específica para evitar interrupciones inesperadas en la construcción. Los formatos de salida incluyen texto legible por humanos con o sin colores ANSI, JSON, XML compatible con CheckStyle y advertencias compatibles con GCC, con documentación de integración en la wiki del proyecto. La instalación se cubre a través de muchos gestores de paquetes (Cabal, Stack, apt, pacman, emerge, yum, dnf, pkg, Homebrew, MacPorts, zypper, eopkg, Chocolatey, winget, scoop, conda-forge, Snap, Nix, Flox), imágenes de Docker (koalaman/shellcheck y shellcheck-alpine), binarios precompilados para Linux x86_64/armv6hf/aarch64, macOS aarch64/x86_64 y Windows x86, además de una configuración de hook pre-commit. La construcción desde el código fuente requiere Haskell y Cabal, con aproximadamente 2 GB de RAM notados para la compilación, y las pruebas se ejecutan mediante `cabal test`. Los problemas se pueden ignorar mediante variables de entorno, línea de comandos, individualmente o globalmente dentro de un archivo. Las contribuciones se aceptan como solicitudes de extracción de GitHub bajo GPLv3, y el README apunta a la wiki para descripciones detalladas de cada código de advertencia y a shfmt para formato, que ShellCheck no impone deliberadamente.