O Code Compass é um mecanismo de pesquisa contextual para pacotes de software desenvolvidos no Nokia Bell Labs. Ele sobrecarrega a reutilização do código, recomendando as melhores bibliotecas de software possíveis para o seu projeto de software específico. Veja por si mesmo:

O Code Compass está disponível como um site, uma API REST e como um plug-in IDE para o VSCODE.
Indexamos pacotes hospedados no NPM para JavaScript, Pypi para Python e Maven Central para Java.
Se você está procurando a ferramenta de compreensão de código de maneira semelhante, da Ericsson para explorar grandes bases de código, procure aqui. Além do nome, não há relacionamento (formal ou informal) entre esse projeto e este.
O desenvolvimento moderno de software é fundado na reutilização do código através de bibliotecas e estruturas de código aberto. Essas bibliotecas são publicadas em repositórios de pacotes de software, que estão crescendo a uma taxa exponencial. Ao criar melhores ferramentas de pesquisa de pacotes de software, pretendemos estimular mais reutilização de código e tornar os pacotes de software na "cauda longa" mais descobertos.
Uma introdução gentil ao porquê, o que e como o código Compass pode ser encontrado nesta postagem introdutória do blog.
O código Compass é um mecanismo de pesquisa contextual para pacotes de software.
O Code Compass difere de outros mecanismos de pesquisa de pacotes, pois você pode "semear" a pesquisa com nomes de bibliotecas que você já conhece ou usa. Chamamos essas "bibliotecas de contexto". O código Compass então usa essas bibliotecas de contexto para "ancorar" a pesquisa nessas pilhas de tecnologia que são mais relevantes para o seu código.
Ao usar a extensão do IDE do código do Visual Studio, não há necessidade de inserir manualmente as bibliotecas de contexto: o código Compass extrairá automaticamente as dependências de importação do arquivo de origem ativo para ancorar sua pesquisa.
Observe que o Code Compass nunca enviará seu código para o servidor. Somente os nomes dos módulos de terceiros importados no seu código são enviados.
O Code Compass usa aprendizado de máquina não supervisionado para aprender a agrupar pacotes de software semelhantes por seu contexto de uso, conforme determinado pela maneira como as bibliotecas são importadas ao lado de outras bibliotecas em grandes bases de código de código aberto.
Os pacotes de software são representados como vetores que chamamos de "vetores da biblioteca" por analogia com vetores de palavras. Assim como o Word2vec transforma palavras em vetores, analisando como as palavras co-ocorrem em grandes corpora de texto, nossa "importação2vec" transforma bibliotecas em vetores analisando como as instruções de importação co-ocorrem em grandes bases de código.
Você pode ler os detalhes em nosso artigo do MSR 2019. Material suplementar, incluindo incorporações de biblioteca treinadas para Java, JavaScript e Python estão disponíveis no Zenodo.
Como exemplo, para o Java, analisamos um grande número de projetos de código aberto no GitHub e bibliotecas no Maven Central e estudamos como as bibliotecas são importadas nesses projetos. Identificamos grandes clusters de projetos relacionados a estruturas da Web, computação em nuvem, serviços de rede e análise de big data. Projetos conhecidos como Apache Hadoop, Spark e Kafka foram todos agrupados na mesma região porque são comumente usados para apoiar a análise de big data.
Abaixo está uma visualização 3D (um gráfico de T-Sne) do espaço vetorial instruído para Java. Cada ponto representa uma biblioteca Java e os vários clusters coloridos correspondem a diferentes áreas de nicho que foram descobertas nos dados. Destacamos os nomes dos projetos Apache.

docs/ : Rest API Docs para o Código Compass Search Serviceplugins/vscode/ : Extensão do código do Visual Studio para integrar a bússola de código no IDEscripts/ : scripts de extração de dados para gerar co-ocorrências de importação da biblioteca do código-fontenbs/ : Jupyter Notebooks com modelos TensorFlow para treinar incorporações de bibliotecas a partir de dados de co-ocorrência de importaçãoO Code Compass é desenvolvido por uma equipe de pesquisa nas plataformas de aplicativos e laboratório de sistemas de software do Nokia Bell Labs.
Consulte os colaboradores para uma lista alfabética de colaboradores do Code Compass.
Se você deseja treinar incorporações para outros idiomas, dê uma olhada nos scripts no import2vec para ter uma idéia de quais dados são necessários.
Se você tiver sugestões de melhoria, feedback do usuário ou deseja relatar um bug, abra um problema neste repositório.
BSD3