6.4 KiB
6.4 KiB
Java代码健康分析器
Java 代码审查 AI 静态分析 安全检测
Java Doctor
AI 驱动的 Java 代码健康分析器,扫描安全、性能、正确性和架构问题。输出 0-100 分的评分及可操作的诊断建议,自动检测涵盖 22 个类别的 280+ 条规则。
概述
Java Doctor 是一个 AI 驱动的代码审查技能,用于分析 Java 项目中的问题。它自动检测项目所用技术(Spring Boot、gRPC、JPA、Lombok)并按需加载相关规则。
280+ 条规则,覆盖 22 个类别——从安全漏洞到虚拟线程陷阱,再到深度测试检查。
支持主流 AI 编程助手:
| 助手 | 支持方式 |
|---|---|
| Claude Code | 原生(skills) |
| Cursor | 原生(skills) |
| KiloCode | 原生(skills) |
| GitHub Copilot | 通过自定义指令 |
| Windsurf | 原生(skills) |
快速开始
# 通过 skills CLI 安装(推荐)
npx skills add ajaywadhara/java-doctor
# 或手动克隆
git clone https://github.com/ajaywadhara/java-doctor.git
# 复制到 AI 助手的 skills 目录
# Claude Code / Cursor / KiloCode:
cp -r java-doctor ~/.claude/skills/
# 或
cp -r java-doctor ~/.cursor/skills/
# 或
cp -r java-doctor ~/.kilocode/skills/
激活技能后说:"运行 Java Doctor"
功能特性
280+ 条规则,覆盖 22 个类别
| 技术 | 检测条件 | 规则数 |
|---|---|---|
| 核心 | 始终 | 108 条(安全、空值安全、性能、并发等) |
| Spring Boot | spring-boot-starter-parent |
+23 条 |
| gRPC | grpc-java |
+26 条 |
| JPA/Hibernate | hibernate、spring-data-jpa |
+15 条 |
| Lombok | lombok |
+5 条 |
| 构建工具 | 始终 | +20 条 |
| 虚拟线程 | 检测到 Java 21+ | +10 条(synchronized 钉死、ScopedValue、StructuredTaskScope) |
| 测试深度 | 始终 | +10 条(JaCoCo、Testcontainers、Awaitility、AssertJ) |
| 死代码 | 始终 | +15 条 |
| Effective Java | 始终 | +37 条(版本感知,Java 8-25) |
| 最佳实践 | 始终 | +15 条 |
| API 设计 | 始终 | +11 条 |
版本检测
- Java:从 pom.xml/build.gradle 自动检测 8-25 版本
- Spring Boot:自动检测 3.x 或 4.x
评分标准
- 75-100:优秀 - 可投入生产
- 50-74:需改进 - 处理警告项
- 0-49:危急 - 必须修复阻塞问题
输出格式
- Markdown(默认)
- JSON
- HTML
- SARIF(IDE 集成)
- CSV
使用方式
"运行 Java Doctor"
"检查我的 Java 代码"
"查找代码中的安全问题"
"扫描性能问题"
"分析这个 Java 项目"
触发短语
run java doctorscan my java codejava code reviewfind bugs in javacheck for security issues in javafind performance problemsanalyze java code
规则类别(280+ 条)
| 类别 | 加载时机 | 描述 |
|---|---|---|
| 安全(16条) | 始终 | 硬编码密钥、SQL 注入、OWASP Top 10 |
| 空值安全(8条) | 始终 | Optional.get()、空值返回 |
| 异常处理(8条) | 始终 | 被吞掉的异常 |
| 性能(12条) | 始终 | N+1 查询、字符串拼接 |
| 并发(12条) | 始终 | 线程安全 |
| 资源管理(7条) | 始终 | 未关闭的流、连接 |
| 架构(10条) | 始终 | 上帝类、过长方法 |
| 日志(7条) | 始终 | System.out、敏感数据 |
| 代码风格(35条) | 始终 | 格式化、命名规范 |
| Effective Java(37条) | 始终 | 版本感知(Java 8-25) |
| 最佳实践(15条) | 始终 | 魔法数字、命名、复杂度 |
| API 设计(11条) | 始终 | REST 规范、分页 |
| 测试(8条) | 始终 | 缺少测试、断言 |
| 测试深度(10条) | 始终 | JaCoCo、Testcontainers、Awaitility、AssertJ |
| 死代码(15条) | 始终 | 未使用的方法、字段、导入 |
| 虚拟线程(10条) | Java 21+ | synchronized 钉死、ScopedValue、StructuredTaskScope |
| Spring/Boot(23条) | 检测到时 | @Transactional、Boot 4.x |
| gRPC(26条) | 检测到时 | Channel 复用、TLS |
| JPA(15条) | 检测到时 | Hibernate 问题 |
| Lombok(5条) | 检测到时 | 实体上的 @Data、@Builder 默认值 |
| 构建工具(20条) | 始终 | 依赖、插件 |
项目结构
java-doctor/
├── SKILL.md # 主技能定义(280+ 条规则)
├── CHANGELOG.md # 版本历史
├── LICENSE # MIT 许可证
├── README.md # 本文件
└── references/ # 详细参考资料
├── bug-patterns.md
├── security-checklist.md
├── performance-antipatterns.md
├── spring-best-practices.md
├── effective-java-mapping.md
├── version-specific-changes.md
├── grpc-best-practices.md
├── virtual-threads-guide.md
└── testing-depth-guide.md
面向 AI 助手开发者
工具要求
请根据您的助手适配以下工具:
- Bash:执行 git 命令、运行分析
- Read:读取源文件
- Write:生成报告
- Glob:查找 Java 文件
- Grep:搜索模式
- question:向用户寻求澄清
Token 用量
- 启动:约 100 tokens(元数据)
- 激活:约 4,000 tokens(核心规则 + 检测到的技术)
- 参考资料:约 20,000 tokens(按需加载)
输出示例
# Java Doctor 报告
## 摘要
| 指标 | 值 |
|--------|-------|
| 评分 | 75/100 |
| 状态 | 需改进 |
| Java 版本 | 17 |
| 分析文件数 | 12 |
| 问题 | 严重: 2, 错误: 3, 警告: 8 |
## 问题
### 安全(严重)
1. AuthService.java:42 - 硬编码密码
修复:使用 @Value 注入
贡献
- Fork 本仓库
- 创建功能分支
- 提交 PR
Skills 市场
skills.sh
通过 CLI 安装:
npx skills add ajaywadhara/java-doctor
许可证
MIT 许可证 - 详见 LICENSE 文件
作者
Ajay Wadhara