데이터 재사용 코드 스캐닝.about-codeql-analysis %}
code scanning에 대해 CodeQL 분석을 사용하는 세 가지 주요 방법은 다음과 같습니다.
-
기본 설정을 사용하여 리포지토리에서 code scanning에 대한 CodeQL 분석을 신속하게 구성합니다. 기본 설정은 분석할 언어, 실행할 쿼리 모음, 스캔을 트리거하는 이벤트를 자동으로 선택합니다. 원할 경우 실행할 쿼리 도구 모음과 분석할 언어를 수동으로 선택할 수 있습니다. CodeQL을(를) 사용하도록 설정하면 GitHub Actions에서 워크플로 실행을 통해 코드를 스캔합니다. 자세한 내용은 코드 검사에 대한 기본 설정 구성을(를) 참조하세요.
-
고급 설정을 사용하여 CodeQL 워크플로를 리포지토리에 추가합니다. 이렇게 하면 github/codeql-action을 사용하는 맞춤 설정 가능한 워크플로 파일이 생성되어 CodeQL CLI을(를) 실행합니다. 자세한 내용은 코드 검사에 대한 고급 설정 구성을(를) 참조하세요.
-
외부 CI 시스템에서 직접 CodeQL CLI을(를) 실행하고 결과를 GitHub에 업로드합니다. 자세한 내용은 사용자의 기존 CI 시스템으로 코드 검색 사용하기을(를) 참조하세요.
code scanning 경고에 대한 자세한 내용은 코드 검사 경고 정보을(를) 참조하세요.
CodeQL 정보
CodeQL는 코드를 데이터처럼 처리하는 프로그래밍 언어와 관련 도구입니다. 이 기능은 기존의 정적 분석기보다 더 쉽게 코드를 분석하고 코드의 잠재적 취약점을 찾을 수 있도록 만들어졌습니다.
- CodeQL 데이터베이스를 생성하여 코드베이스를 나타냅니다.
- 그런 다음 해당 데이터베이스에서 CodeQL 쿼리를 실행하여 코드베이스의 문제를 식별합니다.
- CodeQL을 code scanning과 함께 사용하는 경우 쿼리 결과가 GitHub에서 code scanning 경고로 표시됩니다.
CodeQL은 컴파일 언어와 해석된 언어를 모두 지원하며, 지원 언어로 작성된 코드에서 취약성과 오류를 찾을 수 있습니다.
CodeQL은 다음 언어를 지원합니다.
- C/C++
- C#
- Go
- Java/Kotlin
- JavaScript/TypeScript
- Python
- 루비
- Rust
- Swift * GitHub Actions 워크플로
참고
- Java, Kotlin 또는 둘 다로 작성된 코드를 분석하는 데
java-kotlin을 사용합니다. - JavaScript, TypeScript 또는 둘 다로 작성된 코드를 분석하는 데
javascript-typescript을(를) 사용합니다.
자세한 내용은 CodeQL 웹 사이트의 설명서의 지원되는 언어와 프레임워크를 참조하세요.
중요
CodeQL은 위에 나열되지 않은 언어를 지원하지 않습니다. 여기에는 PHP, Scala 등이 포함되지만 이에 국한되지 않습니다. 지원되지 않는 언어로 CodeQL을 사용하려고 하면 경고는 생성되지 않고 분석이 완료되지 않을 수 있습니다.
사용자 지정 또는 틈새 프레임워크 모델링
GitHub 전문가, 보안 연구원, 커뮤니티 기여자는 인기 있는 프레임워크와 라이브러리에서 데이터 흐름을 모델링하는 라이브러리를 작성합니다. 모델링되지 않은 사용자 지정 종속성을 사용하는 경우 Visual Studio Code에 대한 CodeQL 확장을 사용하여 이러한 종속성에 대한 모델을 만들고 이를 사용하여 분석을 확장할 수 있습니다. 자세한 내용은 CodeQL 모델 편집기 사용을(를) 참조하세요.
CodeQL 쿼리
GitHub 전문가, 보안 연구원 및 커뮤니티 기여자는 code scanning에 사용되는 기본 CodeQL 쿼리를 작성하고 유지 관리합니다. 쿼리는 분석을 개선하고 가양성 결과를 줄이기 위해 정기적으로 업데이트됩니다.
사용자 고유의 쿼리 작성
쿼리는 오픈 소스이므로 github/codeql 리포지토리에서 쿼리를 보고 기여할 수 있습니다. 자세한 내용은 CodeQL 설명서에서 CodeQL 쿼리 정보를 참조하세요.
추가 쿼리 실행
고급 설정 또는 외부 CI 시스템을 사용하여 코드를 스캔하는 경우 분석의 일부로 추가 쿼리를 실행할 수 있습니다.
이러한 쿼리는 리포지토리의 게시된 CodeQL 쿼리 팩 또는 CodeQL 팩에 속해야 합니다.
-
CodeQL 쿼리 팩이 GitHub Container registry에 게시되면 쿼리 및 컴파일 캐시에 필요한 모든 전이적 종속성이 패키지에 포함됩니다. 그러면 성능이 향상되고 새 버전의 팩 또는 CLI로 업그레이드할 때까지 팩에서 쿼리를 실행할 때마다 동일한 결과를 얻을 수 있습니다.
-
CodeQL 쿼리 팩은 여러 GitHub 컨테이너 레지스트리에서 다운로드할 수 있습니다. 자세한 내용은 코드 검색을 위한 워크플로 구성 옵션을(를) 참조하세요.
자세한 내용은 CodeQL 팩을 사용하여 분석 사용자 지정을(를) 참조하세요.