Make toString(), hashCode(), equals() and friends final in AutoValue classes

Developers usually don't look at the classes that AutoValue generates,
but at the hand-written classes. If the hand-written classes implement
toString(), hashCode(), equals() etc, AutoValue doesn't override them.
To make this more clear to readers of the hand-written classes
ErrorProne suggests to make these methods final.

See https://errorprone.info/bugpattern/AutoValueFinalMethods

Enable this check at ERROR severity to prevent future occurrences.

Signed-off-by: Edwin Kempin <ekempin@google.com>
Change-Id: I972e8e8f9339b811c78157abef771b8c32be079c
This commit is contained in:
Edwin Kempin
2019-07-01 16:10:57 +02:00
committed by David Pursehouse
parent 5a355d20c9
commit c2d0a910a5
15 changed files with 26 additions and 25 deletions

View File

@@ -108,12 +108,12 @@ public final class Account {
} }
@Override @Override
public int compareTo(Id o) { public final int compareTo(Id o) {
return Integer.compare(id(), o.id()); return Integer.compare(id(), o.id());
} }
@Override @Override
public String toString() { public final String toString() {
return Integer.toString(get()); return Integer.toString(get());
} }
} }

View File

@@ -46,12 +46,12 @@ public final class AccountGroup {
} }
@Override @Override
public int compareTo(NameKey o) { public final int compareTo(NameKey o) {
return name().compareTo(o.name()); return name().compareTo(o.name());
} }
@Override @Override
public String toString() { public final String toString() {
return KeyUtil.encode(get()); return KeyUtil.encode(get());
} }
} }
@@ -97,12 +97,12 @@ public final class AccountGroup {
} }
@Override @Override
public int compareTo(UUID o) { public final int compareTo(UUID o) {
return uuid().compareTo(o.uuid()); return uuid().compareTo(o.uuid());
} }
@Override @Override
public String toString() { public final String toString() {
return KeyUtil.encode(get()); return KeyUtil.encode(get());
} }
} }
@@ -131,7 +131,7 @@ public final class AccountGroup {
} }
@Override @Override
public String toString() { public final String toString() {
return Integer.toString(get()); return Integer.toString(get());
} }
} }

View File

@@ -36,14 +36,14 @@ public abstract class BranchNameKey implements Comparable<BranchNameKey> {
} }
@Override @Override
public int compareTo(BranchNameKey o) { public final int compareTo(BranchNameKey o) {
// TODO(dborowitz): Only compares branch name in order to match old StringKey behavior. // TODO(dborowitz): Only compares branch name in order to match old StringKey behavior.
// Consider comparing project name first. // Consider comparing project name first.
return branch().compareTo(o.branch()); return branch().compareTo(o.branch());
} }
@Override @Override
public String toString() { public final String toString() {
return project() + "," + KeyUtil.encode(branch()); return project() + "," + KeyUtil.encode(branch());
} }
} }

View File

@@ -243,7 +243,7 @@ public final class Change {
} }
@Override @Override
public String toString() { public final String toString() {
return Integer.toString(get()); return Integer.toString(get());
} }
} }
@@ -285,7 +285,7 @@ public final class Change {
} }
@Override @Override
public String toString() { public final String toString() {
return get(); return get();
} }
} }

View File

@@ -129,7 +129,7 @@ public abstract class PatchSet {
} }
@Override @Override
public String toString() { public final String toString() {
return changeId().toString() + ',' + id(); return changeId().toString() + ',' + id();
} }
} }

View File

@@ -104,7 +104,7 @@ public class StarredChangesUtil {
public abstract String label(); public abstract String label();
@Override @Override
public String toString() { public final String toString() {
return accountId() + SEPARATOR + label(); return accountId() + SEPARATOR + label();
} }
} }

View File

@@ -263,7 +263,7 @@ public class ProjectWatches {
public abstract ImmutableSet<NotifyType> notifyTypes(); public abstract ImmutableSet<NotifyType> notifyTypes();
@Override @Override
public String toString() { public final String toString() {
List<NotifyType> notifyTypes = new ArrayList<>(notifyTypes()); List<NotifyType> notifyTypes = new ArrayList<>(notifyTypes());
StringBuilder notifyValue = new StringBuilder(); StringBuilder notifyValue = new StringBuilder();
notifyValue.append(firstNonNull(filter(), FILTER_ALL)).append(" ["); notifyValue.append(firstNonNull(filter(), FILTER_ALL)).append(" [");

View File

@@ -193,7 +193,7 @@ public abstract class ExternalId implements Serializable {
} }
@Override @Override
public String toString() { public final String toString() {
return get(); return get();
} }
@@ -441,7 +441,7 @@ public abstract class ExternalId implements Serializable {
* that was loaded from Git can be equal with an external ID that was created from code. * that was loaded from Git can be equal with an external ID that was created from code.
*/ */
@Override @Override
public boolean equals(Object obj) { public final boolean equals(Object obj) {
if (!(obj instanceof ExternalId)) { if (!(obj instanceof ExternalId)) {
return false; return false;
} }
@@ -453,7 +453,7 @@ public abstract class ExternalId implements Serializable {
} }
@Override @Override
public int hashCode() { public final int hashCode() {
return Objects.hash(key(), accountId(), email(), password()); return Objects.hash(key(), accountId(), email(), password());
} }
@@ -471,7 +471,7 @@ public abstract class ExternalId implements Serializable {
* </pre> * </pre>
*/ */
@Override @Override
public String toString() { public final String toString() {
Config c = new Config(); Config c = new Config();
writeToConfig(c); writeToConfig(c);
return c.toText(); return c.toText();

View File

@@ -65,7 +65,7 @@ public abstract class ChangeTriplet {
public abstract Change.Key id(); public abstract Change.Key id();
@Override @Override
public String toString() { public final String toString() {
return format(branch(), id()); return format(branch(), id());
} }
} }

View File

@@ -34,7 +34,7 @@ public abstract class ConfigKey {
} }
@Override @Override
public String toString() { public final String toString() {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append(section()).append("."); sb.append(section()).append(".");
if (subsection() != null) { if (subsection() != null) {

View File

@@ -194,7 +194,7 @@ public abstract class ScheduleConfig {
} }
@Override @Override
public String toString() { public final String toString() {
StringBuilder b = new StringBuilder(); StringBuilder b = new StringBuilder();
b.append(formatValue(keyInterval())); b.append(formatValue(keyInterval()));
b.append(", "); b.append(", ");

View File

@@ -141,7 +141,7 @@ public class SectionSortCache {
} }
@Override @Override
public int hashCode() { public final int hashCode() {
return cachedHashCode(); return cachedHashCode();
} }
} }

View File

@@ -259,12 +259,12 @@ class RelatedChangesSorter {
} }
@Override @Override
public int hashCode() { public final int hashCode() {
return Objects.hash(patchSet().id(), commit()); return Objects.hash(patchSet().id(), commit());
} }
@Override @Override
public boolean equals(Object obj) { public final boolean equals(Object obj) {
if (!(obj instanceof PatchSetData)) { if (!(obj instanceof PatchSetData)) {
return false; return false;
} }

View File

@@ -85,7 +85,7 @@ public abstract class LabelVote {
} }
@Override @Override
public String toString() { public final String toString() {
return format(); return format();
} }
} }

View File

@@ -32,6 +32,7 @@ java_package_configuration(
javacopts = [ javacopts = [
"-XepDisableWarningsInGeneratedCode", "-XepDisableWarningsInGeneratedCode",
"-Xep:AmbiguousMethodReference:ERROR", "-Xep:AmbiguousMethodReference:ERROR",
"-Xep:AutoValueFinalMethods:ERROR",
"-Xep:BadAnnotationImplementation:ERROR", "-Xep:BadAnnotationImplementation:ERROR",
"-Xep:BadComparable:ERROR", "-Xep:BadComparable:ERROR",
"-Xep:BoxedPrimitiveConstructor:ERROR", "-Xep:BoxedPrimitiveConstructor:ERROR",