kotlin-review
Comprehensive Kotlin code review for idiomatic patterns, null safety, coroutine safety, and security. Invokes the kotlin-reviewer agent.
Kotlin Code Review
This command invokes the kotlin-reviewer agent for comprehensive Kotlin-specific code review.
What This Command Does
- Identify Kotlin Changes: Find modified
.ktand.ktsfiles viagit diff - Run Build & Static Analysis: Execute
./gradlew build,detekt,ktlintCheck - Security Scan: Check for SQL injection, command injection, hardcoded secrets
- Null Safety Review: Analyze
!!usage, platform type handling, unsafe casts - Coroutine Review: Check structured concurrency, dispatcher usage, cancellation
- Generate Report: Categorize issues by severity
When to Use
Use /kotlin-review when:
- After writing or modifying Kotlin code
- Before committing Kotlin changes
- Reviewing pull requests with Kotlin code
- Onboarding to a new Kotlin codebase
- Learning idiomatic Kotlin patterns
Review Categories
CRITICAL (Must Fix)
- SQL/Command injection vulnerabilities
- Force-unwrap
!!without justification - Platform type null safety violations
- GlobalScope usage (structured concurrency violation)
- Hardcoded credentials
- Unsafe deserialization
HIGH (Should Fix)
- Mutable state where immutable suffices
- Blocking calls inside coroutine context
- Missing cancellation checks in long loops
- Non-exhaustive
whenon sealed types - Large functions (>50 lines)
- Deep nesting (>4 levels)
MEDIUM (Consider)
- Non-idiomatic Kotlin (Java-style patterns)
- Missing trailing commas
- Scope function misuse or nesting
- Missing sequence for large collection chains
- Redundant explicit types
Automated Checks Run
# Build check./gradlew build
# Static analysis./gradlew detekt
# Formatting check./gradlew ktlintCheck
# Tests./gradlew testExample Usage
User: /kotlin-review
Agent:# Kotlin Code Review Report
## Files Reviewed- src/main/kotlin/com/example/service/UserService.kt (modified)- src/main/kotlin/com/example/routes/UserRoutes.kt (modified)
## Static Analysis Results✓ Build: Successful✓ detekt: No issuesWARNING: ktlint: 2 formatting warnings
## Issues Found
[CRITICAL] Force-Unwrap Null SafetyFile: src/main/kotlin/com/example/service/UserService.kt:28Issue: Using !! on nullable repository result```kotlinval user = repository.findById(id)!! // NPE risk```Fix: Use safe call with error handling```kotlinval user = repository.findById(id) ?: throw UserNotFoundException("User $id not found")```
[HIGH] GlobalScope UsageFile: src/main/kotlin/com/example/routes/UserRoutes.kt:45Issue: Using GlobalScope breaks structured concurrency```kotlinGlobalScope.launch { notificationService.sendWelcome(user)}```Fix: Use the call's coroutine scope```kotlinlaunch { notificationService.sendWelcome(user)}```
## Summary- CRITICAL: 1- HIGH: 1- MEDIUM: 0
Recommendation: FAIL: Block merge until CRITICAL issue is fixedApproval Criteria
| Status | Condition |
|---|---|
| PASS: Approve | No CRITICAL or HIGH issues |
| WARNING: Warning | Only MEDIUM issues (merge with caution) |
| FAIL: Block | CRITICAL or HIGH issues found |
Integration with Other Commands
- Use
/kotlin-testfirst to ensure tests pass - Use
/kotlin-buildif build errors occur - Use
/kotlin-reviewbefore committing - Use
/code-reviewfor non-Kotlin-specific concerns
Related
- Agent:
agents/kotlin-reviewer.md - Skills:
skills/kotlin-patterns/,skills/kotlin-testing/