# sql-analyzer **Repository Path**: burcelee0321/sql-analyzer ## Basic Information - **Project Name**: sql-analyzer - **Description**: 找出仓库中java文件对应的表和字段名,sql语句 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-15 - **Last Updated**: 2026-03-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SQL Analyzer Java 静态代码分析工具,用于扫描 Java 源码中的数据库访问和 SQL 语句。 ## 功能特性 - 支持 MyBatis 注解(@Select, @Insert, @Update, @Delete) - 支持 JPA @Query 注解(包括原生 SQL 和 JPQL) - 支持 JDBC 原生调用(Connection.prepareStatement 等) - 支持 Spring JdbcTemplate - 支持 jOOQ DSL - 支持 MyBatis-Plus BaseMapper 自动方法 - 支持 Spring Data JPA 方法名查询 - 支持 EntityManager 调用 - 支持 MyBatis XML Mapper 文件 ## 技术栈 - Java 21 - JavaParser 3.26.2 - JSqlParser 4.8 - Picocli 4.7.6 - SLF4J + Logback - Maven Shade Plugin ## 构建 使用 Maven Wrapper 构建: ```bash mvnw.cmd clean package -DskipTests ``` 构建完成后,可执行 JAR 文件位于 `target` 目录。 ## 使用方法 ### 基本用法 ```bash java -jar target/sql-analyzer-1.0.0.jar --source <源码目录> ``` ### 完整参数 ```bash java -jar target/sql-analyzer-1.0.0.jar \ --source <源码目录> \ --mapper \ --output <报告输出目录> \ --verbose ``` ### 参数说明 - `-s, --source`: 要扫描的源码目录路径(必需) - `-m, --mapper`: MyBatis Mapper XML 文件目录路径(可选) - `-o, --output`: 报告输出目录(默认:./report) - `-v, --verbose`: 详细输出模式 - `--help`: 显示帮助信息 - `--version`: 显示版本信息 ## 输出报告 工具会在指定的输出目录生成以下文件: - `sql-analysis-report.json`: 完整的 JSON 报告 - `sql-analysis-summary.json`: 摘要统计信息 - `index.html`: 可视化的 HTML 报告 ## 报告内容 每个 SQL 访问点包含以下信息: - `type`: 访问类型(mybatis_annotation, jpa_query, jdbc, jdbcTemplate, jooq, entity_manager, repository_method, mybatis_xml_mapping) - `javaFile`: Java 文件路径 - `xmlFile`: XML 文件路径(如果是 MyBatis XML) - `method`: 方法名 - `sqlSnippets`: SQL 片段列表 - `tables`: 涉及的表名列表 - `columns`: 涉及的字段列表 ## 示例 扫描包含 MyBatis Mapper 的项目: ```bash java -jar sql-analyzer-1.0.0.jar \ --source ./src/main/java \ --mapper ./src/main/resources/mapper \ --output ./report ``` 扫描完成后,打开 `report/index.html` 查看可视化报告。 ## 项目结构 ``` sql-analyzer/ ├── src/main/java/com/sqlanalyzer/ │ ├── SqlAnalyzerCLI.java # 主入口类 │ ├── core/ │ │ ├── DbAccessScanner.java # 核心扫描类 │ │ ├── EntityMappingCollector.java # 实体映射收集器 │ │ ├── MyBatisXmlParser.java # MyBatis XML 解析器 │ │ ├── SqlParser.java # SQL 解析器 │ │ └── SqlExtractionResult.java # 结果数据模型 │ └── report/ │ ├── JsonReportGenerator.java # JSON 报告生成器 │ └── HtmlReportGenerator.java # HTML 报告生成器 ├── src/main/resources/ │ └── logback.xml # 日志配置 ├── pom.xml # Maven 配置 └── mvnw.cmd # Maven Wrapper ``` ## 日志 日志输出到: - 控制台(INFO 级别) - 文件 `sql-analyzer.log`(DEBUG 级别) ## 注意事项 1. 确保 JAVA_HOME 环境变量已正确设置 2. 首次运行会下载 Maven 依赖,可能需要一些时间 3. 工具使用静态分析,不执行任何代码 4. 对于复杂的 SQL(如动态 SQL),可能无法完全解析 ## 许可证 本项目仅供学习和研究使用。