Naver에서 제공하는 오픈소스중 하나로 데드 코드 분석 도구
Dead Code 란?
Dead Code는 API Client들이 서비스를 중단하거나 기획의 스펙 아웃 등의 이유로 더 이상 사용하지 않는 코드를 의미함. API를 사용하는 Client에서 사용을 하지 않게 되어 서버 개발자에게 알려주면 좋지만, 이를 매번 알려주는 것도 한계가 있으며 시간이 지나며 데드 코드는 점점 늘어나고 방치되어 성능에 영향을 미칠 수 있다.
이런 Dead Code를 추적/분석 할수 있는 도구가 바로 Scavenger 임.
우선 Scavenger은 JAVA11 이상을 지원하니 참고~~~~
Github : https://github.com/naver/scavenger/releases
Releases · naver/scavenger
A runtime dead code analysis tool. Contribute to naver/scavenger development by creating an account on GitHub.
github.com
우선 3개의 jar 파일과 Scavenger configuration 파일이 필요, 위의 release에서 최신 버전의 jar 파일을 다운로드한다.
- scavenger-collector-boot-{version}.jar
- scavenger-api-boot-{version}.jar
- scavenger-agent-java-{version}.jar
위의 3개 jar파일을 순서대포 실행
. Scavenger Collector 실행
일반적인 jar 파일을 실행 하는것과 동일 함
java -jar scavenger-collector-boot-{version}.jar
Collector는 기본적으로 8080 포트를 사용합니다. 다른 포트를 사용하고자 하면 -D 옵션을 사용하면됩니다.
java -Darmeria.port={port} -jar scavenger-collector-boot-{version}.jar
collector는 로컬 profile에서 in-memory H2를 사용하기 때문에 애플리케이션이 시작될 때마다 데이터가 초기화 됩니다.
H2 profile을 활성화하여 이 문제를 해결할 수 있습니다.
java -Dspring.profiles.active=h2 -jar scavenger-collector-boot-{version}.jar
. Scavenger API 실행
API실행전에 Collector 를 실행 시켜둔 상태이어야 한다. API는 collector의 포트 번호를 설정하여 실행 시켜야 하며 기본적으로 8080 을 사용하기에 Collector의 포트를 변경하지 않았다면 다른 포트로 변경해서 사용해야 한다.
java -Dscavenger.collector-server-url=http://localhost:{collector's_port} -jar scavenger-api-boot-{version}.jar
API 또한 h2 프로필을 활성화하여 실행할 수 있다.
java -Dscavenger.collector-server-url=http://localhost:{collector's_port} -Dspring.profiles.active=h2 -jar scavenger-api-boot-{version}.jar
. Scavenger Agent 실행
API가 잘 실행되었다면 브라우저를 통해서 http://설치위치:8081/scavenger로 접속하면 아래와 같은 화면을 만날수 있다.

좌측 하단의 [워크스페이스 생성] 버튼을 눌러 새로운 workspace를 만든다. 이름을 자유롭게 지정하면 된다.
생성된 workspace로 들어가 [Scavenger 설정 파일 생성하기] 를 눌러 scavenger config 파일을 생성 한다.

여기에서 packages설정을 통해 우리가 지정한 데드 코드 분설할 패키지를 지정 할수 있다.
각자 필요한 애플리케이션 의 패키지 또는 특정 내장 패키지를 입력하면 되며 추가적으로 설정정보는 github을 참고하여 설정하면된다. 설정후 다운로드 버튼을 누르면 config 파일이 다운로드 된다.

scavenger를 실행할 config 파일 생성이 완료되었다 이제 agent 를 실행해볼 차례이다. 아래와 같이 실행하면 된다.
java -Dscavenger.configuration=scavenger.conf -javaagent:scavenger-agent-java-{version}.jar -jar {own_application}.jar
실행이 완료되면 생성한 workspace에 agent 가 추가된걸 볼수 있다.
이후에 스냅샷을 생성해준다.
이제 Application의 package 구조를 확인할 수 있고 package 또는 Class 단위에서 어느정도의 Method가 호출되는지 확인 할수 있다..........!!
Scavenger을 통해서 데드 코드를 분석하고 제거하는데 많은 도움이 될것 같다......
'ETC' 카테고리의 다른 글
| vi 편집시 자동 주석 on/off (0) | 2024.01.25 |
|---|---|
| URL 정리 (0) | 2023.01.17 |
| 부하테스트 툴 (locust) _ docker-compose (0) | 2022.12.13 |
| Intermax License 업데이트 하기 (0) | 2022.03.04 |
| NKEY BT61 페어링 방법 (0) | 2021.08.06 |