Skip to content

[Enhancement] DAO-XML SQL ID 매칭 개선 #35

@KBroJ

Description

@KBroJ

문제

일부 DAO 메서드에서 SQL ID가 추출되지 않음

// ✅ 추적됨
selectOne("bookFinder.getBookFinderInfo", param);

// ❌ 추적 안 됨
getSqlSession().selectOne("bookFinder.xxx", param);

원인

extractSqlId()가 특정 메서드명만 인식하고, 문자열 리터럴만 추출

// JavaSourceParser.java
List<String> sqlMethods = List.of("selectOne", "selectList", ...);
if (firstArg instanceof StringLiteralExpr) { ... }  // 변수면 스킵

해결 방안: XML 기반 역매칭

  • XmlParsergetAllSqlIds() 메서드 추가 - 모든 namespace.id 수집
  • FlowAnalyzer.analyze() 시작 시 SQL ID Set 미리 수집
  • extractSqlId() 개선 - 메서드 내 모든 문자열 리터럴 검사
  • 문자열이 SQL ID Set에 존재하면 매칭 (메서드명 무관)

장점

  • 메서드 체이닝 getSqlSession().selectOne(...) 자동 지원
  • 하드코딩된 메서드명 목록 제거
  • XML에 존재하는 SQL만 매칭 (오탐 감소)

관련 파일

  • src/main/java/com/codeflow/parser/JavaSourceParser.java
  • src/main/java/com/codeflow/parser/XmlParser.java

참고

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions