Skip to main content

끌어오기 요청에서 코드 검사 경고 심사

code scanning에서 끌어오기 요청의 문제를 식별하는 경우 강조 표시된 코드를 검토하고 경고를 해결할 수 있습니다.

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

If you have read permission for a repository, you can see annotations on pull requests. With write permission, you can see detailed information and resolve code scanning alerts for that repository.

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

끌어오기 요청에 대한 code scanning 결과 정보

code scanning이 끌어오기 요청 확인으로 구성된 리포지토리에서 code scanning은 끌어오기 요청의 코드를 확인합니다. 기본값으로 이는 기본 분기를 대상으로 하는 끌어오기 요청으로 제한되지만, 이 구성은 GitHub Actions 내에서 또는 타사 CI/CD 시스템에서 변경할 수 있습니다.

pull request에서 변경된 코드 줄이 code scanning 경고를 생성하는 경우, 이 경고는 pull request의 다음 위치에 보고됩니다.

  • pull request에서 결과 확인
  • 끌어오기 요청 검토의 대화 탭(끌어오기 요청 검토의 일부)
  • 끌어오기 요청의 변경된 파일

참고: Code scanning은(는) 경고로 식별된 모든 코드 줄이 끌어오기 요청 Diff에 있는 경우에만 끌어오기 요청에 경고를 표시합니다. 자세한 내용은 "코드 검사에 대한 SARIF 지원"을(를) 참조하세요.

리포지토리에 대한 쓰기 권한이 있는 경우 보안 탭에서 기존 code scanning 경고를 볼 수 있습니다. 리포지토리 경고에 대한 자세한 정보는 "Resolving code scanning alerts"을 참조하세요A.

또한 코드가 푸시될 때마다 code scanning에서 스캔하도록 구성된 리포지토리에서 code scanning은(는) 결과를 열려 있는 끌어오기 요청에 매핑하고, 경고를 주석으로 다른 끌어오기 요청 확인과 동일한 위치에 추가합니다. 자세한 내용은 "코드 검색을 위한 고급 설정 사용자 지정"을(를) 참조하세요.

끌어오기 요청이 code scanning을(를) 사용하는 보호된 분기를 대상으로 하고 리포지토리 소유자가 필요한 상태 확인을 구성한 경우 끌어오기 요청을 병합하기 전에 먼저 "Code scanning 결과" 확인을 통과해야 합니다. 자세한 내용은 "보호된 분기 정보"을(를) 참조하세요.

끌어오기 요청 확인으로서의 code scanning 정보

code scanning을(를) 끌어오기 요청 확인으로 구성하는 여러 옵션이 있으므로 각 리포지토리의 정확한 구성은 다양하며 일부는 둘 이상의 검사를 받습니다.

Code scanning 결과 확인

code scanning의 모든 구성에 대해 code scanning의 결과를 포함하는 확인은 Code scanning 결과입니다. 사용되는 각 분석 도구의 결과는 별도로 표시됩니다. pull request의 변경된 코드 줄에 대한 새로운 경고는 주석으로 표시됩니다.

분석된 분기에 대한 전체 경고 세트를 보려면 모든 분기 경고 보기를 클릭합니다. 그러면 형식, 심각도, 태그 등을 기준으로 분기의 모든 경고를 필터링할 수 있는 전체 경고 보기가 열립니다. 자세한 정보는 "Resolving code scanning alerts"을 참조하세요.

끌어오기 요청에 대한 Code scanning 결과 확인의 스크린샷. "모든 분기 경고 보기" 링크는 진한 주황색 윤곽선으로 강조 표시됩니다.

Code scanning 결과 확인 실패

code scanning 결과 확인에서 심각도가 error, critical 또는 high인 문제가 있으면 확인이 실패하고 확인 결과에 오류가 보고됩니다. code scanning에서 찾은 모든 결과의 심각도가 낮으면 경고가 경고 또는 참고로 처리되고 확인이 성공합니다.

끌어오기 요청에 대한 병합 상자의 스크린샷. "코드 스캔 결과 / CodeQL" 확인에는 "1개의 높은 보안 심각도를 포함한 1개의 새 경고..."가 있습니다.

끌어오기 요청 확인 실패를 유발하는 심각도 및 보안 심각도 수준을 지정하여 리포지토리 설정의 기본 동작을 재정의할 수 있습니다. 자세한 내용은 "코드 검색을 위한 고급 설정 사용자 지정"을 참조하세요.

기타 code scanning 확인

구성에 따라 code scanning이 구성된 끌어오기 요청에서 실행되는 추가 확인을 볼 수 있습니다. 이러한 확인은 일반적으로 코드를 분석하거나 code scanning 결과를 업로드하는 워크플로입니다. 이러한 확인은 분석 관련 문제가 있을 때 해당 문제를 해결하는 데 유용합니다.

예를 들어 리포지토리에서 CodeQL 분석 워크플로을(를) 사용하는 경우 결과 확인이 실행되기 전에 각 언어에 대해 CodeQL / 분석(LANGUAGE) 확인이 실행됩니다. 구성에 문제가 있거나 끌어오기 요청에서 분석이 컴파일하는 언어에 대한 빌드를 중단하는 경우(예: C/C++, C#, Go, Java 및 Swift) 분석 확인이 실패할 수 있습니다.

다른 끌어오기 요청 확인과 마찬가지로 확인 탭에서 확인 실패에 대한 전체 세부 정보를 볼 수 있습니다. 구성 및 문제 해결에 대한 자세한 정보는 "코드 검색을 위한 고급 설정 사용자 지정" 또는 "코드 검사 문제 해결"을 참조하세요.

끌어오기 요청에 대한 경고 보기

대화 탭을 보면 변경 사항의 Diff 내에 있는 끌어오기 요청에 도입된 모든 code scanning 경고를 확인할 수 있습니다. Code scanning은(는) 각 경고를 경고가 트리거된 코드 줄에 주석으로 표시하는 끌어오기 요청 검토를 게시합니다. 주석에서 직접 경고에 대해 주석을 달고, 경고를 해제하고, 경고의 경로를 볼 수 있습니다. "자세한 정보 표시" 링크를 클릭하여 경고 세부 정보 페이지로 이동하면 경고의 전체 세부 정보를 볼 수 있습니다.

끌어오기 요청의 "대화" 탭에 있는 경고 주석의 스크린샷. "더 많은 세부 정보 표시" 링크는 진한 주황색으로 간략하게 설명되어 있습니다.

pull request에 도입된 변경 내용의 차이에 포함되는 모든 code scanning 경고를 변경된 파일 탭에서 볼 수 있습니다.

pull request에 새 코드 검사 구성을 추가하는 경우 리포지토리의 보안 탭으로 안내하는 pull request에 대한 메모가 나타나고 끌어오기 요청 분기에 대한 모든 경고를 볼 수 있습니다. 리포지토리에 대한 경고 보기의 자세한 정보는 "Resolving code scanning alerts"을 참조하세요.

리포지토리에 대한 쓰기 권한이 있는 경우 일부 주석에는 경고에 대한 추가 컨텍스트가 있는 링크가 포함됩니다. 위 예제의 CodeQL 분석에서 user-provided value(사용자 제공 값)를 클릭하여 신뢰할 수 없는 데이터가 데이터 흐름에 들어가는 위치(이를 원본이라고 함)를 확인할 수 있습니다. 이 경우 경로 표시를 클릭하여 원본에서 데이터를 사용하는 코드(싱크)까지의 전체 경로를 볼 수도 있습니다. 이렇게 하면 데이터를 신뢰할 수 없는지 또는 분석에서 원본과 싱크 간의 데이터 삭제 단계를 인식하지 못했는지를 쉽게 확인할 수 있습니다. CodeQL을 사용하여 데이터 흐름을 분석하는 방법에 대한 자세한 내용은 "데이터 흐름 분석 정보"를 참조하세요.

경고에 대한 자세한 내용을 보려면 쓰기 권한이 있는 사용자가 주석에 표시된 자세히 링크를 클릭할 수 있습니다. 이렇게 하면 경고 보기에서 도구가 제공하는 모든 컨텍스트 및 메타데이터를 볼 수 있습니다. 아래 예제에서는 문제에 대한 심각도, 형식 및 관련 CWE(Common Weakness Enumeration)를 보여 주는 태그를 볼 수 있습니다. 또한 보기에서는 문제가 발생한 커밋을 보여 줍니다.

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

경고에 대한 자세한 보기에서 CodeQL 분석과 같은 일부 code scanning 도구에는 문제에 대한 설명 및 자세히 표시 코드를 수정하는 방법의 지침에 대한 링크도 포함되어 있습니다.

code scanning 경고에 대한 설명을 표시하는 스크린샷. "자세히 표시"라는 레이블이 지정된 링크는 진한 주황색 윤곽선으로 강조 표시됩니다.

끌어오기 요청에서 경고에 대한 주석 처리

pull request에 나타나는 모든 code scanning 경고에 메모를 추가할 수 있습니다. 경고는 끌어오기 요청 검토의 일부로 끌어오기 요청의 대화 탭에 주석으로 표시되며 변경된 파일 탭에도 표시됩니다.

끌어오기 요청을 병합하기 전에 code scanning 경고에 대한 대화를 포함하여 끌어오기 요청의 모든 대화를 확인하도록 선택할 수 있습니다. 자세한 내용은 "보호된 분기 정보"을(를) 참조하세요.

끌어오기 요청에 대한 경고 수정

끌어오기 요청에 대한 푸시 액세스 권한이 있는 사용자는 해당 끌어오기 요청에서 식별된 code scanning 경고를 수정할 수 있습니다. 끌어오기 요청에 대한 변경 내용을 커밋하면 끌어오기 요청 확인의 새 실행이 트리거됩니다. 변경 내용으로 문제가 해결되면 경고가 종료되고 주석이 제거됩니다.

끌어오기 요청에 대한 경고 해제

경고를 종료하는 다른 방법은 경고를 해제하는 것입니다. 수정할 필요가 없다고 생각되면 경고를 해제할 수 있습니다. 예를 들어 테스트에만 사용되는 코드의 오류 또는 오류를 수정하는 데 드는 노력이 코드 개선의 잠재적 이점보다 큰 경우입니다. 리포지토리에 대한 쓰기 권한이 있는 경우 코드 주석 및 경고 요약에서 경고 해제 단추를 사용할 수 있습니다. 경고 해제를 클릭하면 경고를 종료하는 이유를 선택하라는 프롬프트가 표시됩니다.

코드 검사에 대한 검사 실패의 스크린샷. "경고 해제" 단추가 진한 주황색으로 강조 표시됩니다. "경고 해제" 드롭다운이 표시됩니다.

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

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

해제 경고에 대한 자세한 내용은 “Resolving code scanning alerts”를 참조하세요.