id: prefer-data-class
language: Kotlin
severity: info
message: Consider using `data class` for classes that primarily hold data
note: |
Kotlin `data class` auto-generates `equals()`, `hashCode()`, `toString()`,
`copy()`, and destructuring. A regular class with only `val` properties in
the primary constructor and no meaningful behavior is a candidate for
conversion. Review manually: classes with inheritance, abstract members, or
custom `equals`/`hashCode` are not suitable.
rule:
kind: class_declaration
has:
kind: primary_constructor
has:
kind: class_parameter
metadata:
url: https://kotlinlang.org/docs/data-classes.html
files:
- src/**/*.kt
- src/**/*.kts