Reports properties with an Array type in a data class without overridden equals() or hashCode().

Array parameters are compared by reference equality, which is likely an unexpected behavior. It is strongly recommended to override equals() and hashCode() in such cases.

Example:


  data class Text(val lines: Array<String>)

A quick-fix generates missing equals() and hashCode() implementations:


  data class Text(val lines: Array<String>) {
      override fun equals(other: Any?): Boolean {
          if (this === other) return true
          if (javaClass != other?.javaClass) return false

          other as Text

          if (!lines.contentEquals(other.lines)) return false

          return true
      }

      override fun hashCode(): Int {
          return lines.contentHashCode()
      }
  }