A empresa Intel publicou a versão 1.2 da ferramenta ControlFlag, que permite identificar erros e anomalias em textos-fonte, utilizando um sistema de aprendizado de máquina treinado em um grande volume de código existente. Ao contrário dos analisadores estáticos tradicionais, o ControlFlag não aplica regras prontas, que são difíceis de prever em todas as possíveis situações, mas baseia-se nas estatísticas de uso de várias construções linguísticas em um grande número de projetos existentes. O código do ControlFlag é escrito em C++ e é de código aberto sob a licença MIT.
A nova versão é notável pela implementação do suporte completo à detecção de anomalias e aprendizado baseado em padrões típicos de código para a linguagem C++. Nas versões anteriores, esse suporte era garantido para as linguagens C e PHP. O sistema é adequado para identificar diferentes tipos de problemas no código, desde a detecção de erros de digitação e combinações erradas de tipos até a identificação de anomalias em expressões condicionais 'if' e verificações ausentes de valores NULL em ponteiros. O sistema aprende construindo um modelo estatístico da base de código de projetos de código aberto nas linguagens C, C++ e PHP, publicados no GitHub e repositórios públicos semelhantes.
Na fase de aprendizado, o sistema identifica padrões típicos de construção de construções no código e constrói uma árvore sintática de relações entre esses padrões, refletindo o fluxo de execução do código do programa. No final, forma-se uma árvore de decisão de referência, que combina a experiência de desenvolvimento de todos os textos-fonte analisados. Para o código verificado, um processo semelhante de identificação de padrões é realizado, que é comparado com a árvore de decisão de referência. Grandes discrepâncias entre ramos vizinhos indicam a presença de uma anomalia no padrão verificado.

Fonte: opennet.ru
