Structural equality tests should use == or !=

org.openrewrite.kotlin.cleanup.EqualsMethodUsage

In Kotlin, == means structural equality and != structural inequality and both map to the left-side term’s equals() function. It is, therefore, redundant to call equals() as a function. Also, == and != are more general than equals() and !equals() because it allows either of both operands to be null. Developers using equals() instead of == or != is often the result of adapting styles from other languages like Java, where == means reference equality and != means reference inequality. The == and != operators are a more concise and elegant way to test structural equality than calling a function.

Tags

Recipe source

GitHub, Issue Tracker, Maven Central

  • groupId: org.openrewrite

  • artifactId: rewrite-kotlin

  • version: 1.14.0

Usage

This recipe has no required configuration options. It can be activated by adding a dependency on org.openrewrite:rewrite-kotlin:1.14.0 in your build file or by running a shell command (in which case no build changes are needed):

  1. Add the following to your build.gradle file:

build.gradle
plugins {
    id("org.openrewrite.rewrite") version("6.12.0")
}

rewrite {
    activeRecipe("org.openrewrite.kotlin.cleanup.EqualsMethodUsage")
}

repositories {
    mavenCentral()
}

dependencies {
    rewrite("org.openrewrite:rewrite-kotlin:1.14.0")
}
  1. Run gradle rewriteRun to run the recipe.

See how this recipe works across multiple open-source repositories

The community edition of the Moderne platform enables you to easily run recipes across thousands of open-source repositories.

Please contact Moderne for more information about safely running the recipes on your own codebase in a private SaaS.

Contributors

Kun Li, Knut Wannheden, traceyyoshima, Tim te Beek

Last updated