본문으로 건너뛰기

nose

  • 2026-06-04 (modified: 2026-06-12)

형식이 동일한 코드 뿐 아니라 동작이 동일한 코드(type-4 clones)도 일부 찾아주는 코드 중복 검사기.

github.com/corca-ai/nose

왜 만들었나

코드 중복은 보통 다음 다음 네 가지로 분류한다:

  • Type-1: 공백이나 코멘트를 빼면 똑같이 생긴 코드 중복
  • Type-2: 식별자나 리터럴 등만 다른 코드 중복 (α\alpha-renaming 같은 걸 잡아준다.)
  • Type-3: 거의 비슷한데 중간에 문장이 추가되거나 삭제되거나 변형된 형태
  • Type-4: 동일한 계산을 수행하지만 문법적으로는 다르게 생긴 형태

널리 쓰이는 중복 검사기인 jscpd는 Type-1과 Type-2를 일부 잡아준다. nose는 추가로 Type-3와 Type-4를 일부 잡아줄 수 있다.

코딩 에이전트 실험들

코딩 에이전트 덕에 다양한 시도를 해볼 수 있었다.

  • LLMs as labelers: 서로 다른 언어, 서로 다른 분야의 저장소 약 100개를 클론하고, 이걸 여러 LLM이 독립적으로 레이블링하도록 하여 평가를 위한 데이터셋을 만들었다.
  • Dyanmic workflow: 레이블링 과정에서 Claude Code의 “dynamic workflow” 기능을 쓰니 대규모 병렬 평가, 평가자 간 신뢰도 검사 등을 쉽게 할 수 있었다. 물론 토큰은 어마어마하게 녹았다.
  • 적대적 공진화: 한쪽에서는 점점 더 어려운 문제를 내고(동일한 행동을 하는 코드이지만 겉보기엔 다르게 생긴 코드 생성), 한쪽에선 이걸 점점 더 잘 찾아내게 하는 루프를 돌려봤다. 잘 작동함.