Skip to main content

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

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

누가 이 기능을 사용할 수 있는 있나요?

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

Code scanning는 GitHub Enterprise Server의 조직 소유 리포지토리에서 사용할 수 있습니다. 이 기능을 사용하려면 GitHub Advanced Security에 대한 라이선스가 필요합니다. 자세한 내용은 "GitHub Advanced Security 정보.

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

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

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

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

  1. GitHub Enterprise Server 인스턴스에서 리포지토리의 기본 페이지로 이동합니다.

  2. 리포지토리 이름 아래에서 보안을 클릭합니다. "보안" 탭이 표시되지 않으면 드롭다운 메뉴를 선택한 다음 보안을 클릭합니다. 탭을 보여 주는 리포지토리 헤더의 스크린샷. "보안" 탭이 진한 주황색 윤곽선으로 강조 표시됩니다.

  3. 왼쪽 사이드바에서 Code scanning 을(를) 클릭합니다.

  4. 선택적으로 무료 텍스트 검색 상자 또는 드롭다운 메뉴를 사용하여 경고를 필터링합니다. 예를 들어 경고를 식별하는 데 사용된 도구로 필터링할 수 있습니다.

    code scanning 경고 페이지 보기 스크린샷. 검색창 및 필터 드롭다운 메뉴는 진한 주황색으로 표시됩니다.

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

  6. 경고에서 데이터 흐름 문제를 강조하는 경우 선택적으로 경로 표시를 클릭하여 데이터 원본부터 데이터 원본이 사용된 싱크까지의 경로를 표시합니다.

    code scanning 경고에 대한 스크린샷입니다. "경로 표시" 링크는 진한 주황색 윤곽선으로 강조 표시됩니다. 다음 단계에서 설명하는 "자세히 보기" 링크도 강조 표시됩니다.

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

자세한 내용은 "코드 검사 경고 정보"을(를) 참조하세요.

참고: 도구 상태 페이지에서 code scanning 분석이 마지막으로 실행된 시기에 대한 정보를 볼 수 있습니다. 자세한 내용은 "코드 스캔을 위한 도구 상태 페이지 정보"을(를) 참조하세요.

code scanning 경고 필터링

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

드롭다운 목록에서 키워드를 선택하거나 검색 필드에 키워드를 입력할 때 결과가 있는 값만 표시됩니다. 따라서 결과가 없는 필터를 설정하는 일을 더 쉽게 피할 수 있습니다.

code scanning 경고 보기의 검색 필드 스크린샷입니다. 사용자가 필드에 "branch:dependabot"을 입력했습니다. "dependabot"을 포함하여 이름이 있는 유효한 모든 분기의 이름이 드롭다운 메뉴에 표시됩니다.

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

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

tag 필터에 -를 접두사로 사용하면 해당 태그가 있는 결과를 제외할 수 있습니다. 예를 들어 -tag:style은(는) style 태그가 없는 경고만 표시합니다.

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

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

code scanning 경고 검색

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

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

:

  • 여러 단어 검색은 OR 검색과 동일합니다.
  • AND 검색은 경고 이름 또는 세부 정보에서 _위치_와 순서에 상관없이 검색어가 포함된 결과를 반환합니다.
  1. GitHub Enterprise Server 인스턴스에서 리포지토리의 기본 페이지로 이동합니다.
  2. 리포지토리 이름 아래에서 보안을 클릭합니다. "보안" 탭이 표시되지 않으면 드롭다운 메뉴를 선택한 다음 보안을 클릭합니다. 탭을 보여 주는 리포지토리 헤더의 스크린샷. "보안" 탭이 진한 주황색 윤곽선으로 강조 표시됩니다.
  3. 왼쪽 사이드바에서 Code scanning 을(를) 클릭합니다.
  4. 필터 드롭다운 메뉴의 오른쪽에 있는 무료 텍스트 검색 상자에 검색할 키워드를 입력합니다. code scanning 경고 보기의 검색 필드 스크린샷입니다. 필드에는 미리 정의된 필터 "is: open branch:main"이 포함됩니다. "sql or injection"라는 무료 텍스트는 진한 주황색으로 표시됩니다.
  5. return을 누릅니다. 경고 목록에는 검색 조건과 일치하는 열린 code scanning 경고가 포함됩니다.

경고 해결

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

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

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

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

"분기" 드롭다운 메뉴가 확장된 code scanning의 검색 필드 스크린샷입니다. "분기" 단추는 진한 주황색으로 강조 표시됩니다.

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

참고: 여러 구성을 사용하여 code scanning을(를) 실행하면 두 개 이상의 구성에서 동일한 경고가 생성되기도 합니다. 모든 구성을 정기적으로 실행하지 않으면, 한 구성에서는 해결되었지만 다른 구성에서는 해결되지 않은 경고가 표시 될 수 있습니다. 이러한 부실 구성 및 경고는 분기에서 제거할 수 있습니다. 자세한 정보는 "분기에서 부실 구성 및 경고 제거"를 참조하세요.

경고 해제하기

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

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

경고를 해제하는 경우:

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

경고를 해제하려면:

  1. GitHub Enterprise Server 인스턴스에서 리포지토리의 기본 페이지로 이동합니다.

  2. 리포지토리 이름 아래에서 보안을 클릭합니다. "보안" 탭이 표시되지 않으면 드롭다운 메뉴를 선택한 다음 보안을 클릭합니다. 탭을 보여 주는 리포지토리 헤더의 스크린샷. "보안" 탭이 진한 주황색 윤곽선으로 강조 표시됩니다.

  3. 왼쪽 사이드바에서 Code scanning 을(를) 클릭합니다.

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

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

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

여러 경고를 한꺼번에 해제

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

해제된 경고 다시 열기

경고를 해제했지만 나중에 경고를 수정해야 한다는 사실을 알게 되면 경고를 다시 열고 코드 문제를 해결할 수 있습니다. 닫힌 경고 목록을 표시하고, 경고를 찾고, 표시하고, 다시 엽니다. 그런 다음 다른 경고와 동일한 방식으로 경고를 수정할 수 있습니다.

분기에서 부실 구성 및 경고 제거

단일 리포지토리에 여러 코드 스캔 구성이 있을 수 있습니다. 실행할 때 여러 구성에서 동일한 경고를 생성할 수 있습니다. 또한 구성이 다른 일정에 따라 실행되는 경우 자주 사용되지 않거나 부실한 구성에 대한 경고 상태가 만료될 수 있습니다. 여러 구성의 경고에 대한 자세한 정보는 "코드 검사 경고 정보"을(를) 참조하세요.

  1. GitHub Enterprise Server 인스턴스에서 리포지토리의 기본 페이지로 이동합니다.

  2. 리포지토리 이름 아래에서 보안을 클릭합니다. "보안" 탭이 표시되지 않으면 드롭다운 메뉴를 선택한 다음 보안을 클릭합니다. 탭을 보여 주는 리포지토리 헤더의 스크린샷. "보안" 탭이 진한 주황색 윤곽선으로 강조 표시됩니다.

  3. 왼쪽 사이드바에서 Code scanning 을(를) 클릭합니다.

  4. "Code scanning"에서 code scanning 경고를 클릭합니다.

  5. 사이드바의 "영향을 받는 분기" 섹션에서 원하는 분기를 클릭합니다.

  6. "구성 분석" 대화 상자에서 선택한 분기에서 이 경고를 보고한 구성의 세부 정보를 검토합니다. 원하는 분기에 대한 원치 않는 구성을 삭제하려면 을(를) 클릭합니다.

    실수로 구성을 삭제하는 경우 취소를 클릭하여 변경 내용을 적용하지 않습니다.

    "구성 분석" 모달의 스크린샷입니다. "구성 삭제" 아이콘은 진한 주황색으로 강조 표시됩니다.

  7. 원치 않는 구성을 제거하고 예상한 구성이 표시되는지 확인한 후 변경 내용 저장을 클릭합니다.

    실수로 구성을 삭제한 후 변경 내용을 저장한 경우 구성을 다시 실행하여 경고를 업데이트합니다. GitHub Actions을(를) 사용하는 구성을 다시 실행하는 방법에 대한 자세한 정보는 "워크플로 및 작업 다시 실행"을(를) 참조하세요.

참고:

  • 리포지토리의 기본 분기에 대한 모든 code scanning 구성을 제거하면 기본 분기가 "영향을 받는 분기" 사이드바에 유지되며 다시 구성으로 분석되지 않습니다.
  • 리포지토리의 기본 분기 이외의 분기에 대한 모든 code scanning 구성을 제거하면 해당 분기가 "영향을 받는 분기" 사이드바에서 제거됩니다.

code scanning 경고에 대한 응답 감사

GitHub 도구를 사용하여 code scanning 경고에 대한 응답으로 수행된 작업을 감사할 수 있습니다. 자세한 내용은 "보안 경고 감사"을 참조하세요.

추가 참고 자료