@echo off
chcp 65001 >nul
setlocal
cd /d "%~dp0"
if "%~1"=="" (
echo.
echo 사용법:
echo run-analyzer.bat "C:\경로\VehicleMapper.xml"
echo.
echo 또는 분석할 .xml / .sql 파일을
echo 이 BAT 파일 위로 드래그 앤 드롭하세요.
echo.
pause
exit /b 1
)
where javac >nul 2>nul
if errorlevel 1 (
echo.
echo [오류] javac를 찾을 수 없습니다.
echo.
echo JDK 17 이상이 설치되어 있고
echo javac.exe가 PATH에 등록되어 있는지 확인하세요.
echo.
echo 확인 명령어:
echo java -version
echo javac -version
echo.
pause
exit /b 2
)
where java >nul 2>nul
if errorlevel 1 (
echo.
echo [오류] java를 찾을 수 없습니다.
echo.
echo JDK 17 이상이 설치되어 있고
echo java.exe가 PATH에 등록되어 있는지 확인하세요.
echo.
pause
exit /b 3
)
echo.
echo ============================================
echo SQL Monster Analyzer
echo ============================================
echo.
echo [1/2] 분석기 컴파일 중...
echo.
javac --release 17 -encoding UTF-8 SqlMonsterAnalyzer.java
if errorlevel 1 (
echo.
echo [오류] Java 컴파일에 실패했습니다.
echo.
echo 위에 출력된 컴파일 오류 내용을 확인하세요.
echo.
pause
exit /b 4
)
set "OUT=%~dp1sql-analysis-report"
echo.
echo [2/2] SQL 분석 중...
echo.
echo 입력 파일:
echo %~1
echo.
java SqlMonsterAnalyzer "%~1" "%OUT%"
if errorlevel 1 (
echo.
echo [오류] SQL 분석 중 문제가 발생했습니다.
echo.
echo 위에 출력된 오류 내용을 확인하세요.
echo.
pause
exit /b 5
)
echo.
echo ============================================
echo 분석 완료
echo ============================================
echo.
echo 결과 폴더:
echo "%OUT%"
echo.
echo 먼저 아래 파일을 확인하세요.
echo.
echo 1. summary.txt
echo - 전체 SQL 구조와 통계
echo.
echo 2. duplicates.txt
echo - 중복 서브쿼리 / CASE 목록
echo.
echo 3. correlated_subqueries.txt
echo - 외부 Alias 참조 가능성이 있는
echo 상관 서브쿼리 후보
echo.
echo 주의:
echo 원본 Mapper / SQL 파일은 수정하지 않습니다.
echo.
pause