Skip to main content

코드 검사 경고 해결

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

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

쓰기 권한이 있는 사용자

code scanning 경고에 대한 제안된 수정 사항 생성

GitHub Copilot Autofix는 프라이빗 리포지토리의 code scanning 분석에서 식별된 경고에 대한 수정 사항을 생성할 수 있습니다. 대부분의 CodeQL 경고 유형이 지원되며 타사 도구의 일부 경고도 지원됩니다. 자세한 내용은 코드 검사에 대한 Copilot Autofix의 책임 있는 사용을(를) 참조하세요.

Note

GitHub Copilot Autofix을(를) 사용하려면 GitHub Copilot에 대한 구독이 필요하지 않습니다. Copilot Autofix은(는) GitHub.com의 모든 퍼블릭 리포지토리에서 사용할 수 있습니다. 뿐만 아니라 GitHub Advanced Security에 대한 라이선스가 있는 GitHub Enterprise Cloud Enterprise의 프라이빗 리포지토리에서도 사용할 수 있습니다.

  1. GitHub에서 리포지토리의 기본 페이지로 이동합니다.
  2. 리포지토리 이름 아래에서 보안을 클릭합니다. "보안" 탭이 표시되지 않으면 드롭다운 메뉴를 선택한 다음 보안을 클릭합니다.
    탭을 보여 주는 리포지토리 헤더의 스크린샷. "보안" 탭이 진한 주황색 윤곽선으로 강조 표시됩니다.
  3. 왼쪽 사이드바에서 Code scanning 을(를) 클릭합니다.
  4. 경고의 이름을 클릭합니다.
  5. Copilot Autofix에서 수정 사항을 제안할 수 있는 경우 페이지 상단에서 수정 사항 생성을 클릭합니다.
  6. 제안된 수정 사항이 생성되면 페이지 하단에서 수정 사항으로 PR 만들기를 클릭하여 제안된 수정 사항으로 끌어오기 요청을 자동으로 생성할 수 있습니다. 기본 분기에서 새 분기가 만들어지고, 생성된 수정 사항이 커밋되고, 초안 끌어오기 요청이 만들어집니다. 다른 수정 사항과 마찬가지로 제안된 수정 사항을 테스트하고 편집할 수 있습니다.

자동으로 생성된 수정 사항의 제한 사항에 대한 자세한 내용은 "제안의 제한 사항"을 참조하십시오.

수동으로 경고 수정

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

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

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

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

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

Note

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

경고 해제하기

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

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

경고를 해제하는 경우:

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

경고를 해제하려면:

  1. GitHub에서 리포지토리의 기본 페이지로 이동합니다.

  2. 리포지토리 이름 아래에서 보안을 클릭합니다. "보안" 탭이 표시되지 않으면 드롭다운 메뉴를 선택한 다음 보안을 클릭합니다.

    탭을 보여 주는 리포지토리 헤더의 스크린샷. "보안" 탭이 진한 주황색 윤곽선으로 강조 표시됩니다.

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

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

  5. 경고를 검토한 다음 경고 해제를 클릭하고, 경고를 종결하는 이유를 선택하거나 입력합니다.

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

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

여러 경고를 한꺼번에 해제

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

해제된 경고 다시 열기

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

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

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

  1. GitHub에서 리포지토리의 기본 페이지로 이동합니다.

  2. 리포지토리 이름 아래에서 보안을 클릭합니다. "보안" 탭이 표시되지 않으면 드롭다운 메뉴를 선택한 다음 보안을 클릭합니다.

    탭을 보여 주는 리포지토리 헤더의 스크린샷. "보안" 탭이 진한 주황색 윤곽선으로 강조 표시됩니다.

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

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

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

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

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

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

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

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

Note

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

추가 참고 자료