Show HN: CLI tool for detecting non-exact code duplication with embedding models

개요

Show HN으로 소개된 이 CLI 도구는 임베딩 모델을 사용하여 코드베이스 내에서 찾기 어려운 비정확한 코드 중복을 탐지하는 데 중점을 둡니다.

주요 내용

* 비정확한 코드 중복 탐지: 정확히 복사된 코드나 가까이 있는 중복은 쉽게 발견되지만, 이 도구는 서로 멀리 떨어져 있거나 다른 모듈에 분산된, 비슷하게 작성된 코드 조각과 같이 탐지가 어려운 중복을 식별합니다.
* 작동 방식: 각 코드 단위에 대한 임베딩을 계산한 후, 임베딩이 가까운 쌍을 찾아 잠재적 중복으로 간주합니다. 동일한 기능을 다른 방식으로 구현한 코드는 다른 임베딩을 생성하므로 탐지되지 않습니다.
* 지원 언어: Python, TypeScript, JavaScript, Java, Kotlin, C#, Go, Rust를 지원합니다.
* 결과 활용: 탐지된 유사 코드 단위 클러스터를 유사도 및 코드베이스 내 거리 순으로 순위를 매겨 AI 코딩 에이전트가 실제 중복인지 확인할 수 있도록 합니다. 검토된 클러스터는 무시하거나 리팩토링을 위해 전달할 수 있습니다.
* 실제 워크플로우: 점진적 재인덱싱과 slopo.ignore.txt 파일을 사용하여 이미 검토된 클러스터를 제외하고, AI 코딩 에이전트가 실제 중복이 아닌 클러스터를 필터링하며, 리팩토링 기반을 마련하는 워크플로우를 제공합니다.
* 설치 및 설정: uv tool install slopo로 설치하고, slopo init으로 설정 파일을 생성하며, slopo index, slopo embed, slopo analyze 명령어를 사용합니다.
* 임베딩 모델: LiteLLM과 호환되는 외부 제공업체(예: Voyage AI)의 임베딩 모델을 사용하며, API 키는 환경 변수로 설정 가능합니다.
* 설정 및 파라미터: source_dir, embedding_model, similarity_threshold, rerank_threshold 등 다양한 구성 파라미터를 지원하며, 일부 파라미터는 초기 인덱싱 후 변경 시 slopo.db를 삭제하고 재인덱싱해야 합니다.
* 정확한 복사본 보고: 비정확한 중복 탐지가 주 목표이지만, 동일한 코드가 여러 경로에 있는 정확한 복사본도 보고하며, 이 경우 코드 조각을 반복하는 대신 나타나는 모든 경로를 나열합니다.

시사점

이 CLI 도구는 코드베이스의 숨겨진 유사성을 효율적으로 발견하여 코드 품질을 개선하고 잠재적인 버그를 줄이며, AI 코딩 에이전트와의 협업을 통해 리팩토링 프로세스를 자동화하는 데 기여할 수 있습니다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions