Code Compass는 Nokia Bell Labs에서 개발 된 소프트웨어 패키지에 대한 상황에 맞는 검색 엔진입니다. 특정 소프트웨어 프로젝트에 가능한 최고의 소프트웨어 라이브러리를 추천하여 코드 재사용을 과급합니다. 직접보기 :

Code Compass는 웹 사이트, REST API 및 VSCODE의 IDE 플러그인으로 제공됩니다.
우리는 JavaScript의 경우 NPM에서 호스팅 된 패키지, Python 용 PYPI 및 Java의 경우 Maven Central을 색인합니다.
대형 코드베이스를 탐색하기 위해 Ericsson의 비슷한 이름으로 명명 된 코드 이해 도구를 찾고 있다면 여기를보십시오. 이름 외에도 해당 프로젝트 와이 프로젝트 사이에는 관계 (공식 또는 비공식)가 없습니다.
최신 소프트웨어 개발은 오픈 소스 라이브러리 및 프레임 워크를 통해 코드 재사용에 기반을두고 있습니다. 이 라이브러리는 소프트웨어 패키지 저장소에 게시되며 지수 비율로 성장하고 있습니다. 더 나은 소프트웨어 패키지 검색 도구를 구축함으로써 우리는 더 많은 코드 재사용을 자극하고 "긴 꼬리"에서 소프트웨어 패키지를 더 많이 발견 할 수 있도록하는 것을 목표로합니다.
코드 나침반의 이유, 무엇 및 방법에 대한 부드러운 소개는이 입문 블로그 게시물에서 찾을 수 있습니다.
Code Compass는 소프트웨어 패키지의 상황에 맞는 검색 엔진입니다.
코드 나침반은 이미 알고 있거나 사용하는 라이브러리 이름으로 검색을 "시드"할 수 있다는 점에서 다른 패키지 검색 엔진과 다릅니다. 우리는 이것을 "컨텍스트 라이브러리"라고 부릅니다. 코드 나침반은 이러한 컨텍스트 라이브러리를 사용하여 코드와 가장 관련이있는 기술 스택에서 검색을 "고정"합니다.
Visual Studio Code IDE Extension을 사용하는 경우 컨텍스트 라이브러리를 수동으로 입력 할 필요가 없습니다. 코드 나침반은 활성 소스 파일의 가져 오기 종속성을 자동으로 추출하여 검색을 고정합니다.
코드 나침반은 코드를 서버로 보내지 않습니다. 코드에서 가져온 타사 모듈의 이름 만 전송됩니다.
Code Compass는 감독되지 않은 머신 러닝을 사용하여 대규모 오픈 소스 코드베이스의 다른 라이브러리와 함께 라이브러리가 다른 라이브러리를 가져 오는 방법에 의해 결정된 바와 같이, 사용 상황에 따라 유사한 소프트웨어 패키지를 클러스터링하는 방법을 배웁니다.
소프트웨어 패키지는 단어 벡터와 유사하게 "라이브러리 벡터"라고 부르는 벡터로 표시됩니다. Word2Vec과 마찬가지로 Word2Vec은 큰 텍스트 Corpora에서 Word가 어떻게 발생하는지 분석하여 단어를 벡터로 바꾸는 것처럼, "Import2Vec"은 Grange 진술이 대형 코드베이스에서 어떻게 발생하는지 분석하여 라이브러리를 벡터로 전환합니다.
MSR 2019 논문의 세부 사항을 읽을 수 있습니다. Zenodo에서는 Java, JavaScript 및 Python을위한 훈련 된 도서관 임베딩을 포함한 보충 자료입니다.
예를 들어, Java의 경우 우리는 Maven Central의 Github 및 라이브러리에 대한 수많은 오픈 소스 프로젝트를 살펴보고 이러한 프로젝트에서 도서관이 어떻게 가져 오는지 연구했습니다. 웹 프레임 워크, 클라우드 컴퓨팅, 네트워크 서비스 및 빅 데이터 분석과 관련된 대규모 프로젝트 클러스터를 확인했습니다. Apache Hadoop, Spark 및 Kafka와 같은 잘 알려진 프로젝트는 모두 빅 데이터 분석을 지원하는 데 일반적으로 사용되기 때문에 동일한 지역으로 클러스터링되었습니다.
아래는 Java를위한 학습 된 벡터 공간의 3D 시각화 (t-sne 플롯)입니다. 각 점은 Java 라이브러리를 나타내고 다양한 색상 클러스터는 데이터에서 발견 된 다른 틈새 영역에 해당합니다. 우리는 Apache 프로젝트의 이름을 강조했습니다.

docs/ : 코드 나침반 검색 서비스에 대한 API 문서를 휴식plugins/vscode/ : Code Compass를 IDE에 통합하기위한 Visual Studio Code Extensionscripts/ : 소스 코드에서 도서관 가져 오기를 생성하기위한 데이터 추출 스크립트nbs/ : 수입 동시 발생 데이터에서 라이브러리 임베딩을 훈련시키기위한 텐서 플로 모델이 포함 된 Jupyter 노트북Code Compass는 Nokia Bell Labs의 애플리케이션 플랫폼 및 소프트웨어 시스템 실험실에서 연구팀에 의해 개발되었습니다.
Code Compass에 기여한 알파시 목록은 기고자를 참조하십시오.
다른 언어에 대한 임베딩을 훈련 시키려면 import2vec 의 스크립트를 살펴보고 어떤 데이터가 필요한지에 대한 아이디어를 얻으십시오.
개선, 사용자 피드백에 대한 제안이 있거나 버그를보고하려면이 저장소에서 문제를여십시오.
BSD3