A necessidade

Os bugs são uma realidade no desenvolvimento de software. Quanto mais tarde no ciclo de vida de desenvolvimento for encontrado um bug, maior será o custo para corrigi-lo. Se o defeito for detectado após a implantação, os clientes serão afetados e os desenvolvedores gastarão mais tempo para replicar o problema e liberar uma correção. Esse processo de bug/implantação/análise/correção é demorado e caro.

A ideia

Determinados padrões na base do código do projeto de software têm um risco mais elevado de introduzir bugs. Esses padrões podem ser aprendidos por um algoritmo de aprendizado de classificação para prever o potencial de um arquivo ter bug. Dessa forma é possível descobrir um defeito com mais rapidez, o que minimiza o custo das correções de bug.

A solução

Os modelos de classificação personalizados são criados para projetos do GitHub com base nos metadados associados a confirmações históricas. Quando o Code Defect AI descobre novas confirmações dos desenvolvedores, ele prevê se algum arquivo da confirmação corre risco de ter defeitos. A lógica por trás da previsão é apresentada usando LIME (Local Interpretable Model-Agnostic Explanations) para que os desenvolvedores possam dar crédito à previsão e aprender com ela.

Detalhes técnicos da experiência Code Defect AI

O treinamento supervisionado em machine learning permite que algoritmos prevejam uma saída com base em exemplos históricos de pares de entrada/saída, ou seja, dados rotulados. O aprendizado supervisionado é designado como um problema de classificação quando a variável de saída é uma variável discreta. Determinados padrões na base do código do projeto de software têm um risco mais elevado de introduzir bugs. Por exemplo, se um novo desenvolvedor fizer alterações em um arquivo que historicamente tem uma maior incidência de bugs, uma confirmação envolverá arquivos de vários diretórios ou a atualização de código será distribuída entre várias regiões no arquivo. Esses padrões podem ser aprendidos por um algoritmo de aprendizado de classificação para prever o potencial de bug em uma confirmação. Isso permite usar a abordagem shift-left de detecção de defeitos, minimizando assim o custo da correção.

Foram criados três modelos de classificação personalizados para três projetos do GitHub com base nos metadados associados a confirmações históricas. Os dados rotulados para treinar o modelo foram criados usando os metadados coletados do repositório do GitHub. Quando o Code Defect AI descobre novas confirmações dos desenvolvedores, obtém os metadados de cada uma delas e os arquivos na confirmação. Em seguida, ele prevê se algum dos arquivos na confirmação corre o risco de ter um bug usando o modelo específico do projeto. Os modelos tradicionais de machine learning são caixas pretas, e a lógica por trás da previsão do modelo não está disponível. Apresentamos a lógica por trás da previsão usando LIME (Local Interpretable Model-Agnostic Explanations) para que os usuários desenvolvam maior confiança na previsão.

Recursos:

Projetos relacionados ao Code Defect AI

Procure mais projetos

Explore as possibilidades da IA

Concretize a inteligência artificial em seus negócios hoje mesmo.