Erros nas condições de contorno são a causa de muitos bugs no software. Esses erros acontecem quando, por exemplo, os desenvolvedores fazem uso de ‘<’ or ‘>’ nos casos em que deveriam ter usado ‘<=’ or ‘>=’. Erros nas condições de contorno costumam ser difíceis de encontrar e detectá-los manualmente pode consumir muito tempo para os desenvolvedores. Embora os pesquisadores venham propondo técnicas para lidar com erros nas fronteiras há muito tempo, a detecção automatizada de tais bugs ainda permanece um desafio. Conjecturamos que, para que uma ferramenta seja capaz de identificar com precisão erros nas condições de contorno, ela deverá ser capaz de capturar o contexto geral do código-fonte em análise.

Neste trabalho, propomos um modelo de aprendizagem profunda que aprende erros em condições de contorno e, posteriormente, é capaz de identificá-los em trechos de código não vistos. Treinamos e testamos um modelo em mais de 1,5 milhão de trechos de código, com e sem erros em diferentes condições de contorno.

Nosso modelo mostra uma precisão de 55% a 87%. O modelo também é capaz de detectar 24 dos 41 bugs do mundo real; no entanto, com uma alta taxa de falsos positivos. As ferramentas de linter de última geração existentes não são capazes de detectar nenhum dos bugs. Esperamos que este artigo possa abrir caminho para modelos de aprendizagem profunda que serão capazes de apoiar os desenvolvedores na detecção de erros nas condições de contorno.