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:

committed by
David Pursehouse

parent
5a355d20c9
commit
c2d0a910a5
@@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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(" [");
|
||||||
|
@@ -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();
|
||||||
|
@@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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) {
|
||||||
|
@@ -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(", ");
|
||||||
|
@@ -141,7 +141,7 @@ public class SectionSortCache {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public final int hashCode() {
|
||||||
return cachedHashCode();
|
return cachedHashCode();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -85,7 +85,7 @@ public abstract class LabelVote {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public final String toString() {
|
||||||
return format();
|
return format();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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",
|
||||||
|
Reference in New Issue
Block a user