Skip to main content
설명서에 자주 업데이트를 게시하며 이 페이지의 번역이 계속 진행 중일 수 있습니다. 최신 정보는 영어 설명서를 참조하세요.

리포지토리에 대한 코드 검사 경고 관리

보안 관점에서 프로젝트 코드의 잠재적인 취약성 또는 오류에 대한 경고를 표시, 수정 또는 해제할 수 있습니다.

이 기능을 사용할 수 있는 사용자

If you have write permission to a repository you can manage code scanning alerts for that repository.

Code scanning는 GitHub.com의 모든 퍼블릭 리포지토리에 사용할 수 있습니다. 조직이 소유한 프라이빗 리포지토리에서 code scanning을 사용하려면 GitHub Advanced Security에 대한 라이선스가 있어야 합니다. 자세한 내용은 “GitHub Advanced Security 정보”를 참조하세요.

리포지토리에 대한 경고 보기

리포지토리에 대한 읽기 권한이 있는 사람은 끌어오기 요청에 대한 code scanning 주석을 볼 수 있습니다. 자세한 내용은 “끌어오기 요청에서 code scanning 경고 심사”를 참조하세요.

보안 탭에서 리포지토리에 대한 모든 경고의 요약 정보를 보려면 쓰기 권한이 필요합니다.

기본적으로 코드 검사 경고 페이지는 리포지토리의 기본 분기에 대한 경고만 표시하도록 필터링됩니다.

  1. GitHub.com에서 리포지토리의 기본 페이지로 이동합니다. 1. 리포지토리 이름 아래에서 Security를 클릭합니다. 보안 탭 1. 왼쪽 사이드바에서 코드 검사 경고를 클릭합니다. “코드 검사 경고” 탭

  2. 필요에 따라 무료 텍스트 검색 상자 또는 드롭다운 메뉴를 사용하여 경고를 필터링합니다. 예를 들어 경고를 식별하는 데 사용된 도구로 필터링할 수 있습니다. 도구별 필터링 1. “Code scanning”에서 탐색하려는 경고를 클릭합니다. 경고 요약

    경고 페이지에 있는 상태와 세부 정보는 경고가 다른 분기에 있는 경우에도 리포지토리의 기본 분기에 있는 경고의 상태만 반영합니다. 경고 페이지의 오른쪽에 있는 영향받는 분기 섹션에서 기본 분기가 아닌 분기에 대한 경고 상태를 볼 수 있습니다. 경고가 기본 분기에 없는 경우 경고 상태가 "끌어오기 요청 내" 또는 "분기 내"로 표시되고 회색으로 표시됩니다.  경고의 "영향을 받는 분기" 섹션

  3. 경고에서 데이터 흐름 문제를 강조하는 경우 필요에 따라 경로 표시를 클릭하여 데이터 원본부터 데이터 원본이 사용된 싱크까지의 경로를 표시합니다.  경고  경고의 "경로 표시" 링크

  4. CodeQL 분석의 경고에는 문제에 대한 설명이 포함됩니다. 코드를 수정하는 방법에 대한 지침을 보려면 자세히 표시를 클릭합니다. 경고 세부 정보

자세한 내용은 "code scanning 경고 정보"를 참조하세요.

참고: CodeQL을 사용한 code scanning 분석의 경우 리포지토리에 대한 code scanning 경고 목록의 맨 위에 있는 헤더에서 최신 실행에 대한 정보를 볼 수 있습니다.

예를 들어 마지막 검색이 실행된 시간, 리포지토리의 총 코드 줄 수와 비교 분석한 코드 줄 수 및 생성된 총 경고 수를 확인할 수 있습니다. UI 배너

code scanning 경고 필터링

code scanning 경고 보기에 표시된 경고를 필터링할 수 있습니다. 수많은 경고가 있을 때 특정 유형의 경고에 집중할 수 있는 유용한 기능입니다. 미리 정의된 필터와 표시되는 경고 목록을 구체화하는 데 사용할 수 있는 다양한 키워드가 있습니다.

  • 미리 정의된 필터를 사용하려면 필터 또는 경고 목록의 헤더에 표시된 필터를 클릭하고, 드롭다운 목록에서 필터를 선택합니다. 미리 정의된 필터
  • 키워드를 사용하려면 필터 텍스트 상자에 직접 입력하거나 다음을 수행합니다.
    1. 필터 텍스트 상자를 클릭하여 사용 가능한 필터 키워드 목록을 모두 표시합니다.
    2. 사용할 키워드를 클릭하고 드롭다운 목록에서 값을 선택합니다. 키워드 필터 목록

키워드 필터를 사용하면 결과가 있는 값만 드롭다운 목록에 표시된다는 이점이 있습니다. 따라서 결과가 없는 필터를 설정하는 일을 피할 수 있습니다.

여러 필터를 입력하면 이 모든 필터와 일치하는 경고가 보기에 표시됩니다. 예를 들어 is:closed severity:high branch:mainmain 분기에 있는 종결된 높은 심각도 경고만 표시합니다. refs(ref, branchpr)와 관련된 필터는 예외입니다. is:open branch:main branch:nextmain 분기와 next 분기의 열린 경고를 표시합니다.

기본 분기가 아닌 분기에서 경고를 필터링했지만 기본 분기에 동일한 경고가 있는 경우 상태가 기본 분기가 아닌 분기의 상태와 충돌하더라도 지정된 경고의 경고 페이지에는 여전히 기본 분기의 경고 상태만 반영됩니다. 예를 들어 branch-x에 대한 경고 요약의 “열기” 목록에 나타나는 경고는 기본 분기에서 이미 수정된 경우 경고 페이지에 “수정됨” 상태를 표시할 수 있습니다. 경고 페이지 오른쪽에 있는 영향을 받는 분기 섹션에서 필터링한 분기에 대한 경고 상태를 확인할 수 있습니다.

tag 필터에 -를 접두사로 사용하면 해당 태그가 있는 결과를 제외할 수 있습니다. 예를 들어 -tag:stylestyle 태그가 없는 경고만 표시하고 -tag:experimental는 모든 experimental 경고를 생략합니다. 자세한 내용은 "code scanning 경고 정보"를 참조하세요.

결과를 애플리케이션 코드로 제한

"애플리케이션 코드의 경고만" 필터 또는 autofilter:true 키워드와 값을 사용하여 결과를 애플리케이션 코드의 경고로 제한할 수 있습니다. 애플리케이션 코드가 아닌 코드 유형에 대한 자세한 내용은 위의 "애플리케이션 코드에 없는 경고에 대한 레이블 정보"를 참조하세요.

code scanning 경고 검색

경고 목록을 검색할 수 있습니다. 이 기능은 리포지토리에 수많은 경고가 있거나 경고의 정확한 이름을 모르는 경우에 유용합니다. GitHub Enterprise Cloud은 다음 위치에서 무료 텍스트 검색을 수행합니다.

  • 경고의 이름입니다.
  • 경고 세부 정보(축소 가능한 항목 표시 섹션에서 기본적으로 보기에서 숨겨진 정보도 포함됨) ![검색에 사용되는 경고 정보
지원되는 검색구문 예제결과
단일 단어 검색injectioninjection이라는 단어가 포함된 모든 경고를 반환
여러 단어 검색sql injectionsql 또는 injection이라는 단어가 포함된 모든 경고를 반환
정확하게 일치 검색
(큰따옴표 사용)
"sql injection"sql injection과 정확하게 일치하는 구가 포함된 모든 경고를 반환
OR 검색sql OR injectionsql 또는 injection이라는 단어가 포함된 모든 경고를 반환
AND 검색sql AND injectionsqlinjection이라는 단어가 모두 포함된 경고를 반환

팁:

  • 여러 단어 검색은 OR 검색과 동일합니다.
  • AND 검색은 경고 이름 또는 세부 정보에서 위치와 순서에 상관없이 검색어가 포함된 결과를 반환합니다.
  1. GitHub.com에서 리포지토리의 기본 페이지로 이동합니다. 1. 리포지토리 이름 아래에서 Security를 클릭합니다. 보안 탭 1. 왼쪽 사이드바에서 코드 검사 경고를 클릭합니다. “코드 검사 경고” 탭
  2. 필터 드롭다운 메뉴의 오른쪽에 있는 무료 텍스트 검색 상자에 검색할 키워드를 입력합니다. 무료 텍스트 검색 상자
  3. return을 누릅니다. 경고 목록에는 검색 조건과 일치하는 열린 code scanning 경고가 포함됩니다.

이슈에서 code scanning 경고 추적

참고: 문제의 code scanning 경고 추적은 베타 상태가 되며 변경될 수 있습니다.

이 기능은 기본적으로 GitHub Actions을(를) 사용하거나 외부적으로 기존 CI/CD 인프라뿐만 아니라 타사 code scanning 도구를 사용하지만 타사 추적 도구는 사용하지 않는 분석을 실행합니다.

Code scanning 경고는 GitHub Issues의 작업 목록과 통합되어 모든 개발 작업에서 경고 우선 순위를 지정하고 추적할 수 있습니다. 문제에 대한 자세한 내용은 “[문제 정보](/issues/tracking-your-work-with-issues/about-issues)”를 참조하세요.

문제에서 코드 검사 경고를 추적하려면 경고의 URL을 문제의 작업 목록 항목으로 추가합니다. 작업 목록에 대한 자세한 내용은 "작업 목록 정보"를 참조하세요. code scanning 경고를 추적하는 문제를 만드는 방법에 대한 자세한 내용은 "작업 목록을 사용하여 문제에서 code scanning 경고 추적"을 참조하세요.

경고 해결

리포지토리에 대한 쓰기 권한이 있는 모든 사용자는 코드 수정을 커밋하여 경고를 해결할 수 있습니다. 리포지토리에서 끌어오기 요청을 실행하도록 예약된 code scanning가 있는 경우 수정을 통해 끌어오기 요청을 발생시키는 것이 가장 좋습니다. 이렇게 하면 변경 내용의 code scanning 분석이 트리거되고 수정으로 인해 새로운 문제가 발생하지 않는지 테스트가 수행됩니다. 자세한 내용은 "code scanning 사용자 지정" 및 "끌어오기 요청에서 code scanning 경고 심사"를 참조하세요.

리포지토리에 대한 쓰기 권한이 있는 경우 경고 요약 정보를 살펴보고 종결됨을 클릭하여 해결된 경고를 볼 수 있습니다. 자세한 내용은 "리포지토리에 대한 경고 보기"를 참조하세요. "종결됨" 목록에는 해결된 경고와 사용자가 해제한 경고가 표시됩니다.

무료 텍스트 검색 또는 필터를 사용하여 경고 하위 집합을 표시한 다음, 일치하는 모든 경고를 종결된 것으로 표시할 수 있습니다.

경고는 한 분기에서 해결할 수 있지만 다른 분기에서는 해결할 수 없습니다. 경고 요약에서 "분기" 필터를 사용하여 특정 분기에서 경고가 해결되었는지 확인할 수 있습니다.

분기별 경고 필터링

기본 분기가 아닌 분기에서 경고를 필터링했지만 기본 분기에 동일한 경고가 있는 경우 상태가 기본 분기가 아닌 분기의 상태와 충돌하더라도 지정된 경고의 경고 페이지에는 여전히 기본 분기의 경고 상태만 반영됩니다. 예를 들어 branch-x에 대한 경고 요약의 “열기” 목록에 나타나는 경고는 기본 분기에서 이미 수정된 경우 경고 페이지에 “수정됨” 상태를 표시할 수 있습니다. 경고 페이지 오른쪽에 있는 영향을 받는 분기 섹션에서 필터링한 분기에 대한 경고 상태를 확인할 수 있습니다.

참고: 여러 구성을 사용하여 코드 검사를 실행할 때 경고의 분석 원본이 여러 개 있는 경우가 가끔 있습니다. 모든 구성을 정기적으로 실행하지 않는 한, 한 분석 원본에서 해결되었지만 다른 분석 원본에서는 해결되지 않은 경고가 표시 될 수 있습니다. 자세한 내용은 "분석 원본 정보"를 참조하세요.

## 경고 해제

경고를 종결하는 두 가지 방법이 있습니다. 코드에서 문제를 해결하거나 경고를 해제할 수 있습니다.

경고를 해제하는 것은 수정할 필요가 없다고 생각되는 경고를 종료하는 방법입니다. 예를 들어 테스트에만 사용되는 코드의 오류 또는 오류를 수정하는 데 드는 노력이 코드 개선의 잠재적 이점보다 큰 경우입니다. 코드의 code scanning 주석 또는 보안 탭의 요약 목록에서 경고를 해제할 수 있습니다.

경고를 해제하는 경우:

  • 모든 분기에서 경고가 해제됩니다.
  • 경고가 프로젝트에 대한 현재 경고 수에서 제거됩니다.
  • 경고가 경고 요약의 "종결됨" 목록으로 이동됩니다. 필요하다면 이 목록에서 경고를 다시 열 수 있습니다.
  • 경고를 닫은 이유가 기록됩니다.
  • 필요에 따라 해제에 대한 주석을 달아 경고 해제의 컨텍스트를 기록할 수 있습니다.
  • 다음에 code scanning가 실행될 때 동일한 코드가 경고를 생성하지 않습니다.

경고를 해제 하려면 다음을 수행합니다.

  1. GitHub.com에서 리포지토리의 기본 페이지로 이동합니다. 1. 리포지토리 이름 아래에서 Security를 클릭합니다. 보안 탭 1. 왼쪽 사이드바에서 코드 검사 경고를 클릭합니다. “코드 검사 경고” 탭

  2. 경고를 해제하려면 올바른 해제 이유를 선택할 수 있도록 먼저 경고를 살펴보는 것이 중요합니다. 살펴볼 경고를 클릭합니다. 요약 목록에서 경고 열기

  3. 경고를 검토한 다음 경고 해제를 클릭하고, 경고를 종결하는 이유를 선택하거나 입력합니다. 해제 이유를 선택하기 위한 드롭다운이 강조 표시된 코드 검사 경고의 스크린샷 쿼리가 향후 분석에 계속 포함될지 여부에 영향을 줄 수 있으므로 드롭다운 메뉴에서 적절한 이유를 선택하는 것이 중요합니다. 필요에 따라 해제에 대해 주석을 달고 경고 해제의 컨텍스트를 기록할 수 있습니다. 해제 주석은 경고 타임라인에 추가되며 감사 및 보고 중에 근거로 사용할 수 있습니다. REST API를 검색하는 코드를 사용하여 주석을 검색하거나 설정할 수 있습니다. 주석은 alerts/{alert_number} 엔드포인트에 대한 dismissed_comment에 포함되어 있습니다. 자세한 내용은 “코드 검사”를 참조하세요.

    예를 들어 코드에서 지원되지 않는 삭제 라이브러리를 사용하기 때문에 CodeQL 경고를 가양성 결과로 해제하는 경우 CodeQL 리포지토리에 기여하고 분석을 개선하는 것이 좋습니다. CodeQL에 대한 자세한 내용은 “CodeQL에 기여”를 참조하세요.

여러 경고를 한꺼번에 해제

프로젝트에 동일한 이유로 해제하려는 여러 경고가 있는 경우 경고 요약에서 경고를 대량으로 해제할 수 있습니다. 목록을 필터링한 다음, 일치하는 모든 경고를 해제하는 것이 일반적입니다. 예를 들어 특정 CWE(Common Weakness Enumeration) 취약성에 대한 태그가 지정된 프로젝트의 모든 현재 경고를 해제할 수 있습니다.

추가 참고 자료