{"meta":{"title":"컴파일된 언어에 CodeQL 코드 스캐닝","intro":"컴파일된 언어, 사용 가능한 빌드 옵션을 분석하는 방법을 CodeQL 이해하고 필요한 경우 데이터베이스 생성 프로세스를 사용자 지정하는 방법을 알아봅니다.","product":"보안 및 코드 품질","breadcrumbs":[{"href":"/ko/code-security","title":"보안 및 코드 품질"},{"href":"/ko/code-security/how-tos","title":"사용 설명"},{"href":"/ko/code-security/how-tos/find-and-fix-code-vulnerabilities","title":"코드 취약성 찾기 및 수정"},{"href":"/ko/code-security/how-tos/find-and-fix-code-vulnerabilities/manage-your-configuration","title":"구성 관리"},{"href":"/ko/code-security/how-tos/find-and-fix-code-vulnerabilities/manage-your-configuration/codeql-code-scanning-for-compiled-languages","title":"컴파일된 언어용 CodeQL"}],"documentType":"article"},"body":"# 컴파일된 언어에 CodeQL 코드 스캐닝\n\n컴파일된 언어, 사용 가능한 빌드 옵션을 분석하는 방법을 CodeQL 이해하고 필요한 경우 데이터베이스 생성 프로세스를 사용자 지정하는 방법을 알아봅니다.\n\n## 빌드 모드 비교\n\n<div class=\"ghd-tool rowheaders\">\n\n| 빌드 모드 특성                   | 없음                        | 자동 빌드 | 설명서 |\n| -------------------------- | ------------------------- | ----- | --- |\n| 기본 설정 및 조직 수준의 활성화에 사용됩니다. | 예(C/C++, C#, Java 및 Rust) |       |     |\n\n```\n          `none`가 지원되지 않는 곳에서 예 | No |\n```\n\n\\| 사용자 구성 없이 분석 성공함 | 예 | 변수 | No |\n\\| 분석의 완전성 | 생성된 코드가 분석되지 않음 | 변수 | 사용자 제어 |\n\\| 분석의 정확성 | 좋음 | 좋음 | 최상의 |\n\n</div>\n\n## 빌드 모드 선택\n\n처음으로 또는 여러 리포지토리에서 설정하는 code scanning 경우 기본 설정을 사용하는 것이 가장 좋습니다. 기본 설정은 가능한 한 CodeQL 빨리 경고 수정을 시작할 수 있도록 데이터베이스를 생성하고 코드를 분석하는 데 사용할 수 있는 가장 간단한 방법을 사용합니다. 초기 경고를 해결하고 나면 위험 수준이 높은 리포지토리에 수동 빌드 프로세스를 사용하여 고급 설정으로 전환할 수 있습니다.\n\n컴파일된 언어에 대한 언어별 `autobuild` 동작, 실행기 요구 사항 및 빌드 모드 세부 정보는 [컴파일된 언어에 대한 CodeQL 빌드 옵션 및 단계](/ko/code-security/reference/code-scanning/codeql/codeql-build-options-and-steps-for-compiled-languages)을 참조하세요.\n\n## 다중 언어 리포지토리에서 여러 빌드 모드 사용\n\n컴파일된 언어가 여러 개인 리포지토리의 경우, 언어마다 빌드 모드를 다르게 사용할 수 있습니다. 예를 들어 리포지토리에 C/C++, C# 및 Java 포함된 경우 한 언어에 대한 수동 빌드 단계(여기 C/C++)를 제공할 수 있습니다. 이러한 워크플로는 각 언어에 대해 다른 빌드 모드를 지정합니다.\n\n```yaml\nstrategy:\n  matrix:\n    include:\n      # Analyzes C and C++ code using the commands in `Build C and C++ code`\n      - language: c-cpp\n        build-mode: manual\n      # Analyzes C# code by automatically detecting a build\n      - language: csharp\n        build-mode: autobuild\n      # Analyzes Java code directly from the codebase without a build\n      - language: java-kotlin\n        build-mode: none # analyzes Java only\nsteps:\n- name: Checkout repository\n  uses: actions/checkout@v5\n\n# Initializes CodeQL tools and creates a codebase for analysis.\n- name: Initialize CodeQL\n  uses: github/codeql-action/init@v4\n  with:\n    languages: ${{ matrix.language }}\n- if: ${{ matrix.build-mode == 'manual' }}\n  name: Build C and C++ code\n  run: |\n    echo 'If you are using a \"manual\" build mode for one or more of the' \\\n      'languages you are analyzing, replace this with the commands to build' \\\n      'your code, for example:'\n    echo ' make bootstrap'\n    echo ' make release'\n    exit 1\n```\n\n최신 버전에서 지원되는 언어, 라이브러리 및 프레임워크에 대한 자세한 내용은 설명서에서 CodeQL[지원되는 언어 및 프레임워크를](https://codeql.github.com/docs/codeql-overview/supported-languages-and-frameworks)CodeQL 참조하세요. 최신 버전을 실행하기 위한 시스템 요구 사항에 대한 자세한 내용은 설명서의 CodeQL[시스템 요구 사항을](https://codeql.github.com/docs/codeql-overview/system-requirements/#additional-software-requirements)CodeQL 참조하세요.\n\n##\n\n```\n          CodeQL에 대한 종속성 캐싱 사용 설정\n```\n\n기본 설정 워크플로의 경우 종속성 캐싱은 퍼블릭 및 프라이빗 리포지토리의 GitHub에서 호스팅되는 실행기에만 사용하도록 설정되어 있습니다.\n\n고급 설정 워크플로에서는 기본적으로 종속성 캐싱이 비활성화됩니다.\nCodeQL에 대한 종속성 캐싱을 활성화하려면 고급 설정 워크플로에서 CodeQL 작업에 대한 `dependency-caching` 설정을 사용합니다. 이 설정은 다음 값을 허용합니다.\n\n* `false`\n  /\n  `none`\n  /\n  `off`: 종속성 캐싱이 비활성화됩니다(기본값).\n* `restore`: 기존 캐시만 복원하고 새 캐시는 저장하지 않습니다.\n* `store`: 새 캐시만 저장하고 기존 캐시는 복원하지 않습니다.\n* `true`\n  /\n  `full`\n  /\n  `on`: 기존 캐시를 복원하고 새 캐시는 저장합니다.\n\n예를 들어, 다음 설정은 CodeQL 작업에 대한 종속성 캐싱을 활성화합니다.\n\n```yaml\n    # Initializes CodeQL with dependency caching enabled\n    - name: Initialize CodeQL\n      uses: github/codeql-action/init@v4\n      with:\n        languages: java\n        dependency-caching: true\n```\n\n##\n\n```\n          `none` 빌드 모드를 CodeQL에 사용하세요.\n\n          C/C++, C#, Java 및 Rust 의 경우 CodeQL리포지토리에 Kotlin 코드도 포함되어 있지 않으면 기본 설정을 code scanning 사용하도록 설정할 때 빌드를 요구하지 않고 데이터베이스를 만듭니다. 리포지토리에 Java 코드 외에 Kotlin 코드가 포함된 경우 Kotlin 분석에 빌드가 필요하기 때문에 자동 빌드 프로세스에서 기본 설정을 사용하도록 설정됩니다.\n```\n\n다음과 같은 경우 빌드 없이 데이터베이스를 CodeQL 만들면 사용 `autobuild` 또는 수동 빌드 단계보다 덜 정확한 결과를 생성할 수 있습니다.\n\n* 빌드 스크립트는 종속성 정보를 쿼리할 수 없고 종속성 추측은 정확하지 않습니다.\n* 리포지토리는 보통 빌드 프로세스 중에 코드를 생성합니다.\n\n  ```\n          `autobuild` 또는 수동 빌드 단계를 사용하기 위해서는 고급 설정을 사용할 수 있습니다.\n  ```\n\n> \\[!NOTE] Java 분석의 경우 `build-mode``none`로 설정되고 Kotlin 코드가 리포지토리에 있으면 Kotlin 코드가 분석되지 않으며 경고가 생성됩니다.\n> [컴파일된 언어에 대한 CodeQL 빌드 옵션 및 단계](/ko/code-security/reference/code-scanning/codeql/codeql-build-options-and-steps-for-compiled-languages#building-java-and-kotlin)을(를) 참조하세요.\n\n##\n\n```\n          `autobuild`를 CodeQL으로 사용하십시오.\n```\n\n이 CodeQL 작업은 다음 경우에 컴파일된 언어를 분석하는 데 사용합니다 `autobuild` .\n\n* 기본 설정이 사용되며 이 언어는 `none` 빌드를 지원하지 않습니다(C/C++, C#, Java 및 Rust는 지원됨).\n* 고급 설정이 활성화되고 워크플로는 `build-mode: autobuild`를 지정합니다.\n* 고급 설정이 활성화되고 워크플로에 `autobuild` 작업(`github/codeql-action/autobuild@v4`)을 사용하는 언어용으로 자동 작성 단계가 있습니다.\n\n###\n\n```\n          `build-mode` 옵션을 사용합니다.\n```\n\n```yaml\n# Initializes the CodeQL tools for scanning.\nname: Analyze\nstrategy:\n  matrix:\n    include:\n      # Analyze C and C++ code\n      - language: c-cpp\n        build-mode: autobuild\n      # Analyze Go code\n      - language: go\n        build-mode: autobuild\n\nsteps:\n  - uses: github/codeql-action/init@v4\n    with:\n      languages: ${{ matrix.language }}\n      build-mode: ${{ matrix.build-mode }}\n```\n\n### 자동 구성 단계 사용\n\n```yaml\n    # Initializes the CodeQL tools for scanning.\n    - name: Initialize CodeQL\n      uses: github/codeql-action/init@v4\n      with:\n        languages: ${{ matrix.language }}\n\n    - name: Autobuild\n      uses: github/codeql-action/autobuild@v4\n```\n\n## 수동으로 빌드 단계 지정\n\n고급 설정을 활성화한 경우에만 수동 빌드 단계를 지정할 수 있으며, [코드 검사에 대한 고급 설정 구성](/ko/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/configuring-advanced-setup-for-code-scanning#configuring-advanced-setup-for-a-repository)을 참조하세요.\n\n`autobuild` 가 실패했거나 `autobuild` 프로세스에서 빌드한 것과는 다른 소스 파일들을 분석하고자 한다면 다음을 수행해야 합니다.\n\n* 워크플로에서 특정 언어에 대한 빌드 모드를 지정했다면, 빌드 모드를 `manual`로 변경하세요.\n* 워크플로에 `autobuild` 단계가 있는 경우, `autobuild` 단계를 삭제하거나 주석으로 처리합니다.\n\n다음으로, `run` 단계의 주석 처리를 제거하고 사용할 빌드 프로세스를 직접 지정합니다. C/C++, C#, Go, Java, Kotlin 및 Swift의 경우 CodeQL은 지정된 빌드 단계에서 빌드된 모든 소스 코드를 분석합니다.\n\n```\n          `build-mode`를 `manual`로 정의하도록 워크플로를 업데이트합니다.\n```\n\n```yaml\n# Initializes the CodeQL tools for scanning.\n- name: Initialize CodeQL\n- uses: github/codeql-action/init@v4\n  with:\n    languages: ${{ matrix.language }}\n    build-mode: manual\n- uses: github/codeql-action/analyze@v4\n  with:\n    category: \"/language:${{ matrix.language }}\"\n```\n\n또는 \"자동 빌드\" 단계를 주석으로 처리하도록 워크플로를 업데이트합니다.\n\n```yaml\n    # Autobuild attempts to build any compiled languages.\n    # - name: Autobuild\n    #  uses: github/codeql-action/autobuild@v4\n```\n\n### 빌드 명령 추가\n\n수동 빌드가 활성화되면 워크플로에 `run` 단계의 주석 처리를 제거하고 리포지토리에 적합한 빌드 명령을 추가합니다.\n`run` 단계는 운영 체제의 셸을 사용하여 명령줄 프로그램을 실행합니다. 이러한 명령을 수정하고 더 많은 명령을 추가하여 빌드 프로세스를 사용자 지정할 수 있습니다.\n\n```yaml\n- run: |\n    make bootstrap\n    make release\n```\n\n```\n          `run` 키워드에 대한 자세한 내용은 [AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun)을(를) 참조하세요.\n```\n\n<!-- For \"no-build\" this is covered earlier in the article under \"About CodeQL build modes\". -->\n\n컴파일된 언어에 대한 수동 빌드 단계를 추가했으며 code scanning 리포지토리에서 아직 작동하지 않는 경우 문의하세요 [GitHub 지원 포털](https://support.github.com) 사용."}