A análise estática orientada a semântica está sendo proposta por um grupo de pesquisadores como forma de garantir que os programas de conchas do Unix, Linux e MacOS sejam seguros, livres de insetos e trabalham conforme o esperado. No entanto, o esforço enfrenta desafios únicos, devido à “dinamicidade difundida” da concha e aos “comandos opacos e poliglotos”.
Os pesquisadores da Brown University, Stevens Institute of Technology, Rice University e UCLA defendem um artigo recém-publicado, “de Antef-to Just-in-time novamente: Análise estática para programas de shell da UNIX”. Os autores enfatizam que a programação da concha é tão prevalecente como sempre, mas é bastante complexa devido em parte à estrutura dos programas de conchas, ao uso de componentes opacos de software e às suas interações complexas com o ambiente mais amplo. Mesmo quando são extremamente cuidadosos, os desenvolvedores de shell descobrem bugs devastadores em seus programas apenas em tempo de execução. Na melhor das hipóteses, os programas de shell dão errado a falha na execução de uma tarefa de longa duração; Na pior das hipóteses, eles corrompem silenciosamente o ambiente de execução mais amplo, afetando os dados do usuário, modificando os arquivos do sistema e tornando inutilizáveis os sistemas inteiros, observa o papel. O artigo pergunta se os usuários da Shell podem desfrutar dos benefícios da análise estática orientada pela semântica antes da execução de seus programas, conforme oferecido pela maioria dos outros idiomas de produção? Esses benefícios se estenderiam aos usuários do Linux, os sistemas operacionais BSD (FreeBSD, OpenBSD e NetBSD), MacOS e em qualquer lugar em que o shell seja usado, incluindo contêineres e subsistema Windows para Linux.
O script de concha é muito comum, pois a concha continua sendo a cola que mantém os sistemas modernos unidos; As instalações modernas, como integração contínua e entrega contínua (IC/CD), são frequentemente escritas no Shell, disse o co-autor da Paper Nikos Vasilakis, da Brown University, em uma resposta por e-mail a perguntas. Outros ambientes populares usados para tarefas, como criar software, servir cargas de trabalho de aprendizado de máquina e provisionar a nuvem, são embalagens finas em torno de scripts, acrescentou Vasilakis. No entanto, a linguagem da Shell não se comporta como outros idiomas, disse ele. Isso deixa usuários inexperientes e experientes cometindo muitos erros, com esses erros tendendo a ser catastróficos. “E como a concha é um idioma antigo, falta muitas das instalações que esperamos nos idiomas modernos”, disse Vasilakis. “Além disso, o shell é usado para manipular programas em arquivos em sistemas ao vivo. Os erros podem causar corrupção de dados, interrupção de serviços, perda de dados irreversível e vazamento de informações sensíveis ao usuário.”