Sabe aquele tipo de bug que fica escondido na sua cara, passa em todos os testes e quando você vai ver, está gerando centenas de falsos positivos? Pois é, passei exatamente por isso recentemente trabalhando no motor de análise estática do Ollanta.
Um de seus componentes o ollanta-scanner, de repente começou a acusar que qualquer chamada de função no código JavaScript era um perigoso eval(), não importava se era uma simples renderização de view ou configuração do sistema.
Fui investigar a fundo e o buraco era bem mais embaixo, envolvendo a forma como o binding Go da API do tree-sitter funciona. O problema não estava na query em si, mas em uma única chamada de método que faltava para avaliar os predicados semânticos.
O código compilava sem reclamar e os testes continuavam verdes porque só validavam o caminho feliz da detecção. Na prática, a ferramenta estava devolvendo todos os matches estruturais crus e ignorando completamente os filtros da regra.
Acabei escrevendo um artigo em meu blog pessoal https://scovl.github.io/2026/05/08/fixgo02/ detalhando toda essa investigação, que no fim das contas virou uma baita reflexão sobre design de APIs, o perigo do acoplamento temporal e aquele viés de confirmação clássico que temos ao esquecer de escrever testes negativos.
Se você trampa com #Go, #desenvolvimento de ferramentas, ou simplesmente curte ler um post-mortem sobre caça a #bugs que dão dor de cabeça, acho que vai gostar do texto.
#go #golang #desenvolvimento #development #developers #ast #cst #treesitter #postmortem







Qiita - 人気の記事