LLM WikiAccess-protected knowledge portal
🔒 내부용 · 비배포 (포트폴리오에는 일반화 버전만 공개)

함수 추상화 정확도 문제 분석·해결 (2023)

코드 유사성 분석 도구의 함수 추상화 결함과 해결 과정을 새 팀원이 이해할 수 있는 수준의 온보딩 상세

0한눈에

1왜 문제였나

도구는 소스를 함수 단위로 추상화한 뒤 시그니처를 비교해 유사 코드·취약점을 탐지한다. 그런데 동일 로직 함수가 일관되게 추상화되지 않으면 같은 함수가 서로 다른 것으로 인식돼 매칭이 깨진다. 특히 익명 함수는 매번 다른 이름으로 처리되어, 동일 함수임에도 별개로 잡히는 게 가장 컸다.

2진행 순서

  1. C++ / Java 등 여러 언어 소스로 심층 테스트하며 불일치 케이스 수집
  2. 원인 규명: 구문 분석기가 특정 키워드(final, Map<> 등)를 처리하지 못함 + 내부 정규식 로직 결함
  3. 해결: 익명 함수가 매번 다른 이름으로 처리되는 문제를, 함수 내용 기반 해시값으로 고유·일관된 함수명으로 대체하는 로직 개발
  4. 적용 후 추상화 정확성·일관성, 유사 코드 탐지 개선 확인
원인이 하나가 아니었다. 파서(키워드/제네릭 처리)와 정규식 로직 두 갈래를 분리해 각각 확인해야 했다.
같은 내용이면 항상 같은 해시 → 같은 함수명. 익명 함수의 "매번 다른 이름" 문제가 구조적으로 해소.

3온보딩 포인트

4공개(포트폴리오)와의 차이

공개 버전(human/portfolio/items/function-abstraction-hashgen.html)은 내부 도구·코드네임 등 식별정보를 제거하고 "코드 유사성 분석 도구"로 일반화해 문제·접근·임팩트 중심으로 정리했다. 이 내부 문서는 본인 참고/온보딩용으로 도구·구현 디테일을 더 직접적으로 기술한다.