# CodeQL을 사용하여 코드 검색

코드에서 취약성 및 오류를 식별하는 데 사용할 CodeQL 수 있습니다. 결과는 code scanning에서 GitHub 경고로 표시됩니다.

CodeQL은 보안 검사를 자동화하기 위해 GitHub에서 개발한 코드 분석 엔진입니다. CodeQL을 사용하여 코드를 분석하고 결과를 code scanning 경고로 표시할 수 있습니다.

code scanning에 대한 CodeQL 분석을 활용하는 세 가지 주요 방법은 다음과 같습니다:

* 기본 설정으로 리포지토리에서 code scanning용 CodeQL 분석을 빠르게 구성하세요. 기본 설정은 분석할 언어, 실행할 쿼리 모음, 스캔을 트리거하는 이벤트를 자동으로 선택합니다. 원할 경우 실행할 쿼리 도구 모음과 분석할 언어를 수동으로 선택할 수 있습니다.
  CodeQL을(를) 사용하도록 설정하면 GitHub Actions에서 워크플로 실행을 수행하여 코드를 검사합니다. 자세한 내용은 [코드 검사에 대한 기본 설정 구성](/ko/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning)을(를) 참조하세요.

* 고급 설정을 사용하여 리포지토리에 CodeQL 워크플로를 추가합니다. 그러면 [github/codeql-action](https://github.com/github/codeql-action/) 을 사용하여 명령을 실행하는 사용자 지정 가능한 워크플로 파일이 생성됩니다 CodeQL CLI. 자세한 내용은 [코드 검사에 대한 고급 설정 구성](/ko/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/configuring-advanced-setup-for-code-scanning#configuring-advanced-setup-for-code-scanning-with-codeql)을(를) 참조하세요.

* 외부 CI 시스템에서 CodeQL CLI를 직접 실행하고 결과를 GitHub에 업로드합니다. 자세한 내용은 [사용자의 기존 CI 시스템으로 코드 검색 사용하기](/ko/code-security/code-scanning/integrating-with-code-scanning/using-code-scanning-with-your-existing-ci-system)을(를) 참조하세요.

경고에 대한 code scanning 자세한 내용은 [코드 검사 경고](/ko/code-security/code-scanning/managing-code-scanning-alerts/about-code-scanning-alerts)을 참조하세요.

## CodeQL 정보

CodeQL 는 프로그래밍 언어 및 데이터와 같은 코드를 처리하는 관련 도구입니다. 이 기능은 기존의 정적 분석기보다 더 쉽게 코드를 분석하고 코드의 잠재적 취약점을 찾을 수 있도록 만들어졌습니다.

1. 코드베이스를 표현하는 CodeQL 데이터베이스를 생성합니다.
2. 그런 다음 해당 데이터베이스에서 쿼리를 실행 CodeQL 하여 코드베이스의 문제를 식별합니다.
3. 쿼리 결과는 code scanning와 함께 CodeQL를 사용할 때 GitHub에서 code scanning 경고로 표시됩니다.

CodeQL 는 컴파일된 언어와 해석된 언어를 모두 지원하며 지원되는 언어로 작성된 코드에서 취약성 및 오류를 찾을 수 있습니다.

CodeQL 에서는 다음 언어를 지원합니다.

<!-- If you update the list of supported languages for CodeQL, update docs-internal/content/get-started/learning-about-github/github-language-support.md to reflect the changes. -->

* C/C++
* C#
* Go
* Java/Kotlin
* JavaScript/TypeScript
* Python
* 루비
* Rust
* Swift \* GitHub Actions 워크플로

> \[!NOTE]
>
> * Java, Kotlin 또는 둘 다로 작성된 코드를 분석하는 데 `java-kotlin`을 사용합니다.
> * JavaScript, TypeScript 또는 둘 다로 작성된 코드를 분석하는 데 `javascript-typescript`을(를) 사용합니다.

자세한 내용은 CodeQL 웹 사이트의 설명서의 [지원되는 언어와 프레임워크](https://codeql.github.com/docs/codeql-overview/supported-languages-and-frameworks/)를 참조하세요.

> \[!IMPORTANT]
> CodeQL 는 위에 나열 **되지 않은** 언어를 지원하지 않습니다. 여기에는 **PHP**, **Scala** 등이 포함되지만 이에 국한되지 않습니다. 지원되지 않는 언어로 사용 CodeQL 하려고 하면 경고가 생성되지 않고 분석이 불완전할 수 있습니다.

## 사용자 지정 또는 틈새 프레임워크 모델링

GitHub 전문가, 보안 연구원 및 커뮤니티 기여자는 인기 있는 프레임워크 및 라이브러리의 데이터 흐름을 모델링하기 위해 라이브러리를 작성합니다. 모델링되지 않은 사용자 지정 종속성을 사용하는 경우 확장을 사용하여 CodeQL 이러한 종속성에 대한 Visual Studio Code 모델을 만들고 이를 사용하여 분석을 확장할 수 있습니다. 자세한 내용은 [CodeQL 모델 편집기 사용](/ko/code-security/codeql-for-vs-code/using-the-advanced-functionality-of-the-codeql-for-vs-code-extension/using-the-codeql-model-editor)을(를) 참조하세요.

## CodeQL 쿼리

GitHub 전문가, 보안 연구원 및 커뮤니티 기여자는 code scanning에 사용되는 기본 CodeQL 쿼리를 작성하고 유지 관리합니다. 쿼리는 분석을 개선하고 가양성 결과를 줄이기 위해 정기적으로 업데이트됩니다.

### 사용자 고유의 쿼리 작성

쿼리는 오픈 소스이므로 [github/codeql](https://github.com/github/codeql) 리포지토리에서 쿼리를 보고 기여할 수 있습니다. 자세한 내용은 설명서[의 쿼리 정보를 참조 CodeQL](https://codeql.github.com/docs/writing-codeql-queries/about-codeql-queries/) 하세요.CodeQL

### 추가 쿼리 실행

고급 설정 또는 외부 CI 시스템을 사용하여 코드를 스캔하는 경우 분석의 일부로 추가 쿼리를 실행할 수 있습니다.

이러한 쿼리는 게시된 CodeQL 쿼리 팩 또는 리포지토리의 CodeQL 팩에 속해야 합니다.

* 쿼리 팩이 GitHubContainer registry에 게시되면, 쿼리에 필요한 모든 전이적 종속성과 컴파일 캐시가 패키지에 포함됩니다. 그러면 성능이 향상되고 새 버전의 팩 또는 CLI로 업그레이드할 때까지 팩에서 쿼리를 실행할 때마다 동일한 결과를 얻을 수 있습니다.

* CodeQL 쿼리 팩은 여러 GitHub 컨테이너 레지스트리에서 다운로드할 수 있습니다. 자세한 내용은 [코드 검색을 위한 워크플로 구성 옵션](/ko/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning#downloading-codeql-packs-from-github-enterprise-server)을(를) 참조하세요.

자세한 내용은 [CodeQL 팩을 사용하여 분석 사용자 지정](/ko/code-security/codeql-cli/getting-started-with-the-codeql-cli/customizing-analysis-with-codeql-packs)을(를) 참조하세요.