Token导航 LogoToken导航TokenDH.com
开发规范敏感数据github未标认证来源可访问许可证需确认审计通过

java-best-practices-code-reviewJava 最佳实践代码审查

Agent Skill

用于辅助 Java 项目开发、面向对象设计、Spring 生态、Maven 或 Gradle 依赖和后端工程实践。它适合让 Agent 分析类结构、设计接口、整理服务分层、生成测试或检查常见代码坏味道。使用时需要结合项目已有架构、包结构和依赖版本,不应只按通用教程改代码;涉及数据库、事务、并发或框架配置时,应先确认运行环境和回归测试范围。

总安装

192

周安装

8

GitHub Stars

1

下载量

64
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:java-best-practices-code-review(Java 最佳实践代码审查)
来源仓库:https://github.com/dawiddutoit/custom-claude
仓库路径:skills/java-best-practices-code-review
安装命令:
npx skills add https://github.com/dawiddutoit/custom-claude --skill java-best-practices-code-review
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/dawiddutoit/custom-claude --skill java-best-practices-code-review

简介

用于辅助 Java 项目开发、面向对象设计和 Spring 生态集成。

  • 适合分析类结构、设计接口、整理服务分层或生成测试代码。
  • 使用时需结合项目已有架构、包结构和依赖版本,避免仅按教程修改代码。
  • 涉及数据库、事务或并发配置时,应先确认运行环境和回归测试范围。
  • java-best-practices-code-review 属于开发规范类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

Works with.java files, Spring components, and Java projects of any size.

Java Code Review

Table of Contents

Purpose

Performs comprehensive code reviews of Java code against industry best practices, SOLID principles, and modern Java idioms. Provides actionable feedback to improve code quality, maintainability, and security.

When to Use

Use this skill when you need to:

  • Review Java files for code quality issues
  • Analyze SOLID principle compliance
  • Evaluate exception handling patterns
  • Assess thread safety in concurrent code
  • Audit resource management (try-with-resources usage)
  • Check naming conventions and coding standards
  • Review Stream API and Optional usage
  • Verify modern Java features adoption (Java 8+ idioms)
  • Conduct PR reviews for Java projects
  • Identify refactoring opportunities

Quick Start

Point to any Java file or directory and receive immediate feedback on code quality issues:

# Review a single file
Review src/main/java/com/example/UserService.java

# Review all Java files in a package
Review all Java files in src/main/java/com/example/service/

Instructions

Step 1: Identify Target Scope

Determine what needs to be reviewed:

  • Single Java class file
  • Package directory (all.java files)
  • Specific component type (controllers, services, repositories)
  • Entire src tree

Use Glob to find Java files if not explicitly specified:

**/*.java                    # All Java files
src/main/java/**/*Service.java  # All service classes

Step 2: Read and Analyze Code

For each Java file, perform multi-dimensional analysis:

SOLID Principles Assessment:

  • Single Responsibility: Does class have one clear purpose?
  • Open/Closed: Is class extensible without modification?
  • Liskov Substitution: Are inheritance hierarchies sound?
  • Interface Segregation: Are interfaces focused and minimal?
  • Dependency Inversion: Does code depend on abstractions?

Code Quality Checks:

  • Naming conventions (camelCase, PascalCase, UPPER_SNAKE_CASE)
  • Method length (flag methods over 50 lines)
  • Class cohesion (related methods grouped together)
  • Magic numbers and strings (should be constants)
  • Code duplication (DRY principle violations)

Exception Handling:

  • Proper exception types (checked vs unchecked)
  • No empty catch blocks
  • No catching generic Exception unless necessary
  • Meaningful error messages
  • Proper exception chaining (throw new CustomException(e))

Resource Management:

  • try-with-resources for AutoCloseable resources
  • Proper Stream/File/Connection closing
  • No resource leaks

Modern Java Patterns:

  • Stream API usage (prefer streams over loops where appropriate)
  • Optional instead of null returns
  • Records for data classes (Java 14+)
  • Switch expressions (Java 14+)
  • Text blocks for multi-line strings (Java 15+)

Thread Safety:

  • Proper synchronization if needed
  • Immutability where possible
  • Thread-safe collection usage
  • Avoid shared mutable state

Security Concerns:

  • No hardcoded credentials
  • Proper input validation
  • SQL injection prevention (use PreparedStatement)
  • Path traversal vulnerabilities
  • Sensitive data logging

Step 3: Generate Structured Review Report

Organize findings by severity:

CRITICAL - Must fix immediately:

  • Security vulnerabilities
  • Resource leaks
  • Thread safety violations in concurrent code

HIGH - Should fix soon:

  • SOLID principle violations
  • Poor error handling
  • Significant code smells

MEDIUM - Improve when possible:

  • Code duplication
  • Naming convention issues
  • Missing modern Java features

LOW - Nice to have:

  • Code style inconsistencies
  • Minor optimizations
  • Documentation improvements

Step 4: Provide Actionable Recommendations

For each issue identified:

  1. Specify exact location (file, line number)
  2. Explain the problem clearly
  3. Show code example of the issue
  4. Provide corrected code example
  5. Explain why the change improves code quality

Examples

Example 1: Review Single Service Class

Input:

public class UserService {
    private UserRepository userRepository = new UserRepository();

    public User getUser(String id) {
        User user = userRepository.findById(id);
        if (user == null) {
            return null;
        }
        return user;
    }
}

Review Output:

CRITICAL Issues:
- Line 2: Dependency Inversion violation - direct instantiation of UserRepository
  Fix: Inject UserRepository via constructor

HIGH Issues:
- Line 7: Returns null instead of Optional<User>
  Fix: Return Optional.ofNullable(user)

MEDIUM Issues:
- Class lacks @Service annotation (assuming Spring)
- No logging for diagnostic purposes

Recommended Refactoring:

@Service @RequiredArgsConstructor public class UserService { private final UserRepository userRepository; private static final Logger log = LoggerFactory.getLogger(UserService.class);

public Optional<User> getUser(String id) { log.debug("Fetching user with id: {}", id); return Optional.ofNullable(userRepository.findById(id)); } }

Example 2: Review Controller with Multiple Issues

Input:

public class UserController {
    @GetMapping("/users/{id}")
    public User getUser(@PathVariable String id) {
        try {
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/db", "root", "password");
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT * FROM users WHERE id = " + id);
            if (rs.next()) {
                return new User(rs.getString("name"), rs.getString("email"));
            }
        } catch (Exception e) {
            // ignore
        }
        return null;
    }
}

Review Output:

CRITICAL Issues:
1. Line 7: SQL Injection vulnerability - concatenating user input into query
   Fix: Use PreparedStatement with parameters

2. Line 5: Hardcoded database credentials in code
   Fix: Externalize to application.properties and use Spring's DataSource

3. Lines 5-10: Resource leak - Connection, Statement, ResultSet not closed
   Fix: Use try-with-resources or Spring JdbcTemplate

4. Line 11-13: Empty catch block silently swallows exceptions
   Fix: Log exception and throw appropriate response exception

HIGH Issues:
5. Architecture violation: Controller directly accessing database
   Fix: Use Service layer and Repository pattern

6. Line 14: Returns null instead of proper HTTP 404
   Fix: Throw ResponseStatusException or return ResponseEntity

MEDIUM Issues:
7. Missing @RestController annotation
8. No input validation on id parameter
9. No API documentation (@Operation, @ApiResponse)

Recommended Architecture:

@RestController @RequiredArgsConstructor @Validated public class UserController { private final UserService userService;

@GetMapping("/users/{id}") @Operation(summary = "Get user by ID") public ResponseEntity<User> getUser( @PathVariable @NotBlank String id) { return userService.getUser(id) .map(ResponseEntity::ok) .orElse(ResponseEntity.notFound().build()); } }

@Service @RequiredArgsConstructor public class UserService { private final UserRepository userRepository;

public Optional<User> getUser(String id) { return userRepository.findById(id); } }

@Repository public interface UserRepository extends JpaRepository<User, String> { }

Example 3: Review Stream API Usage

Input:

List<String> activeUserNames = new ArrayList<>();
for (User user : users) {
    if (user.isActive()) {
        activeUserNames.add(user.getName());
    }
}
Collections.sort(activeUserNames);

Review Output:

MEDIUM Issues:
- Lines 1-6: Imperative loop should use Stream API for clarity
- Line 7: Mutating list instead of using sorted stream

Recommended Refactoring:

List<String> activeUserNames = users.stream() .filter(User::isActive) .map(User::getName) .sorted() .toList();


Benefits:

- More declarative and readable
- Immutable result (.toList() returns unmodifiable list)
- Potential for parallel processing if needed
- Method reference usage (User::isActive)

Requirements

  • Java 8+ knowledge for Stream API, Optional, lambda expressions
  • Java 11+ awareness for var, String methods, Collection.toArray()
  • Java 14+ familiarity with records, switch expressions, text blocks
  • Java 17+ understanding of sealed classes, pattern matching
  • Understanding of SOLID principles and design patterns
  • Familiarity with Spring Framework conventions (if reviewing Spring code)
  • Knowledge of common security vulnerabilities (OWASP Top 10)

Review Checklist

Use this checklist to ensure comprehensive coverage:

Design & Architecture:

  • [ ] SOLID principles followed
  • [ ] Proper layer separation (Controller/Service/Repository)
  • [ ] Dependency injection used correctly
  • [ ] Interfaces used for abstraction
  • [ ] Design patterns applied appropriately

Code Quality:

  • [ ] Methods are focused and under 50 lines
  • [ ] No code duplication (DRY)
  • [ ] Clear, descriptive naming
  • [ ] No magic numbers or strings
  • [ ] Proper visibility modifiers (private, protected, public)

Error Handling:

  • [ ] Appropriate exception types used
  • [ ] No empty catch blocks
  • [ ] Meaningful error messages
  • [ ] Exception chaining preserved
  • [ ] Resources cleaned up in finally or try-with-resources

Modern Java:

  • [ ] Stream API used where appropriate
  • [ ] Optional used instead of null returns
  • [ ] Records used for DTOs (Java 14+)
  • [ ] Switch expressions used (Java 14+)
  • [ ] Text blocks for multi-line strings (Java 15+)

Thread Safety:

  • [ ] Shared mutable state identified
  • [ ] Proper synchronization if needed
  • [ ] Immutable objects preferred
  • [ ] Thread-safe collections used

Security:

  • [ ] No hardcoded credentials
  • [ ] Input validation present
  • [ ] SQL injection prevention (PreparedStatement)
  • [ ] No path traversal vulnerabilities
  • [ ] Sensitive data not logged

Performance:

  • [ ] No premature optimization
  • [ ] Efficient algorithms used
  • [ ] Proper use of collections
  • [ ] Stream operations optimized
  • [ ] Database N+1 queries avoided

Output Format

Always structure review output as:

# Java Code Review: [ClassName or Package]

## Summary
- Files reviewed: X
- Critical issues: X
- High priority issues: X
- Medium priority issues: X
- Low priority issues: X

## Critical Issues (Fix Immediately)
[List with file:line, description, fix]

## High Priority Issues (Fix Soon)
[List with file:line, description, fix]

## Medium Priority Issues (Improve When Possible)
[List with file:line, description, fix]

## Low Priority Issues (Nice to Have)
[List with file:line, description, fix]

## Positive Findings
[Call out well-written code and good practices]

## Overall Assessment
[Summary paragraph with key recommendations]

Error Handling

If review cannot be completed:

  1. File Not Found: Verify path and use Glob to search for Java files
  2. Cannot Parse Code: Note syntax errors preventing analysis
  3. Incomplete Context: Request additional files for proper review (e.g., parent classes, interfaces)
  4. Ambiguous Requirements: Ask for specific focus areas (security, performance, etc.)

Always fail-fast with clear error messages rather than providing incomplete reviews.

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

34.1%
按下载量换算22

Claude

28.85%
按下载量换算18

Cursor

19.25%
按下载量换算12

Gemini CLI

9.16%
按下载量换算6

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills