A Intel lançou o código-fonte do ControlFlag, um sistema de aprendizado de máquina para detectar erros no código

Intel revelou através de um anúncio desenvolvimentos relacionados ao projeto de pesquisa ControlFlag, que se destina a criar um sistema de aprendizado de máquina para melhorar a qualidade do código.

A ferramenta foi lançada sob a licença MIT e se destaca por permitir, a partir de um modelo treinado em uma grande quantidade de código existente, identificar diversos erros e anomalias em textos fonte escritos em linguagens de alto nível como C / C ++.

O sistema é adequado para detectar vários tipos de problemas em seu código, desde a detecção de erros tipográficos e combinações de tipos incorretos até a identificação de verificações ausentes para valores nulos em ponteiros e problemas de memória.

O sistema aprende por si mesmo ao construir um modelo estatístico do conjunto existente de código-fonte aberto publicado no GitHub e repositórios públicos semelhantes. Na fase de treinamento, o sistema determina modelos típicos para construir estruturas no código e construir uma árvore sintática de conexões entre esses modelos, refletindo o fluxo de execução do código no programa. Como resultado, uma árvore de decisão de referência é formada, combinando a experiência de desenvolvimento de todos os textos fonte analisados.

Para tornar o ControlFlag mais disponível para a comunidade mais ampla de desenvolvimento de software, a Intel tem o prazer de anunciar que o ControlFlag agora é um código aberto e pode ser acessado em https://github.com/IntelLabs/control-flag. Temos o prazer de dar aos desenvolvedores a oportunidade de desenvolver nele e ver o que mais pode ser feito com essa tecnologia extremamente valiosa e inovadora.

Desde a sua introdução, o ControlFlag foi testado em software de nível de produção e em sistemas de software de código aberto amplamente usados. Por exemplo, no ano passado, a ControlFlag identificou uma anomalia de código no URL do cliente (cURL), um projeto de software de computador que transfere dados usando vários protocolos de rede mais de XNUMX bilhão de vezes por dia. Depois de relatar a anomalia à equipe cURL, eles concordaram com as descobertas da ControlFlag e, posteriormente, corrigiram seu código.

Um processo semelhante de definição de padrões é realizado para o código em teste, que é comparado a uma árvore de decisão de referência. Grandes discrepâncias com ramos adjacentes indicam uma anomalia no padrão que está sendo verificado. O sistema também permite não só identificar um erro no template, mas também sugerir uma solução. Por exemplo, ao analisar o fragmento de código "if (x = 7) y = x;" o sistema determinou que a construção "variável == número" é geralmente usada na declaração "se" para comparar valores numéricos, portanto, a indicação "variável = número" na declaração "se" é provavelmente causada por um erro tipográfico.

Analisadores estáticos tradicionais detectariam tal erro, mas, ao contrário deles, ControlFlag não aplica regras out-of-the-box, nas quais é difícil prever todas as opções possíveis, mas sim começa a partir das estatísticas de uso de todos os tipos de construções em um grande número de projetos.

Como um experimento, ao usar ControlFlag no código-fonte do utilitário cURL, muitas vezes é citado como exemplo de código comprovado de alta qualidade, analisadores estáticos revelou um bug inadvertido ao usar o elemento de estrutura "s-> keepon", que tinha um tipo numérico, mas foi comparado ao valor booleano TRUE.

No código OpenSSL, além do problema mencionado acima com "(s1 == NULL) ∧ (s2 == NULL)", também foram detectadas anomalias nas expressões "(-2 == rv)" que era pelo menos um erro de digitação.

Também é relatado que o uso de ControlFlag tornou possível identificar várias centenas de bugs em software proprietário não específico, levando a travamentos e problemas de memória.

Finalmente se você estiver interessado em saber mais sobre isso, você pode verificar os detalhes no link a seguir. Já os interessados ​​em ver o código-fonte, obtê-lo ou cloná-lo em um repositório, podem fazê-lo em o seguinte link.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: AB Internet Networks 2008 SL
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.