rafal-qa/slopo
Embedding-based code duplication detector
해결하는 문제
Slopo는 코드베이스 전체에서 정확히 일치하지 않는 코드 중복을 탐지하기 위한 CLI 도구입니다. 기존 도구는 동일하게 복사된 코드를 쉽게 찾을 수 있지만, Slopo는 "유사한" 코드에 초점을 맞춥니다. 즉, 비슷하게 작성되었지만 완전히 일치하지 않는 스니펫으로, 종종 다른 모듈이나 큰 파일 사이에 흩어져 있어 인간이나 기존 도구로는 감지하기 어려운 경우가 많습니다.
작동 방식
Slopo는 코드 단위를 벡터로 표현하기 위해 임베딩 모델을 사용합니다. 각 코드 단위에 대해 임베딩을 계산하고, 코사인 유사도가 높은 쌍을 식별합니다. 이러한 유사한 단위는 클러스터로 그룹화되며, 유사도와 코드베이스 내 거리에 따라 재순위 지정됩니다 (거리가 멀수록 보상이 적용됨). 결과로 생성된 클러스터는 보고서 형태로 제시되며, 이후 AI 코딩 에이전트가 실제로 리팩터링이 필요한 중복 코드인지 확인할 수 있습니다.
대상 사용자
Python, TypeScript, JavaScript, Java, Kotlin, C#, Go, Rust, PHP, Elixir 등 여러 언어를 지원하는 대규모 프로젝트에서 중복되고 유사한 코드를 식별하고 리팩터링하여 기술적 부채를 줄이고자 하는 개발자 및 팀에게 적합합니다.
주요 특징
- 임베딩 기반 탐지: Jina AI, Voyage AI, 또는 로컬 Ollama 모델을 통해 ML 모델을 사용하여 정확한 텍스트 일치가 아닌 의미적 유사도를 탐지합니다.
- 증분적 재색인: 변경된 파일만으로 인덱스를 업데이트하여 시간과 자원을 절약합니다.
- AI 에이전트 호환: AI 코딩 에이전트가 필터링 및 처리할 수 있도록 특별히 설계된 보고서를 생성합니다.
- 유연한 구성: LiteLLM를 통해 다양한 임베딩 제공자를 지원하며, 유사도 및 복잡도 임계값을 조정할 수 있습니다.
관련
- Dispatch
- Dispatch
- 프로젝트
- 프로젝트
- 프로젝트