Seu estilo de programar é quase tão único quanto uma impressão digital

Pesquisadores de quatro universidades desenvolveram uma metodologia capaz de identificar os responsáveis por um código-fonte com taxa de acerto de 95%

Com tempo e prática, programadores tendem a desenvolver suas próprias manias e particularidades. Mas o jeito como eles programam é ainda mais único do que pode parecer. Segundo uma pesquisa elaborada por especialistas das Universidades Drexel, de Maryland, de Goettingen e Princeton, a forma com que códigos são escritos é praticamente uma “impressão digital” – que pode inclusive ser usada para identificar quem é o responsável pelo arquivo.

Os pesquisadores por trás do estudo conseguiram criar uma espécie de “estilômetro” de programação, nas palavras do site IT World. Em testes, o sistema foi capaz de determinar, com grau de precisão de 95%, os autores de diferentes códigos-fonte, aprendendo com base nos padrões usados por programadores e apelando até para processamento de linguagem natural.

A avaliação foi feita com base em dados públicos das edições de 2008 a 2014 do Code Jam, uma competição de programação organizada anualmente pelo Google. Foram analisados arquivos de código em C++ produzidos por mais de 100 mil participantes, que precisaram desenvolver soluções para diferentes problemas apresentados durante os eventos.

Os especialistas primeiro estudaram amostras referentes a um problema. Então, com base no que aprenderam nessa “análise de big data”, partiram para identificar partes de código relacionadas a outras soluções. O sistema obteve a impressionante taxa de sucesso de 92% quando precisou classificar “mais de 170 autores mesmo com apenas cinco arquivos por pessoa”, de acordo com o estudo – e foi ainda melhor, batendo os 95%, quando mais documentos do tipo (oito), referentes a mais autores (250), foram analisados.

Para chegar a esse grau de exatidão, o “estilômetro” analisa pontos óbvios, como o formato do código e os elementos preferidos pelos programadores. Mas não só eles. Os pesquisadores também apelam para um conceito novo que desenvolveram: as “árvores abstratas de sintaxe”, ou “abstract syntax trees” no termo original. Elas identificam as construções de linguagem mais usadas por diferentes autores, como o costume de usar “funções incomumente longas ou sequências compridas de atribuições”, entre outras particularidades.

A metodologia, no entanto, não é perfeita, e não só pelos 5% faltantes na taxa de sucesso. Segundo a pesquisa, o sistema ainda se confunde com linhas extras adicionadas a um código-fonte – o que até pode ser considerado trivial, visto que não é difícil detectá-las manualmente. Mas, além disso, o método também não é capaz de identificar farsas como um caso em que o arquivo foi escrito por um autor diferente do informado.

Mesmo assim, o avanço não deixa de ter sua utilidade. O próprio estudo afirma que uma ferramenta que encontra os autores dos códigos-fonte pode ser útil na hora de encontrar o criador de um malware, por exemplo. Ela também pode ter sua utilidade na investigação de um caso de plágio, entre outras possibilidades – mas, por ora, apenas envolvendo C++. Se tiver interesse, o estudo completo (em inglês e PDF) está disponível aqui.

Clique para abrir o link no navegador