Experimentei uma ferramenta Dusk que foi open sourced hoje e um dos resultados me pegou de surpresa.
A Pituitary, feita para detectar quando a documentação, as especificações e o código deixam de concordar. Aponte para um repositório, ela indexa especificações e registros de decisão, sinaliza diferenças que contradizem algo que já foi aceito. Rodei com um diff de teste que claramente quebrou uma especificação existente.
Não falhou a checagem. Pensei que fosse um bug.
Não era. A ferramenta procura um comentário de justificativa perto da mudança, do tipo WHY, HACK, esse tipo de marcador. Se alguém já anotou a divergência como deliberada, ela segue por um caminho diferente do simples desvio acidental.
Esse é o corte real. Uma contradição e uma violação não são a mesma coisa aqui. A especificação diz uma coisa, o código diz outra—mesmo assim, é registrado em vez de falhar, se um humano já explicou a diferença.
Especificação escrita e indexada, código diverge, o diff passa pela checagem de check-doc-drift, contradição detectada, a ferramenta procura linhas próximas por esse marcador; desvios deliberados seguem por um caminho, os não explicados falham a build.
Só que ninguém verifica se esse marcador ainda significa algo. Nada impede alguém escrever WHY apenas para silenciar o alerta, nada verifica se a razão original por trás de um mais antigo ainda se mantém.
O que acontece com essa convenção em centenas de PRs por semana, quando ela passa a ficar entre uma regressão e uma passagem silenciosa? 👍
#dusk $DUSK @Dusk
A Pituitary, feita para detectar quando a documentação, as especificações e o código deixam de concordar. Aponte para um repositório, ela indexa especificações e registros de decisão, sinaliza diferenças que contradizem algo que já foi aceito. Rodei com um diff de teste que claramente quebrou uma especificação existente.
Não falhou a checagem. Pensei que fosse um bug.
Não era. A ferramenta procura um comentário de justificativa perto da mudança, do tipo WHY, HACK, esse tipo de marcador. Se alguém já anotou a divergência como deliberada, ela segue por um caminho diferente do simples desvio acidental.
Esse é o corte real. Uma contradição e uma violação não são a mesma coisa aqui. A especificação diz uma coisa, o código diz outra—mesmo assim, é registrado em vez de falhar, se um humano já explicou a diferença.
Especificação escrita e indexada, código diverge, o diff passa pela checagem de check-doc-drift, contradição detectada, a ferramenta procura linhas próximas por esse marcador; desvios deliberados seguem por um caminho, os não explicados falham a build.
Só que ninguém verifica se esse marcador ainda significa algo. Nada impede alguém escrever WHY apenas para silenciar o alerta, nada verifica se a razão original por trás de um mais antigo ainda se mantém.
O que acontece com essa convenção em centenas de PRs por semana, quando ela passa a ficar entre uma regressão e uma passagem silenciosa? 👍
#dusk $DUSK @Dusk
