개발 폴더에서 안쓰는 함수 파악하기

전효준·2025년 7월 13일

개발 폴더(예: Python 프로젝트)에서 “사용 중인 함수”와 “사용하지 않는(죽은) 함수(dead code)”를 파악하는 방법중 가장 간단한정적 분석(static analysis)중 하나를 소개하려고 한다.

vulture

Vulture는 AST(추상 구문 트리)를 기반으로 “어디에서도 참조(reference)되지 않는 함수, 클래스, 변수”를 찾아준다.

1. 설치

pip install vulture

2. 사용법

vulture path/to/your/project/

이때 제외할 파일이나 패턴을 --exclude 옵션으로 지정할 수 있다.
구체적으로 아래와 같은 폴더는 탐색에서 제외하는게 좋다.

__pycache__/*.pyc 파일

venv/ : 가상환경 폴더

.git/ (깃 내부 메타데이터)

build/ , dist/ (배포용 빌드 산출물)

node_modules/ (프론트엔드가 포함된 프로젝트일 때)

migrations/ (Django 등 마이그레이션 스크립트—버전 관리 하니 분석 불필요)

docs/_build/ (Sphinx 등 문서 빌드 결과)

coverage_html/ 또는 htmlcov/ (커버리지 리포트)


예시로 Vulture를 돌릴 때는 이렇게 여러 경로를 한꺼번에 제외할 수 있다.

vulture . \
  --exclude venv/,__pycache__/,node_modules/,build/,dist/,*.egg-info/,migrations/,docs/_build/,htmlcov/

🏁 결과 예시

app.py:36: unused variable 'note' (60% confidence)
components/charts.py:7: unused function 'draw_pie_chart' (60% confidence)
components/charts.py:53: unused function 'draw_line_chart' (60% confidence)
pages/CategoryList.py:69: unused variable 'non1' (60% confidence)
pages/CategoryList.py:69: unused variable 'non2' (60% confidence)
pages/CategoryList.py:84: unused variable 'selected_categories' (60% confidence)
utils/metrics.py:177: unused function 'get_recent_videos' (60% confidence)
utils/supabase/get_data.py:65: unused function 'fetch_all_video_snapshots' (60% confidence)
profile
아자아자 화이팅.

0개의 댓글