Repository navigation
[fix] main CI lint 실패 90건을 테스트 코드에서 고친다 #563
Copy link
Copy link
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
요약
main의 CI verify job이 golangci-lint 단계에서 90건을 지적받고 실패한다. 이 단계가 실패하면 Build, race 테스트, self-verify 단계가 건너뛰어지므로 main에서 갈라진 PR은 변경 내용과 상관없이 체크가 실패한다. 지금 #562(#561)가 이 이유로 머지되지 못하고 있다.
원인
지적은 2026-10-12에 main으로 들어온 테스트 보강 커밋들(mutation 대응·coverage 확대)에서 생겼다. 그날 7ad771aa까지는 CI가 통과했고 dd271b8b부터 실패한다. 지적된 위치는 모두 *_test.go 파일이다.
| 종류 | 건수 | 내용 |
|---|---|---|
| errcheck | 62 | requireOrcaCode, persistenceFailure, requiredPlanError처럼 error 타입을 돌려주는 테스트 helper의 반환값을 버린다. mcpservice/instance_test.go의 defer instance.Release()도 포함된다 |
| govet inline | 25 | //go:fix inline이 붙은 helper(orcaTestUint64, handoffTestUint64, durationRef, i64)를 호출한다 |
| unused | 3 | executioncmd의 explicitActor, issueopscycle의 prefetches 필드, selfverify의 stepLabels |
재현 절차
- main을 체크아웃한다.
- CI와 같은 golangci-lint v2.12.2를 설치한다:
GOBIN=/tmp/golangci-v2 go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.12.2 - Linux 기준으로 실행한다:
GOOS=linux GOTOOLCHAIN="go$(go list -m -f '{{.GoVersion}}')" /tmp/golangci-v2/golangci-lint run ./...
90 issues:
* errcheck: 62
* govet: 25
* unused: 3
CI에서는 main push run 38562720520과 PR #562의 run 38692432299, 38692437854가 같은 90건으로 실패했다.
기대 동작과 실제 동작
- 기대 동작: main에서 golangci-lint가 지적 없이 끝나고, CI
verifyjob이 Build·race 테스트·self-verify까지 실행해 통과한다. - 실제 동작: lint 단계에서 90건으로 실패하고 뒤 단계는 모두 skipped로 남는다. 그래서 어느 PR도 CI 검증을 받지 못하고
merge-pr는checks_failing으로 머지를 거부한다.
범위와 비목표
- 범위: golangci-lint가 지목한 테스트 파일에서 지적 90건을 코드로 고친다. 반환값을 쓰지 않는 helper 호출은 값을 검사에 쓰거나 helper 형태를 바꾸고, inline 지적은 호출을
new(...)로 바꾸고, 쓰지 않는 선언은 지운다. - 비목표:
.golangci.yml에 제외 규칙이나//nolint를 더해 지적을 숨기지 않는다..issueops/cautions/2026-10-03-native-http-validation-and-lint-toolchain.md의 "실제 errcheck·deprecated API·unused 지적은 코드와 테스트에서 해결한다." 규칙을 따른다. - 비목표: production 코드와 CLI/MCP 계약은 바꾸지 않는다. remote score 라벨 점수가 한국어 이슈에서 라벨을 거의 고르지 못한다 #561 사이클의 base 동기화와 재검증은 이 이슈가 머지된 뒤 그 사이클에서 따로 진행한다.
- orca 테스트 파일도 함께 고친다. [refactor] Orca 연동을 걷어내고 direct 실행과 Herdr·수동 터미널 인계만 남긴다 #560(Orca 연동 제거)은 아직 계획 단계라서, 그것을 기다리면 main CI가 계속 실패한다. #560이 나중에 같은 파일을 지우면 그쪽의 삭제를 따르면 된다.
완료 기준
- 재현 절차의 golangci-lint 명령이
0 issues.로 끝난다. -
go vet ./...,go test ./... -count=1,go test -race ./... -count=1,go build ./cmd/issueops가 통과한다. - 이 이슈 PR의 CI
verifyjob이 lint 이후 단계까지 모두 통과한다. -
.golangci.yml설정과//nolint주석 수가 늘지 않는다.
검증
GOOS=linux GOTOOLCHAIN="go$(go list -m -f '{{.GoVersion}}')" /tmp/golangci-v2/golangci-lint run ./...
go vet ./...
go test ./... -count=1
go test -race ./... -count=1
go build -o bin/issueops ./cmd/issueops
git diff --stat origin/main -- .golangci.yml기대 결과: lint는 0 issues.를 출력하고, 나머지 명령은 exit 0으로 끝나며, .golangci.yml diff는 비어 있다.
계획 검토
계획 검토: 1차 수정 요청(지적 3건) → 계획 수정 → 2차 통과(지적 3건)
진행 결과
main CI의 golangci-lint 지적 90건을 설정 제외나 //nolint 없이 테스트 코드에서 고쳤고, 그동안 lint에 가려 있던 internal/adapter/update 테스트의 Linux 전용 결함도 함께 고쳤습니다. PR #564가 squash로 머지되어 main CI가 다시 Lint, Build, race 테스트, self-verify 단계까지 통과합니다.
- 계획: 반환값을 버리던 단언 helper를 나누고,
//go:fix inlinehelper를 인라인하고, 쓰지 않는 선언을 지우기로 했습니다. - 리뷰: 1차 계획 리뷰가 self-verify 게이트가 빠졌다고 지적해 게이트를 더했고, 2차에서 통과했습니다.
- 구현: [fix] main CI lint 실패 90건을 테스트 코드에서 고친다 #564 에서 테스트 파일 19개만 고쳤습니다. production 코드와
.golangci.yml은 바뀌지 않았습니다. - 재작업: 첫 완료 뒤
pull_requestCI가TestRuntimeInstall의text file busy로 두 번 실패해 사이클을 다시 열었고, 스크립트를 쓴 직후 실행하는 테스트 세 개에서t.Parallel을 뺐습니다. - 확인: 로컬 lint
0 issues., race 전체 테스트와 self-verify 통과, PR CI는 push와 pull_request 두 이벤트 모두 통과했습니다. - 남은 것: remote score 라벨 점수가 한국어 이슈에서 라벨을 거의 고르지 못한다 #561(PR [fix] remote score 라벨 점수가 한국어 이슈에서 라벨을 고르게 한다 #562)과 [refactor] Orca 연동을 걷어내고 direct 실행과 Herdr·수동 터미널 인계만 남긴다 #560(PR [refactor] Orca 연동을 걷어내고 direct 실행과 Herdr·수동 터미널 인계만 남긴다 #565)은 새 main으로 base를 동기화한 뒤 다시 검증받아야 합니다.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working
Activity
test(lint): fix the 90 golangci-lint findings in test helpers
docs(issueops): add execution report for issue #563
test(update): stop running freshly written scripts in parallel tests
docs(issueops): update the #563 report with the second CI round
[fix] main CI lint 실패 90건을 테스트 코드에서 고친다 (#564)