CodeQL을 켰는데 주간 검사가 안 돈다면
여러 저장소에 CodeQL 기본 설정을 켜고 첫 분석까지 성공했는데, 다음 주가 돼도 검사가 한 번도 돌지 않는다. 설정이 풀린 걸까, 주간 검사가 시작되는 조건이 따로 있을까?

- 기본 설정의 초기 분석이 성공했다고 주간 검사까지 시작되는 것은 아니다.
- 설정 이후 push·PR로 실제 분석이 실행됐는지가 주간 검사의 활동 조건이다.
- 조직은 비활성 저장소를 30일마다 검사하는 별도 옵션을 켤 수 있다.
초기 결과가 있어도 다음 주 실행이 없을 수 있다
CodeQL 지원 언어가 있는 저장소에 기본 설정을 켜고 첫 분석까지 성공했는데 다음 주 검사가 없다면, 설정 이후의 개발 활동부터 확인해야 한다. GitHub의 10월 1일 변경으로 초기 검증만으로는 주간 주기가 시작되지 않는다. 이후 push나 PR이 실제 분석을 일으켜야 한다.
여러 저장소에 보안 설정을 한꺼번에 적용할 때 차이가 드러난다. 초기 검사는 기존 코드의 결과를 보여 주지만, 오랫동안 개발하지 않은 저장소를 그 사실만으로 활성 상태로 보지는 않는다. 판단 근거는 기본 설정을 켜기 전의 커밋 수나 최근 커밋 날짜가 아니라 분석 이력이다.
이 변경은 코드 스캐닝 기본 설정과 GitHub Code Quality의 주간 예약 검사에 관한 것이며, 두 기능은 활동 판정을 공유한다. GitHub는 Enterprise Cloud에 변경을 적용했으며 Enterprise Server 3.24에서도 지원할 예정이라고 밝혔다. 직접 YAML로 구성한 모든 예약 워크플로가 같은 규칙으로 바뀌었다는 뜻은 아니다.
push가 있었다는 사실보다 분석을 일으켰는지가 중요하다
현행 기본 설정 문서는 기본 브랜치나 보호된 브랜치에 대한 push, 해당 브랜치를 대상으로 한 PR 생성·커밋을 분석 계기로 설명한다. 포크에서 온 PR은 이 PR 검사 조건에서 제외한다. 주간 검사는 최근 180일 안에 push나 PR이 분석을 일으킨 경우 실행된다.
| 일어난 일 | 주간 검사 시작·유지용 활동인가 |
|---|---|
| 기본 설정을 처음 켜 초기 분석을 했다. | 아니다. |
| 설정이나 감지 언어가 바뀌어 분석했다. | 아니다. |
| 예약 검사가 실행됐다. | 아니다. |
| 설정 이후 push·PR이 기본 설정 분석을 일으켰다. | 활동으로 인정된다. |
따라서 예약 검사가 스스로 다음 180일의 활동 기간을 계속 갱신하지는 않는다. 조직 설정 문서는 초기·설정 변경·언어 변경·예약 검사를 활동에서 제외한다고 명시한다.
개발이 멈춘 저장소는 30일 검사 옵션을 쓸 수 있다
코드를 자주 고치지 않더라도 계속 검사할 저장소가 있다면 조직의 휴면 검사 옵션이 맞는지 살필 수 있다. 조직 설정의 Advanced Security → Global settings에서 비활성 저장소의 예약 검사를 30일마다 유지하는 옵션을 선택한다. 기본 설정 문서는 조직 소유자가 이 기능을 켤 수 있다고 안내한다.
이 옵션의 주기는 30일로 고정돼 있다. 일주일이나 원하는 일수로 바꾸는 입력란은 아니다. 정해진 간격을 직접 설계해야 한다면 고급 설정에서 워크플로와 실행 조건을 관리하는 선택을 검토해야 한다.
휴면 저장소를 계속 검사하려는 목적이라면, 주간 검사 활동을 만들기 위한 커밋을 반복하기 전에 조직의 검사 정책부터 정하는 편이 낫다. 기본 설정의 개발 활동 조건과 휴면 검사의 목적을 분리하면 어떤 저장소를 얼마나 자주 볼지 명확해진다.
설정이 켜졌는지와 분석이 성공했는지를 따로 본다
주간 검사가 안 보이는 모든 경우가 활동 부족은 아니다. 기본 설정 구성 문서는 지원 언어 전부의 분석이 실패하면 기본 설정은 활성화돼 있어도 추가 검사가 실행되지 않을 수 있다고 설명한다. 이런 경우에는 분석 실패부터 해결해야 한다.
- CodeQL 구성이 기본 설정인지 직접 만든 고급 설정인지 확인한다.
- 초기 분석 결과와 실패한 언어가 있는지 확인한다.
- 기본 설정을 켠 뒤 분석을 일으킨 push·PR 이력이 있는지 확인한다.
- 개발 활동이 없는 저장소를 계속 검사해야 한다면 조직의 30일 검사 옵션을 확인한다.
구성 화면의 View CodeQL configuration과 도구 상태 페이지에서 설정과 검사 시각을 확인할 수 있다. 초기 검사가 성공했다면 다음 질문은 ‘CodeQL을 다시 켤까’보다 ‘주간 주기를 시작할 분석 이력이 있는가’다. 휴면 상태를 유지할 저장소라면 그에 맞는 정기 검사 정책을 선택해야 한다.