Skip to main content

GitHub에서 코드 탐색

GitHub Enterprise Cloud에서 직접 코드를 탐색하여 리포지토리의 내부와 리포지토리 간의 관계를 이해할 수 있습니다.

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-sitterstack-graphs 라이브러리를 기반으로 두 가지 코드 탐색 방법을 개발했습니다.

  • 검색 기반 - 리포지토리 전체의 모든 정의 및 참조를 검색하여 지정된 이름의 엔터티를 찾습니다.
  • 정확 - 코드의 지정된 지점에서 클래스, 함수 및 가져온 정의 집합을 기반으로 정의 및 참조를 확인합니다.

이러한 접근 방식에 대한 자세한 내용은 “정확 및 검색 기반 탐색”을 참조하세요.

이후 릴리스에서는 더 많은 언어에 대해 정확한 코드 탐색을 추가할 예정이며, 이는 보다 정확한 결과를 제공할 수 있는 코드 탐색 방법입니다.__

바로 가기 키를 사용하여 코드 파일 내에서 탐색할 수 있습니다. 자세한 내용은 "바로 가기 키"을(를) 참조하세요.

기호 창 사용

이제 기호 창을 사용하여 코드의 함수 또는 클래스와 같은 기호를 빠르게 보고 탐색할 수 있습니다. 단일 파일, 리포지토리의 모든 파일 또는 GitHub의 모든 공용 리포지토리에서 기호를 검색할 수 있습니다.

기호 검색은 코드 검색의 기능입니다. 자세한 내용은 "GitHub 코드 검색 구문 이해"을(를) 참조하세요.

  1. 리포지토리를 선택한 다음, 기호가 포함된 파일로 이동합니다.

  2. 기호 창을 표시하려면 파일 콘텐츠 위에서 을(를) 클릭합니다.

    또는 파일에서 적합한 기호를 클릭하여 기호 창을 열 수 있습니다. 클릭 가능한 기호는 커서를 올릴때 노란색으로 강조 표시됩니다.

  3. 기호 창 또는 파일 자체 내에서 찾으려는 기호를 클릭합니다.

    • 리포지토리 전체에서 기호를 검색하려면 기호 창에서 이 리포지토리에서 이 기호 검색을 클릭합니다. GitHub의 모든 리포지토리에서 기호를 검색하려면 모든 리포지토리를 클릭합니다.
  4. 기호에 대한 참조 사이를 이동하려면 또는 을 클릭합니다.

  5. 기호에 대한 특정 참조로 이동하려면 이 파일 아래의 기호 검색 결과를 클릭합니다.

  6. 특정 기호 검색을 종료하려면 모든 기호를 클릭합니다.

함수 또는 메서드의 정의로 이동

파일에서 함수 또는 메서드 호출을 클릭하여 동일한 리포지토리 내에서 함수 또는 메서드 정의로 이동할 수 있습니다.

함수 창의 스크린샷. "정의"라는 섹션은 진한 주황색으로 윤곽이 그려져 있습니다.

함수 또는 메서드의 모든 참조 찾기

파일에서 함수 또는 메서드 호출을 클릭하여 동일한 리포지토리 내에서 함수 또는 메서드에 대한 모든 참조를 찾을 수 있습니다.

함수 창의 스크린샷. "3 참조"라는 섹션은 진한 주황색으로 윤곽이 그려져 있습니다.

정확 및 검색 기반 탐색

GitHub에서 지원되는 특정 언어는 정확한 코드 탐색에 액세스할 수 있습니다. 이 언어는 코드의 지정된 지점에 표시되는 클래스, 함수 및 가져온 정의 집합을 기반으로 정의 및 참조를 확인하는 알고리즘(오픈 소스 stack-graphs 라이브러리 기반)을 사용합니다.__ 다른 언어는 검색 기반 코드 탐색을 사용하여 리포지토리 전체의 모든 정의와 참조를 검색하여 지정된 이름의 엔터티를 찾습니다.__ 두 전략 모두 결과를 찾는 데 효과적이며 둘 다 주석과 같은 부적절한 결과를 방지할 수 있지만, 정확한 코드 탐색은 특히 리포지토리에 동일한 이름의 여러 메서드 또는 함수가 포함된 경우 보다 정확한 결과를 제공할 수 있습니다.

정확한 코드 탐색 쿼리에서 예상한 결과가 표시되지 않으면 표시된 팝오버에서 “검색 기반” 링크를 클릭하여 검색 기반 탐색을 수행할 수 있습니다.

함수 창의 스크린샷. "이 리포지토리에서 이 기호 검색" 및 "모든 리포지토리"라는 두 개의 링크가 진한 주황색으로 표시됩니다.

정확한 결과가 부정확한 것으로 표시되면 지원 요청을 제출할 수 있습니다.

리포지토리 간 정확한 코드 탐색

교차 리포지토리 코드 탐색은 정확한 코드 탐색 및 종속성 그래프가 지원되는 언어에 사용할 수 있습니다. 자세한 내용은 "종속성 그래프 정보"을(를) 참조하세요. 교차 리포지토리 코드 탐색을 사용하면 해당 종속성이 GitHub에서 호스트하는 리포지토리인 경우 프로젝트에서 가져온 종속성에 정의된 함수 또는 변수의 정의로 점프할 수 있습니다. 교차 리포지토리 코드 탐색은 현재 모든 참조 찾기 요청을 지원하지 않습니다.

GitHub 코드 파일의 스크린샷. "가져오기 o.s."라는 줄에서 모듈 이름 "o.s" 가 강조 표시되고 "정의" 모달은 "교차 리포지토리 결과"로 태그 지정된 결과를 표시합니다.

코드 탐색 문제 해결

코드 탐색을 사용하도록 설정했지만 함수 및 메서드 정의에 대한 링크가 표시되지 않는 경우:

  • 코드 탐색은 활성 분기에 대해서만 작동합니다. 분기로 푸시하고 다시 시도합니다.
  • 코드 탐색은 파일이 100,000개 미만인 리포지토리에서만 작동합니다.

추가 참고 자료