catalog/repos/ajaywadhara--java-doctor.md

216 lines
6.4 KiB
Markdown
Raw Permalink Normal View History

2026-04-07 11:44:56 +08:00
# Java代码健康分析器
`Java` `代码审查` `AI` `静态分析` `安全检测`
# Java Doctor
<p align="center">
<a href="https://github.com/ajaywadhara/java-doctor/releases/latest">
<img src="https://img.shields.io/github/v/release/ajaywadhara/java-doctor?include_prereleases&label=version" alt="版本">
</a>
<a href="https://opensource.org/licenses/MIT">
<img src="https://img.shields.io/badge/license-MIT-green.svg" alt="许可证">
</a>
<a href="https://github.com/ajaywadhara/java-doctor/stargazers">
<img src="https://img.shields.io/github/stars/ajaywadhara/java-doctor" alt="Stars">
</a>
</p>
**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 |
## 快速开始
```bash
# 通过 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
- SARIFIDE 集成)
- CSV
## 使用方式
```
"运行 Java Doctor"
"检查我的 Java 代码"
"查找代码中的安全问题"
"扫描性能问题"
"分析这个 Java 项目"
```
## 触发短语
- `run java doctor`
- `scan my java code`
- `java code review`
- `find bugs in java`
- `check for security issues in java`
- `find performance problems`
- `analyze java code`
## 规则类别280+ 条)
| 类别 | 加载时机 | 描述 |
|----------|------------|-------------|
| 安全16条 | 始终 | 硬编码密钥、SQL 注入、OWASP Top 10 |
| 空值安全8条 | 始终 | Optional.get()、空值返回 |
| 异常处理8条 | 始终 | 被吞掉的异常 |
| 性能12条 | 始终 | N+1 查询、字符串拼接 |
| 并发12条 | 始终 | 线程安全 |
| 资源管理7条 | 始终 | 未关闭的流、连接 |
| 架构10条 | 始终 | 上帝类、过长方法 |
| 日志7条 | 始终 | System.out、敏感数据 |
| 代码风格35条 | 始终 | 格式化、命名规范 |
| Effective Java37条 | 始终 | 版本感知Java 8-25 |
| 最佳实践15条 | 始终 | 魔法数字、命名、复杂度 |
| API 设计11条 | 始终 | REST 规范、分页 |
| 测试8条 | 始终 | 缺少测试、断言 |
| 测试深度10条 | 始终 | JaCoCo、Testcontainers、Awaitility、AssertJ |
| 死代码15条 | 始终 | 未使用的方法、字段、导入 |
| 虚拟线程10条 | Java 21+ | synchronized 钉死、ScopedValue、StructuredTaskScope |
| Spring/Boot23条 | 检测到时 | @Transactional、Boot 4.x |
| gRPC26条 | 检测到时 | Channel 复用、TLS |
| JPA15条 | 检测到时 | Hibernate 问题 |
| Lombok5条 | 检测到时 | 实体上的 @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按需加载
## 输出示例
```markdown
# Java Doctor 报告
## 摘要
| 指标 | 值 |
|--------|-------|
| 评分 | 75/100 |
| 状态 | 需改进 |
| Java 版本 | 17 |
| 分析文件数 | 12 |
| 问题 | 严重: 2, 错误: 3, 警告: 8 |
## 问题
### 安全(严重)
1. AuthService.java:42 - 硬编码密码
修复:使用 @Value 注入
```
## 贡献
1. Fork 本仓库
2. 创建功能分支
3. 提交 PR
## Skills 市场
### skills.sh
通过 CLI 安装:
```bash
npx skills add ajaywadhara/java-doctor
```
## 许可证
MIT 许可证 - 详见 LICENSE 文件
## 作者
Ajay Wadhara