- Code Search: 구글이 이용하는 코드 브라우징 및 검색 도구로, 프론트엔드 UI와 다양한 백엔드 요소로 이루어져 있다.
- 클릭 한 번으로 다음 (예상) 질문에 답해주기가 Code Search 개발 원칙의 하나가 되었다.
- 지금은 다음과 같은 질문들에 클릭 한두 번으로 답해주는 수준에 이르렀다.
- 이 심볼은 어디에 정의되어 있는가?
- 이건 어디서 사용되는가?
- 이 심볼은 어떻게 인클루드하나?
- 이 코드는 언제 코드베이스에 추가되었나?
- 전체적으로 CPU 사이클을 얼마나 소모하나?
- 타이핑을 시작하면 제안 기능이 작동하여 개발자가 파일, 심볼, 디렉터리로 빠르게 찾아 들어갈 수 있다. 더 복잡한 쓰임새를 보여줄 때는 코드 스니펫이 포함된 결과 페이지를 보여준다.
- Code Search는 Piper와도 통합되어 있어서 파일의 변경 이력도 보여준다. 파일의 이전 버전을 확인할 수 있고, 어디가 변경되었는지, 누가 작성했는지 확인할 수 있다. 또한 코드 리뷰 도구인 Critique로 점프하거나 다른 버전과 비교하거나, 원한다면 전통적인 blame 뷰도 확인할 수 있다. 디렉터리 뷰에서는 지워진 파일들도 보여준다.
- 코드의 의도를 확인하기 위해 사용한다.
- 결과에 랭킹을 매겨 보여주고 표현력 좋은 질의어를 제공한다.
- Code Search 사용량의 약 1/4는 전통적인 파일 브라우징에 쓰인다. '코드베이스의 이 부분이 무슨 일을 하는가?'라는 질문에 답하는 것이라 볼 수 있따.
- 약 1/3을 차지하는 쓰임은 다른 사람들이 어떻게 썼는지를 보는 것이다.
- 코드가 '무엇을'하는가와 연관된 쓰임인데, 개발자들이 코드가 '왜' 기대와 다르게 동작하는가와 관련해 더 구체적으로 질의할 수 있다.
- Code Search 사용량의 약 16%는 '이 코드가 왜 추가되었나?' 혹은 '왜 이런 식으로 동작하지?'의 답을 찾는 것이다.
- Code Search 사용량의 약 8%는 특정 코드 조각을 누가 언제 추가했는지를 찾는 데 쓰인다.
- 구글의 코드베이스가 너무 거대해서 코드베이스 전체를 로컬로 복사하는 게 불가능하기 때문이다.
- 로컬에서 감당할 수 있는 규모라 해도 로컬 검색과 상호참조 인덱스를 생성하느라 IDE 구동 시간이 느려져서 개발자 생산성을 떨어뜨린다.
- 검색 인덱스는 바로 갱신되지만, 상호참조 인덱스에는 그보다 늦게 반영되어 개발자들이 드물지만 반복적으로 문제를 겪곤 한다.
- 코드베이스 전체에서 최신 코드를 정확하게 브라우징할 수 있다면 재사용할 라이브러리나 복사해서 쓸 좋은 예시 코드를 찾기가 매우 쉽다.
- Code Search 웹 UI는 아무런 설정(예: 프로젝트 설정, 빌드 환경) 없이도 이용할 수 있다. 따라서 어디에서 등장하는 코드든 상관없이 매우 쉽고 빠르게 찾아 검토할 수 있다.
- 코드상의 의존성을 놓칠 일이 없어진다.
- IDE가 아니기 때문에 편집이 아닌 코드 탐색과 이해에 사용자 경험을 최적화할 수 있다(키보드 단축키, 메뉴, 마우스 클릭, 화면 공간 활용 등).
- 다른 도구 제작자들이 결과를 보여줄 UI를 따로 만들지 않아도 되며, 별달리 홍보하지 않아도 모든 개발자가 결과를 볼 수 있다.
- 코드랩(codelab)이나 다른 문서자료에서도 API, 예시, 구현 코드를 참조하는 경우가 많다.
- Code Search는 검색, 상호참조, 구문 강조 기능을 API로 제공하여 다른 도구 개발자가 가져다 쓸 수 있다.