GitHub의 코드 탐색 정보
코드 탐색을 사용하면 해당 엔터티에 대한 참조에 해당하는 명명된 엔터티의 정의와 엔터티 정의에 해당하는 참조를 표시하고 연결하여 코드를 읽고 탐색하고 이해할 수 있습니다.
코드 탐색은 오픈 소스 tree-sitter
라이브러리를 사용합니다. 지원되는 언어 및 탐색 전략은 다음과 같습니다.
언어 | 검색 기반 코드 탐색 | 정확한 코드 탐색 |
---|---|---|
Bash | ||
C | ||
C# | ||
C++ | ||
CodeQL | ||
Elixir | ||
Go | ||
JSX | ||
Java | ||
JavaScript | ||
Lua | ||
PHP | ||
프로토콜 버퍼 | ||
Python | ||
R | ||
Ruby | ||
Rust | ||
Scala | ||
Starlark | ||
Swift | ||
TypeScript |
코드 탐색을 사용하도록 리포지토리에서 아무것도 구성할 필요가 없습니다. 모든 리포지토리에서 이러한 지원되는 언어에 대한 검색 기반 및 정확한 코드 탐색 정보를 자동으로 추출하고 프로그래밍 언어가 둘 모두에서 지원되는 경우 지원되는 두 코드 탐색 방법 간에 전환할 수 있습니다.
GitHub은(는) 오픈 소스 tree-sitter
및 stack-graphs
라이브러리를 기반으로 두 가지 코드 탐색 방법을 개발했습니다.
- 검색 기반 - 리포지토리 전체의 모든 정의 및 참조를 검색하여 지정된 이름의 엔터티를 찾습니다.
- 정확 - 코드의 지정된 지점에서 클래스, 함수 및 가져온 정의 집합을 기반으로 정의 및 참조를 확인합니다.
이러한 접근 방식에 대한 자세한 내용은 “정확 및 검색 기반 탐색”을 참조하세요.
이후 릴리스에서는 더 많은 언어에 대해 정확한 코드 탐색을 추가할 예정이며, 이는 보다 정확한 결과를 제공할 수 있는 코드 탐색 방법입니다.__
바로 가기 키를 사용하여 코드 파일 내에서 탐색할 수 있습니다. 자세한 내용은 "바로 가기 키"을(를) 참조하세요.
기호 창 사용
이제 기호 창을 사용하여 코드의 함수 또는 클래스와 같은 기호를 빠르게 보고 탐색할 수 있습니다. 단일 파일, 리포지토리의 모든 파일 또는 GitHub의 모든 공용 리포지토리에서 기호를 검색할 수 있습니다.
기호 검색은 코드 검색의 기능입니다. 자세한 내용은 "GitHub 코드 검색 구문 이해"을(를) 참조하세요.
-
리포지토리를 선택한 다음, 기호가 포함된 파일로 이동합니다.
-
기호 창을 표시하려면 파일 콘텐츠 위에서 을(를) 클릭합니다.
또는 파일에서 적합한 기호를 클릭하여 기호 창을 열 수 있습니다. 클릭 가능한 기호는 커서를 올릴때 노란색으로 강조 표시됩니다.
-
기호 창 또는 파일 자체 내에서 찾으려는 기호를 클릭합니다.
- 리포지토리 전체에서 기호를 검색하려면 기호 창에서 이 리포지토리에서 이 기호 검색을 클릭합니다. GitHub의 모든 리포지토리에서 기호를 검색하려면 모든 리포지토리를 클릭합니다.
-
기호에 대한 참조 사이를 이동하려면 또는 을 클릭합니다.
-
기호에 대한 특정 참조로 이동하려면 이 파일 아래의 기호 검색 결과를 클릭합니다.
-
특정 기호 검색을 종료하려면 모든 기호를 클릭합니다.
함수 또는 메서드의 정의로 이동
파일에서 함수 또는 메서드 호출을 클릭하여 동일한 리포지토리 내에서 함수 또는 메서드 정의로 이동할 수 있습니다.
함수 또는 메서드의 모든 참조 찾기
파일에서 함수 또는 메서드 호출을 클릭하여 동일한 리포지토리 내에서 함수 또는 메서드에 대한 모든 참조를 찾을 수 있습니다.
정확 및 검색 기반 탐색
GitHub에서 지원되는 특정 언어는 정확한 코드 탐색에 액세스할 수 있습니다. 이 언어는 코드의 지정된 지점에 표시되는 클래스, 함수 및 가져온 정의 집합을 기반으로 정의 및 참조를 확인하는 알고리즘(오픈 소스 stack-graphs
라이브러리 기반)을 사용합니다.__ 다른 언어는 검색 기반 코드 탐색을 사용하여 리포지토리 전체의 모든 정의와 참조를 검색하여 지정된 이름의 엔터티를 찾습니다.__ 두 전략 모두 결과를 찾는 데 효과적이며 둘 다 주석과 같은 부적절한 결과를 방지할 수 있지만, 정확한 코드 탐색은 특히 리포지토리에 동일한 이름의 여러 메서드 또는 함수가 포함된 경우 보다 정확한 결과를 제공할 수 있습니다.
정확한 코드 탐색 쿼리에서 예상한 결과가 표시되지 않으면 표시된 팝오버에서 “검색 기반” 링크를 클릭하여 검색 기반 탐색을 수행할 수 있습니다.
정확한 결과가 부정확한 것으로 표시되면 지원 요청을 제출할 수 있습니다.
리포지토리 간 정확한 코드 탐색
교차 리포지토리 코드 탐색은 정확한 코드 탐색 및 종속성 그래프가 지원되는 언어에 사용할 수 있습니다. 자세한 내용은 "종속성 그래프 정보"을(를) 참조하세요. 교차 리포지토리 코드 탐색을 사용하면 해당 종속성이 GitHub에서 호스트하는 리포지토리인 경우 프로젝트에서 가져온 종속성에 정의된 함수 또는 변수의 정의로 점프할 수 있습니다. 교차 리포지토리 코드 탐색은 현재 모든 참조 찾기 요청을 지원하지 않습니다.
코드 탐색 문제 해결
코드 탐색을 사용하도록 설정했지만 함수 및 메서드 정의에 대한 링크가 표시되지 않는 경우:
- 코드 탐색은 활성 분기에 대해서만 작동합니다. 분기로 푸시하고 다시 시도합니다.
- 코드 탐색은 파일이 100,000개 미만인 리포지토리에서만 작동합니다.