Vous êtes sur la page 1sur 4

O método proposto para representar trechos de código na

Stack Overflow utiliza tanto o conteúdo do código como as


características sociais do código (reputação de utilizadores,
relacionamento entre eles, etc), e como chegamos à detecção
de código inseguro com base nessa representação de
relacionamentos.

Na Stack Overflow pode ser partilhado código de várias


linguagens de programação diferentes, mas este trabalho
foca-se na linguagem Java para desenvolvimento em Android,
por ser uma das linguagens mais populares, porque dispositivos
móveis têm cada vez mais utilizadores, mais que os
computadores, e por haver milhões de aplicações criadas em
grande parte por programadores inexperientes ou
sobrecarregados devido à sua natureza open-source, e
portanto que muitas vezes negligenciam a parte da segurança.

A ideia é começar por extrair o código das publicações na Stack


Overflow, que estão entre tags HTML de code, e desse código
extrair palavras-chave, incluindo nomes de funções, métodos,
API’s, etc, portanto uma representação do conteúdo do código.

Para além disso também consideramos as características sociais


em forma de relações, como por exemplo:

1. Verificar se uma dada questão tem algum trecho de código


incluído
2. Verificar se uma dada resposta tem algum trecho de código
incluído
3. Verificar se um determinado trecho de código contém uma
palavra-chave específica, que esteja relacionada com código
potencialmente malicioso.
4. Verificar qual o utilizador que publicou uma determinada
questão
5. Verificar qual o utilizador que publicou uma determinada
resposta
6. Verificar qual a questão a que uma dada resposta responde.
7. Na Stack Overflow os utilizadores recebem reputação em
forma de medalhas em função do número de respostas,
verificar quais os medalhas de um dado utilizador.

Construção da Rede de Informação Heterogénea (HIN). A rede


de informação heterogénea é capaz de compor os diferentes
tipos de entidades (utilizadores, medalhas, questões, respostas,
código e palavras-chave) e as relações entre estes, de forma a
representar os trechos de código na Stack Overflow.
Para colocar isto numa linguagem máquina utilizamos o
conceito de meta-path (meta-caminho), que define uma
composição de relações entre entidades.

Através dos meta-caminhos conseguimos caracterizar as


relações entre diferentes trechos de código, com perspectivas
diferentes dependendo do meta-caminho usado.

Por exemplo o PID 2 deduz que 2 trechos de código podem


estar relacionados porque vieram de respostas dadas pelo
mesmo utilizador. Enquanto que o PID 6 deduz que 2 trechos
de código podem estar relacionados porque estão incluídos nas
respostas dadas por utilizadores com a mesma reputação

De forma a reduzir o elevado custo de processamento e espaço,


é proposto um modelo de rede embebida chamado
snippet2vec para a aprendizagem da representação de baixo
nível da rede de informação heterogénea, que faz uso da lógica
de outro modelo que é o metapath2vec que contempla um só
meta-caminho, mas como temos múltiplos meta-caminhos
pode não ser viável e portanto foi criado o snippet2vec que
introduz um algoritmo mais avançado baseado no
metapath2vec mas não vou falar dele porque ainda é complexo
e não se apresenta em 5 minutos. Mas resumindo, no
snippet2vec dado um conjunto de diferentes esquemas de
meta-caminhos é proposta uma estratégia de caminhar
aleatoriamente pelos caminhos de forma a mapear o conceito
palavra-contexto de um excerto de código na rede de
informação heterogénea, e depois o modelo skip-gram para
uma eficiente aprendizagem de representação de nodes na
rede de informação heterogénea.

Dados conjuntos diferentes de esquemas de meta-caminhos,


representações de diferentes tipos de nodes (ie. Trechos de
código) vão ser aprendidas com o algoritmo snippet2vec. Para
agregar estas representações diferentes é construído um
classificador multi-view fusion (fusão de multiplas vistas) para
aprender a importância destas representações e portanto fazer
previsões (se são inseguras ou não).

Vous aimerez peut-être aussi