From b0cc84a9c701dbe90a5d78437817167f6b61e38f Mon Sep 17 00:00:00 2001 From: Gold856 <117957790+Gold856@users.noreply.github.com> Date: Sun, 9 Jun 2024 01:08:23 -0400 Subject: [PATCH] [build] Upgrade to PMD 7.2.0 (#6718) --- .../first/apriltag/AprilTagFieldLayout.java | 4 +-- .../edu/wpi/first/cscore/OpenCvLoader.java | 2 +- .../edu/wpi/first/cscore/VideoListener.java | 3 ++ .../edu/wpi/first/cscore/VideoProperty.java | 2 +- hal/src/generate/FRCNetComm.java.in | 1 + .../java/edu/wpi/first/hal/FRCNetComm.java | 1 + hal/src/main/java/edu/wpi/first/hal/HAL.java | 4 +-- .../main/java/NetworkTableEntry.java.jinja | 9 +----- .../main/java/NetworkTableInstance.java.jinja | 9 +++--- .../main/java/NetworkTableValue.java.jinja | 10 +++--- .../networktables/NetworkTableEntry.java | 9 +----- .../networktables/NetworkTableInstance.java | 9 +++--- .../networktables/NetworkTableValue.java | 10 +++--- .../wpi/first/networktables/NetworkTable.java | 1 - .../first/networktables/ProtobufTopic.java | 10 +++--- .../first/networktables/StructArrayTopic.java | 10 +++--- .../wpi/first/networktables/StructTopic.java | 10 +++--- shared/java/javastyle.gradle | 2 +- styleguide/pmd-ruleset.xml | 17 +++++----- .../wpilibj2/command/ParallelRaceGroup.java | 1 + .../command/SequentialCommandGroup.java | 1 + .../command/SwerveControllerCommandTest.java | 2 +- .../edu/wpi/first/wpilibj/ADIS16448_IMU.java | 2 +- .../edu/wpi/first/wpilibj/ADIS16470_IMU.java | 2 +- .../first/wpilibj/DigitalGlitchFilter.java | 2 +- .../edu/wpi/first/wpilibj/DriverStation.java | 32 ++++++++----------- .../edu/wpi/first/wpilibj/PneumaticHub.java | 2 +- .../main/java/edu/wpi/first/wpilibj/SPI.java | 9 ++---- .../edu/wpi/first/wpilibj/Ultrasonic.java | 4 ++- .../wpi/first/wpilibj/event/EventLoop.java | 1 + .../first/wpilibj/livewindow/LiveWindow.java | 2 +- .../smartdashboard/SendableBuilderImpl.java | 2 +- .../first/wpilibj/sysid/SysIdRoutineLog.java | 2 +- .../wpilibj/examples/armbot/Constants.java | 2 +- .../examples/armbotoffboard/Constants.java | 2 +- .../examples/frisbeebot/Constants.java | 4 +-- .../wpilibj/examples/gearsbot/Constants.java | 2 +- .../examples/gyrodrivecommands/Constants.java | 2 +- .../examples/hatchbotinlined/Constants.java | 2 +- .../hatchbottraditional/Constants.java | 2 +- .../examples/i2ccommunication/Robot.java | 1 + .../mecanumcontrollercommand/Constants.java | 2 +- .../rapidreactcommandbot/Constants.java | 4 +-- .../swervecontrollercommand/Constants.java | 4 +-- .../wpilibj/examples/sysid/Constants.java | 4 +-- .../main/java/edu/wpi/first/math/Matrix.java | 12 +++---- .../main/java/edu/wpi/first/math/Pair.java | 10 +++--- .../KalmanFilterLatencyCompensator.java | 2 +- .../first/math/estimator/PoseEstimator.java | 14 ++++---- .../first/math/kinematics/ChassisSpeeds.java | 12 +++---- .../first/math/spline/CubicHermiteSpline.java | 2 ++ .../math/spline/QuinticHermiteSpline.java | 2 ++ .../wpi/first/math/spline/SplineHelper.java | 2 +- .../math/spline/SplineParameterizer.java | 2 +- .../math/trajectory/ExponentialProfile.java | 2 +- .../java/edu/wpi/first/units/Measure.java | 8 ++--- .../main/java/edu/wpi/first/units/Mult.java | 4 +-- .../main/java/edu/wpi/first/units/Per.java | 3 +- .../main/java/edu/wpi/first/units/Unit.java | 12 +++---- .../java/edu/wpi/first/units/UnitBuilder.java | 4 +-- .../main/java/edu/wpi/first/units/Units.java | 12 +++---- .../java/edu/wpi/first/units/Velocity.java | 2 +- .../util/struct/StructDescriptorDatabase.java | 3 +- .../edu/wpi/first/wpilibj/xrp/XRPMotor.java | 5 +-- 64 files changed, 148 insertions(+), 183 deletions(-) diff --git a/apriltag/src/main/java/edu/wpi/first/apriltag/AprilTagFieldLayout.java b/apriltag/src/main/java/edu/wpi/first/apriltag/AprilTagFieldLayout.java index b17a9c69f22..3874f2bf201 100644 --- a/apriltag/src/main/java/edu/wpi/first/apriltag/AprilTagFieldLayout.java +++ b/apriltag/src/main/java/edu/wpi/first/apriltag/AprilTagFieldLayout.java @@ -281,11 +281,11 @@ public int hashCode() { private static class FieldDimensions { @SuppressWarnings("MemberName") @JsonProperty(value = "length") - public double fieldLength; + public final double fieldLength; @SuppressWarnings("MemberName") @JsonProperty(value = "width") - public double fieldWidth; + public final double fieldWidth; @JsonCreator() FieldDimensions( diff --git a/cscore/src/main/java/edu/wpi/first/cscore/OpenCvLoader.java b/cscore/src/main/java/edu/wpi/first/cscore/OpenCvLoader.java index 1fb8fe65b90..c3bf916f3e2 100644 --- a/cscore/src/main/java/edu/wpi/first/cscore/OpenCvLoader.java +++ b/cscore/src/main/java/edu/wpi/first/cscore/OpenCvLoader.java @@ -15,7 +15,7 @@ public final class OpenCvLoader { static boolean libraryLoaded; /** Sets whether JNI should be loaded in the static block. */ - public static class Helper { + public static final class Helper { private static AtomicBoolean extractOnStaticLoad = new AtomicBoolean(true); /** diff --git a/cscore/src/main/java/edu/wpi/first/cscore/VideoListener.java b/cscore/src/main/java/edu/wpi/first/cscore/VideoListener.java index 80236b27719..e7697cdae27 100644 --- a/cscore/src/main/java/edu/wpi/first/cscore/VideoListener.java +++ b/cscore/src/main/java/edu/wpi/first/cscore/VideoListener.java @@ -64,7 +64,10 @@ public boolean isValid() { private static final ReentrantLock s_lock = new ReentrantLock(); private static final Map> s_listeners = new HashMap<>(); + + @SuppressWarnings("PMD.SingularField") private static Thread s_thread; + private static int s_poller; private static boolean s_waitQueue; private static final Condition s_waitQueueCond = s_lock.newCondition(); diff --git a/cscore/src/main/java/edu/wpi/first/cscore/VideoProperty.java b/cscore/src/main/java/edu/wpi/first/cscore/VideoProperty.java index 21a1b8fb312..cd063c38fcd 100644 --- a/cscore/src/main/java/edu/wpi/first/cscore/VideoProperty.java +++ b/cscore/src/main/java/edu/wpi/first/cscore/VideoProperty.java @@ -212,5 +212,5 @@ public String[] getChoices() { } int m_handle; - private Kind m_kind; + private final Kind m_kind; } diff --git a/hal/src/generate/FRCNetComm.java.in b/hal/src/generate/FRCNetComm.java.in index e58a578e816..d8ce4ccacc8 100644 --- a/hal/src/generate/FRCNetComm.java.in +++ b/hal/src/generate/FRCNetComm.java.in @@ -9,6 +9,7 @@ package edu.wpi.first.hal; /** * JNI wrapper for library FRC_NetworkCommunication
. */ +@SuppressWarnings("PMD.MissingStaticMethodInNonInstantiatableClass") public final class FRCNetComm { /** * Resource type from UsageReporting. diff --git a/hal/src/generated/main/java/edu/wpi/first/hal/FRCNetComm.java b/hal/src/generated/main/java/edu/wpi/first/hal/FRCNetComm.java index 0814a3d0fc3..e3a2833e0ed 100644 --- a/hal/src/generated/main/java/edu/wpi/first/hal/FRCNetComm.java +++ b/hal/src/generated/main/java/edu/wpi/first/hal/FRCNetComm.java @@ -9,6 +9,7 @@ /** * JNI wrapper for library FRC_NetworkCommunication
. */ +@SuppressWarnings("PMD.MissingStaticMethodInNonInstantiatableClass") public final class FRCNetComm { /** * Resource type from UsageReporting. diff --git a/hal/src/main/java/edu/wpi/first/hal/HAL.java b/hal/src/main/java/edu/wpi/first/hal/HAL.java index 68cf0e8deed..88a799e4313 100644 --- a/hal/src/main/java/edu/wpi/first/hal/HAL.java +++ b/hal/src/main/java/edu/wpi/first/hal/HAL.java @@ -82,7 +82,7 @@ public final class HAL extends JNIWrapper { private static final List s_simPeriodicBefore = new ArrayList<>(); - public static class SimPeriodicBeforeCallback implements AutoCloseable { + public static final class SimPeriodicBeforeCallback implements AutoCloseable { private SimPeriodicBeforeCallback(Runnable r) { m_run = r; } @@ -128,7 +128,7 @@ public static void simPeriodicBefore() { private static final List s_simPeriodicAfter = new ArrayList<>(); - public static class SimPeriodicAfterCallback implements AutoCloseable { + public static final class SimPeriodicAfterCallback implements AutoCloseable { private SimPeriodicAfterCallback(Runnable r) { m_run = r; } diff --git a/ntcore/src/generate/main/java/NetworkTableEntry.java.jinja b/ntcore/src/generate/main/java/NetworkTableEntry.java.jinja index 8f4b887b301..ba6de81abe2 100644 --- a/ntcore/src/generate/main/java/NetworkTableEntry.java.jinja +++ b/ntcore/src/generate/main/java/NetworkTableEntry.java.jinja @@ -541,14 +541,7 @@ public final class NetworkTableEntry implements Publisher, Subscriber { @Override public boolean equals(Object other) { - if (other == this) { - return true; - } - if (!(other instanceof NetworkTableEntry)) { - return false; - } - - return m_handle == ((NetworkTableEntry) other).m_handle; + return other == this || other instanceof NetworkTableEntry entry && m_handle == entry.m_handle; } @Override diff --git a/ntcore/src/generate/main/java/NetworkTableInstance.java.jinja b/ntcore/src/generate/main/java/NetworkTableInstance.java.jinja index 718f5c6bb37..6ebc8798702 100644 --- a/ntcore/src/generate/main/java/NetworkTableInstance.java.jinja +++ b/ntcore/src/generate/main/java/NetworkTableInstance.java.jinja @@ -43,7 +43,6 @@ import us.hebi.quickbuf.ProtoMessage; * kept to the NetworkTableInstance returned by this function to keep it from being garbage * collected. */ -@SuppressWarnings("PMD.CouplingBetweenObjects") public final class NetworkTableInstance implements AutoCloseable { /** Client/server mode flag values (as returned by {@link #getNetworkMode()}). */ public enum NetworkMode { @@ -493,7 +492,10 @@ public final class NetworkTableInstance implements AutoCloseable { private static class ListenerStorage implements AutoCloseable { private final ReentrantLock m_lock = new ReentrantLock(); private final Map> m_listeners = new HashMap<>(); + + @SuppressWarnings("PMD.SingularField") private Thread m_thread; + private int m_poller; private boolean m_waitQueue; private final Event m_waitQueueEvent = new Event(); @@ -1239,10 +1241,7 @@ public final class NetworkTableInstance implements AutoCloseable { @Override public boolean equals(Object other) { - if (other == this) { - return true; - } - return other instanceof NetworkTableInstance inst && m_handle == inst.m_handle; + return other == this || other instanceof NetworkTableInstance inst && m_handle == inst.m_handle; } @Override diff --git a/ntcore/src/generate/main/java/NetworkTableValue.java.jinja b/ntcore/src/generate/main/java/NetworkTableValue.java.jinja index bc8e69cd07f..7d82b25b3be 100644 --- a/ntcore/src/generate/main/java/NetworkTableValue.java.jinja +++ b/ntcore/src/generate/main/java/NetworkTableValue.java.jinja @@ -154,12 +154,10 @@ public final class NetworkTableValue { {% endfor %} @Override public boolean equals(Object other) { - if (other == this) { - return true; - } - return other instanceof NetworkTableValue ntOther - && m_type == ntOther.m_type - && m_value.equals(ntOther.m_value); + return other == this + || other instanceof NetworkTableValue ntOther + && m_type == ntOther.m_type + && m_value.equals(ntOther.m_value); } @Override diff --git a/ntcore/src/generated/main/java/edu/wpi/first/networktables/NetworkTableEntry.java b/ntcore/src/generated/main/java/edu/wpi/first/networktables/NetworkTableEntry.java index 09926bff6ca..3b6491e0e26 100644 --- a/ntcore/src/generated/main/java/edu/wpi/first/networktables/NetworkTableEntry.java +++ b/ntcore/src/generated/main/java/edu/wpi/first/networktables/NetworkTableEntry.java @@ -942,14 +942,7 @@ public void unpublish() { @Override public boolean equals(Object other) { - if (other == this) { - return true; - } - if (!(other instanceof NetworkTableEntry)) { - return false; - } - - return m_handle == ((NetworkTableEntry) other).m_handle; + return other == this || other instanceof NetworkTableEntry entry && m_handle == entry.m_handle; } @Override diff --git a/ntcore/src/generated/main/java/edu/wpi/first/networktables/NetworkTableInstance.java b/ntcore/src/generated/main/java/edu/wpi/first/networktables/NetworkTableInstance.java index faf0c42cdd3..e7023d40433 100644 --- a/ntcore/src/generated/main/java/edu/wpi/first/networktables/NetworkTableInstance.java +++ b/ntcore/src/generated/main/java/edu/wpi/first/networktables/NetworkTableInstance.java @@ -43,7 +43,6 @@ * kept to the NetworkTableInstance returned by this function to keep it from being garbage * collected. */ -@SuppressWarnings("PMD.CouplingBetweenObjects") public final class NetworkTableInstance implements AutoCloseable { /** Client/server mode flag values (as returned by {@link #getNetworkMode()}). */ public enum NetworkMode { @@ -773,7 +772,10 @@ public NetworkTable getTable(String key) { private static class ListenerStorage implements AutoCloseable { private final ReentrantLock m_lock = new ReentrantLock(); private final Map> m_listeners = new HashMap<>(); + + @SuppressWarnings("PMD.SingularField") private Thread m_thread; + private int m_poller; private boolean m_waitQueue; private final Event m_waitQueueEvent = new Event(); @@ -1519,10 +1521,7 @@ public void addSchema(Struct struct) { @Override public boolean equals(Object other) { - if (other == this) { - return true; - } - return other instanceof NetworkTableInstance inst && m_handle == inst.m_handle; + return other == this || other instanceof NetworkTableInstance inst && m_handle == inst.m_handle; } @Override diff --git a/ntcore/src/generated/main/java/edu/wpi/first/networktables/NetworkTableValue.java b/ntcore/src/generated/main/java/edu/wpi/first/networktables/NetworkTableValue.java index db76312c5a3..78786bc6c78 100644 --- a/ntcore/src/generated/main/java/edu/wpi/first/networktables/NetworkTableValue.java +++ b/ntcore/src/generated/main/java/edu/wpi/first/networktables/NetworkTableValue.java @@ -646,12 +646,10 @@ public static NetworkTableValue makeStringArray(String[] value, long time) { @Override public boolean equals(Object other) { - if (other == this) { - return true; - } - return other instanceof NetworkTableValue ntOther - && m_type == ntOther.m_type - && m_value.equals(ntOther.m_value); + return other == this + || other instanceof NetworkTableValue ntOther + && m_type == ntOther.m_type + && m_value.equals(ntOther.m_value); } @Override diff --git a/ntcore/src/main/java/edu/wpi/first/networktables/NetworkTable.java b/ntcore/src/main/java/edu/wpi/first/networktables/NetworkTable.java index ddafeefe006..e3e3b258fa6 100644 --- a/ntcore/src/main/java/edu/wpi/first/networktables/NetworkTable.java +++ b/ntcore/src/main/java/edu/wpi/first/networktables/NetworkTable.java @@ -18,7 +18,6 @@ import us.hebi.quickbuf.ProtoMessage; /** A network table that knows its subtable path. */ -@SuppressWarnings("PMD.CouplingBetweenObjects") public final class NetworkTable { /** The path separator for sub-tables and keys. */ public static final char PATH_SEPARATOR = '/'; diff --git a/ntcore/src/main/java/edu/wpi/first/networktables/ProtobufTopic.java b/ntcore/src/main/java/edu/wpi/first/networktables/ProtobufTopic.java index 12da3568820..d707ca26417 100644 --- a/ntcore/src/main/java/edu/wpi/first/networktables/ProtobufTopic.java +++ b/ntcore/src/main/java/edu/wpi/first/networktables/ProtobufTopic.java @@ -164,12 +164,10 @@ public ProtobufEntry getEntry(T defaultValue, PubSubOption... options) { @Override public boolean equals(Object other) { - if (other == this) { - return true; - } - return other instanceof ProtobufTopic topic - && super.equals(topic) - && m_proto == topic.m_proto; + return other == this + || other instanceof ProtobufTopic topic + && super.equals(topic) + && m_proto == topic.m_proto; } @Override diff --git a/ntcore/src/main/java/edu/wpi/first/networktables/StructArrayTopic.java b/ntcore/src/main/java/edu/wpi/first/networktables/StructArrayTopic.java index 7aacd1d68a7..fb0516c1d36 100644 --- a/ntcore/src/main/java/edu/wpi/first/networktables/StructArrayTopic.java +++ b/ntcore/src/main/java/edu/wpi/first/networktables/StructArrayTopic.java @@ -164,12 +164,10 @@ public Struct getStruct() { @Override public boolean equals(Object other) { - if (other == this) { - return true; - } - return other instanceof StructArrayTopic topic - && super.equals(topic) - && m_struct == topic.m_struct; + return other == this + || other instanceof StructArrayTopic topic + && super.equals(topic) + && m_struct == topic.m_struct; } @Override diff --git a/ntcore/src/main/java/edu/wpi/first/networktables/StructTopic.java b/ntcore/src/main/java/edu/wpi/first/networktables/StructTopic.java index 8dcf2e6df82..2395d64201d 100644 --- a/ntcore/src/main/java/edu/wpi/first/networktables/StructTopic.java +++ b/ntcore/src/main/java/edu/wpi/first/networktables/StructTopic.java @@ -163,12 +163,10 @@ public Struct getStruct() { @Override public boolean equals(Object other) { - if (other == this) { - return true; - } - return other instanceof StructTopic topic - && super.equals(topic) - && m_struct == topic.m_struct; + return other == this + || other instanceof StructTopic topic + && super.equals(topic) + && m_struct == topic.m_struct; } @Override diff --git a/shared/java/javastyle.gradle b/shared/java/javastyle.gradle index 41ddb47e6d0..ebea73b75dc 100644 --- a/shared/java/javastyle.gradle +++ b/shared/java/javastyle.gradle @@ -13,7 +13,7 @@ checkstyle { apply plugin: 'pmd' pmd { - toolVersion = '6.55.0' + toolVersion = '7.2.0' consoleOutput = true reportsDir = file("$project.buildDir/reports/pmd") ruleSetFiles = files(new File(rootDir, "styleguide/pmd-ruleset.xml")) diff --git a/styleguide/pmd-ruleset.xml b/styleguide/pmd-ruleset.xml index 1f6577e6f18..8553506b6fe 100644 --- a/styleguide/pmd-ruleset.xml +++ b/styleguide/pmd-ruleset.xml @@ -38,24 +38,28 @@ value=".*'.*Arguments\(\)'.*" /> + + + + + + + - + - - - @@ -67,10 +71,8 @@ - - @@ -86,7 +88,6 @@ - @@ -98,7 +99,7 @@ + language="java" class="net.sourceforge.pmd.lang.rule.xpath.XPathRule"> Use Objects.requireNonNull() instead of throwing a NullPointerException yourself. diff --git a/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/ParallelRaceGroup.java b/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/ParallelRaceGroup.java index f2ff29920d7..39fe6114b41 100644 --- a/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/ParallelRaceGroup.java +++ b/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/ParallelRaceGroup.java @@ -41,6 +41,7 @@ public ParallelRaceGroup(Command... commands) { * * @param commands Commands to add to the group. */ + @SuppressWarnings("PMD.UseArraysAsList") public final void addCommands(Command... commands) { if (!m_finished) { throw new IllegalStateException( diff --git a/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/SequentialCommandGroup.java b/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/SequentialCommandGroup.java index c3598cb04c3..87805972c38 100644 --- a/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/SequentialCommandGroup.java +++ b/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/SequentialCommandGroup.java @@ -38,6 +38,7 @@ public SequentialCommandGroup(Command... commands) { * * @param commands Commands to add, in order of execution. */ + @SuppressWarnings("PMD.UseArraysAsList") public final void addCommands(Command... commands) { if (m_currentCommandIndex != -1) { throw new IllegalStateException( diff --git a/wpilibNewCommands/src/test/java/edu/wpi/first/wpilibj2/command/SwerveControllerCommandTest.java b/wpilibNewCommands/src/test/java/edu/wpi/first/wpilibj2/command/SwerveControllerCommandTest.java index 2f6c6965656..0abe4990486 100644 --- a/wpilibNewCommands/src/test/java/edu/wpi/first/wpilibj2/command/SwerveControllerCommandTest.java +++ b/wpilibNewCommands/src/test/java/edu/wpi/first/wpilibj2/command/SwerveControllerCommandTest.java @@ -51,7 +51,7 @@ void cleanup() { new SwerveModuleState(0, Rotation2d.kZero) }; - private SwerveModulePosition[] m_modulePositions = + private final SwerveModulePosition[] m_modulePositions = new SwerveModulePosition[] { new SwerveModulePosition(0, Rotation2d.kZero), new SwerveModulePosition(0, Rotation2d.kZero), diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADIS16448_IMU.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADIS16448_IMU.java index fdb553714d4..1d79d0d6694 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADIS16448_IMU.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADIS16448_IMU.java @@ -840,7 +840,7 @@ private void acquire() { if (calc_crc == imu_crc) { // Timestamp is at buffer[i] - m_dt = ((double) buffer[i] - previous_timestamp) / 1000000.0; + m_dt = (buffer[i] - previous_timestamp) / 1000000.0; // Scale sensor data gyro_rate_x = (toShort(buffer[i + 5], buffer[i + 6]) * 0.04); diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADIS16470_IMU.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADIS16470_IMU.java index b3cc31c51cf..d320167c4fe 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADIS16470_IMU.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADIS16470_IMU.java @@ -825,7 +825,7 @@ private void acquire() { // Could be multiple data sets in the buffer. Handle each one. for (int i = 0; i < data_to_read; i += dataset_len) { // Timestamp is at buffer[i] - m_dt = ((double) buffer[i] - previous_timestamp) / 1000000.0; + m_dt = (buffer[i] - previous_timestamp) / 1000000.0; /* * System.out.println(((toInt(buffer[i + 3], buffer[i + 4], buffer[i + 5], diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/DigitalGlitchFilter.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/DigitalGlitchFilter.java index 2fcc9dd7a9a..7bc705deb23 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/DigitalGlitchFilter.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/DigitalGlitchFilter.java @@ -168,7 +168,7 @@ public int getPeriodCycles() { public long getPeriodNanoSeconds() { int fpgaCycles = getPeriodCycles(); - return (long) fpgaCycles * 1000L / (long) (SensorUtil.kSystemClockTicksPerMicrosecond / 4); + return fpgaCycles * 1000L / (SensorUtil.kSystemClockTicksPerMicrosecond / 4); } @Override diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/DriverStation.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/DriverStation.java index 2213f2604b8..c5d720589a5 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/DriverStation.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/DriverStation.java @@ -11,7 +11,6 @@ import edu.wpi.first.hal.MatchInfoData; import edu.wpi.first.networktables.BooleanPublisher; import edu.wpi.first.networktables.IntegerPublisher; -import edu.wpi.first.networktables.NetworkTable; import edu.wpi.first.networktables.NetworkTableInstance; import edu.wpi.first.networktables.StringPublisher; import edu.wpi.first.util.EventVector; @@ -32,13 +31,13 @@ public final class DriverStation { /** Number of Joystick ports. */ public static final int kJoystickPorts = 6; - private static class HALJoystickButtons { + private static final class HALJoystickButtons { public int m_buttons; public byte m_count; } private static class HALJoystickAxes { - public float[] m_axes; + public final float[] m_axes; public int m_count; HALJoystickAxes(int count) { @@ -47,7 +46,7 @@ private static class HALJoystickAxes { } private static class HALJoystickAxesRaw { - public int[] m_axes; + public final int[] m_axes; @SuppressWarnings("unused") public int m_count; @@ -58,7 +57,7 @@ private static class HALJoystickAxesRaw { } private static class HALJoystickPOVs { - public short[] m_povs; + public final short[] m_povs; public int m_count; HALJoystickPOVs(int count) { @@ -94,16 +93,14 @@ public enum MatchType { @SuppressWarnings("MemberName") private static class MatchDataSender { - NetworkTable table; - StringPublisher typeMetadata; - StringPublisher gameSpecificMessage; - StringPublisher eventName; - IntegerPublisher matchNumber; - IntegerPublisher replayNumber; - IntegerPublisher matchType; - BooleanPublisher alliance; - IntegerPublisher station; - IntegerPublisher controlWord; + final StringPublisher gameSpecificMessage; + final StringPublisher eventName; + final IntegerPublisher matchNumber; + final IntegerPublisher replayNumber; + final IntegerPublisher matchType; + final BooleanPublisher alliance; + final IntegerPublisher station; + final IntegerPublisher controlWord; boolean oldIsRedAlliance = true; int oldStationNumber = 1; String oldEventName = ""; @@ -114,9 +111,8 @@ private static class MatchDataSender { int oldControlWord; MatchDataSender() { - table = NetworkTableInstance.getDefault().getTable("FMSInfo"); - typeMetadata = table.getStringTopic(".type").publish(); - typeMetadata.set("FMSInfo"); + var table = NetworkTableInstance.getDefault().getTable("FMSInfo"); + table.getStringTopic(".type").publish().set("FMSInfo"); gameSpecificMessage = table.getStringTopic("GameSpecificMessage").publish(); gameSpecificMessage.set(""); eventName = table.getStringTopic("EventName").publish(); diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/PneumaticHub.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/PneumaticHub.java index 32d2ec5aee2..cdfb0cbc2d4 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/PneumaticHub.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/PneumaticHub.java @@ -25,7 +25,7 @@ private static class DataStore implements AutoCloseable { private int m_refCount; private int m_reservedMask; private boolean m_compressorReserved; - public int[] m_oneShotDurMs = new int[PortsJNI.getNumREVPHChannels()]; + public final int[] m_oneShotDurMs = new int[PortsJNI.getNumREVPHChannels()]; private final Object m_reserveLock = new Object(); DataStore(int module) { diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/SPI.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/SPI.java index 1a3bb345a0f..9278fd81703 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/SPI.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/SPI.java @@ -54,8 +54,7 @@ public enum Mode { } } - private int m_port; - private int m_mode; + private final int m_port; /** * Constructor. @@ -67,8 +66,7 @@ public SPI(Port port) { SPIJNI.spiInitialize(m_port); - m_mode = 0; - SPIJNI.spiSetMode(m_port, m_mode); + SPIJNI.spiSetMode(m_port, 0); HAL.report(tResourceType.kResourceType_SPI, port.value + 1); } @@ -115,8 +113,7 @@ public final void setClockRate(int hz) { * @param mode The mode to set. */ public final void setMode(Mode mode) { - m_mode = mode.value & 0x3; - SPIJNI.spiSetMode(m_port, m_mode); + SPIJNI.spiSetMode(m_port, mode.value & 0x3); } /** Configure the chip select line to be active high. */ diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/Ultrasonic.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/Ultrasonic.java index a7b5e71b56e..14103544ce3 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/Ultrasonic.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/Ultrasonic.java @@ -44,7 +44,9 @@ public class Ultrasonic implements Sendable, AutoCloseable { private static Thread m_task; private static int m_instances; + @SuppressWarnings("PMD.SingularField") private SimDevice m_simDevice; + private SimBoolean m_simRangeValid; private SimDouble m_simRange; @@ -57,7 +59,7 @@ public class Ultrasonic implements Sendable, AutoCloseable { * certainly break. Make sure to disable automatic mode before changing anything with the * sensors!! */ - private static class UltrasonicChecker extends Thread { + private static final class UltrasonicChecker extends Thread { @Override public synchronized void run() { while (m_automaticEnabled) { diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/event/EventLoop.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/event/EventLoop.java index 38d21cd990a..2cbb3afd68f 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/event/EventLoop.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/event/EventLoop.java @@ -31,6 +31,7 @@ public void bind(Runnable action) { } /** Poll all bindings. */ + @SuppressWarnings("PMD.UnusedAssignment") public void poll() { try { m_running = true; diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/livewindow/LiveWindow.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/livewindow/LiveWindow.java index 1b9d1ea24a6..ecb0e89f22a 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/livewindow/LiveWindow.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/livewindow/LiveWindow.java @@ -17,7 +17,7 @@ * The LiveWindow class is the public interface for putting sensors and actuators on the LiveWindow. */ public final class LiveWindow { - private static class Component implements AutoCloseable { + private static final class Component implements AutoCloseable { @Override public void close() { if (m_namePub != null) { diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/smartdashboard/SendableBuilderImpl.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/smartdashboard/SendableBuilderImpl.java index f15198fd102..2f288910744 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/smartdashboard/SendableBuilderImpl.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/smartdashboard/SendableBuilderImpl.java @@ -65,7 +65,7 @@ private interface TimedConsumer { void accept(T value, long time); } - private static class Property

+ private static final class Property

implements AutoCloseable { @Override @SuppressWarnings("PMD.AvoidCatchingGenericException") diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/sysid/SysIdRoutineLog.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/sysid/SysIdRoutineLog.java index a8d7d940e8d..cbc6991fd35 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/sysid/SysIdRoutineLog.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/sysid/SysIdRoutineLog.java @@ -72,7 +72,7 @@ public String toString() { } /** Logs data from a single motor during a SysIdRoutine. */ - public class MotorLog { + public final class MotorLog { private final String m_motorName; /** diff --git a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/armbot/Constants.java b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/armbot/Constants.java index fe72d3db698..0fe85f3243c 100644 --- a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/armbot/Constants.java +++ b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/armbot/Constants.java @@ -28,7 +28,7 @@ public static final class DriveConstants { public static final double kWheelDiameterInches = 6; public static final double kEncoderDistancePerPulse = // Assumes the encoders are directly mounted on the wheel shafts - (kWheelDiameterInches * Math.PI) / (double) kEncoderCPR; + (kWheelDiameterInches * Math.PI) / kEncoderCPR; } public static final class ArmConstants { diff --git a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/armbotoffboard/Constants.java b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/armbotoffboard/Constants.java index fb003aaeb5b..f27aebafe4e 100644 --- a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/armbotoffboard/Constants.java +++ b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/armbotoffboard/Constants.java @@ -28,7 +28,7 @@ public static final class DriveConstants { public static final double kWheelDiameterInches = 6; public static final double kEncoderDistancePerPulse = // Assumes the encoders are directly mounted on the wheel shafts - (kWheelDiameterInches * Math.PI) / (double) kEncoderCPR; + (kWheelDiameterInches * Math.PI) / kEncoderCPR; } public static final class ArmConstants { diff --git a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/frisbeebot/Constants.java b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/frisbeebot/Constants.java index 3fe16cfc747..e3126cdd23d 100644 --- a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/frisbeebot/Constants.java +++ b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/frisbeebot/Constants.java @@ -28,7 +28,7 @@ public static final class DriveConstants { public static final double kWheelDiameterInches = 6; public static final double kEncoderDistancePerPulse = // Assumes the encoders are directly mounted on the wheel shafts - (kWheelDiameterInches * Math.PI) / (double) kEncoderCPR; + (kWheelDiameterInches * Math.PI) / kEncoderCPR; } public static final class ShooterConstants { @@ -37,7 +37,7 @@ public static final class ShooterConstants { public static final int kEncoderCPR = 1024; public static final double kEncoderDistancePerPulse = // Distance units will be rotations - 1.0 / (double) kEncoderCPR; + 1.0 / kEncoderCPR; public static final int kShooterMotorPort = 4; public static final int kFeederMotorPort = 5; diff --git a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/gearsbot/Constants.java b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/gearsbot/Constants.java index 6f800677696..8ffa56c6811 100644 --- a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/gearsbot/Constants.java +++ b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/gearsbot/Constants.java @@ -24,7 +24,7 @@ public static final class DriveConstants { public static final double kWheelDiameterInches = 6; public static final double kEncoderDistancePerPulse = // Assumes the encoders are directly mounted on the wheel shafts - (kWheelDiameterInches * Math.PI) / (double) kEncoderCPR; + (kWheelDiameterInches * Math.PI) / kEncoderCPR; } public static final class ClawConstants { diff --git a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/gyrodrivecommands/Constants.java b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/gyrodrivecommands/Constants.java index b59c23dceb7..5c5f0b23b17 100644 --- a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/gyrodrivecommands/Constants.java +++ b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/gyrodrivecommands/Constants.java @@ -28,7 +28,7 @@ public static final class DriveConstants { public static final double kWheelDiameterInches = 6; public static final double kEncoderDistancePerPulse = // Assumes the encoders are directly mounted on the wheel shafts - (kWheelDiameterInches * Math.PI) / (double) kEncoderCPR; + (kWheelDiameterInches * Math.PI) / kEncoderCPR; public static final boolean kGyroReversed = false; diff --git a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/hatchbotinlined/Constants.java b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/hatchbotinlined/Constants.java index 30e8aadaa46..68468f6d077 100644 --- a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/hatchbotinlined/Constants.java +++ b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/hatchbotinlined/Constants.java @@ -28,7 +28,7 @@ public static final class DriveConstants { public static final double kWheelDiameterInches = 6; public static final double kEncoderDistancePerPulse = // Assumes the encoders are directly mounted on the wheel shafts - (kWheelDiameterInches * Math.PI) / (double) kEncoderCPR; + (kWheelDiameterInches * Math.PI) / kEncoderCPR; } public static final class HatchConstants { diff --git a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/hatchbottraditional/Constants.java b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/hatchbottraditional/Constants.java index f02fa12a25c..87b06e19657 100644 --- a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/hatchbottraditional/Constants.java +++ b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/hatchbottraditional/Constants.java @@ -28,7 +28,7 @@ public static final class DriveConstants { public static final double kWheelDiameterInches = 6; public static final double kEncoderDistancePerPulse = // Assumes the encoders are directly mounted on the wheel shafts - (kWheelDiameterInches * Math.PI) / (double) kEncoderCPR; + (kWheelDiameterInches * Math.PI) / kEncoderCPR; } public static final class HatchConstants { diff --git a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/i2ccommunication/Robot.java b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/i2ccommunication/Robot.java index cc1af03b6b2..bfbfc39de91 100644 --- a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/i2ccommunication/Robot.java +++ b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/i2ccommunication/Robot.java @@ -37,6 +37,7 @@ private void writeString(String input) { } @Override + @SuppressWarnings("PMD.ConsecutiveLiteralAppends") public void robotPeriodic() { // Creates a string to hold current robot state information, including // alliance, enabled state, operation mode, and match time. The message diff --git a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/mecanumcontrollercommand/Constants.java b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/mecanumcontrollercommand/Constants.java index 99962ee4a53..19164dc29e8 100644 --- a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/mecanumcontrollercommand/Constants.java +++ b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/mecanumcontrollercommand/Constants.java @@ -50,7 +50,7 @@ public static final class DriveConstants { public static final double kWheelDiameterMeters = 0.15; public static final double kEncoderDistancePerPulse = // Assumes the encoders are directly mounted on the wheel shafts - (kWheelDiameterMeters * Math.PI) / (double) kEncoderCPR; + (kWheelDiameterMeters * Math.PI) / kEncoderCPR; // These are example values only - DO NOT USE THESE FOR YOUR OWN ROBOT! // These characterization values MUST be determined either experimentally or theoretically diff --git a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/rapidreactcommandbot/Constants.java b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/rapidreactcommandbot/Constants.java index 5809616cf7f..31ce798c65f 100644 --- a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/rapidreactcommandbot/Constants.java +++ b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/rapidreactcommandbot/Constants.java @@ -30,7 +30,7 @@ public static final class DriveConstants { public static final double kWheelDiameterMeters = Units.inchesToMeters(6); public static final double kEncoderDistancePerPulse = // Assumes the encoders are directly mounted on the wheel shafts - (kWheelDiameterMeters * Math.PI) / (double) kEncoderCPR; + (kWheelDiameterMeters * Math.PI) / kEncoderCPR; } public static final class ShooterConstants { @@ -39,7 +39,7 @@ public static final class ShooterConstants { public static final int kEncoderCPR = 1024; public static final double kEncoderDistancePerPulse = // Distance units will be rotations - 1.0 / (double) kEncoderCPR; + 1.0 / kEncoderCPR; public static final int kShooterMotorPort = 4; public static final int kFeederMotorPort = 5; diff --git a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/swervecontrollercommand/Constants.java b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/swervecontrollercommand/Constants.java index 0965db376df..acdaa388594 100644 --- a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/swervecontrollercommand/Constants.java +++ b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/swervecontrollercommand/Constants.java @@ -84,11 +84,11 @@ public static final class ModuleConstants { public static final double kWheelDiameterMeters = 0.15; public static final double kDriveEncoderDistancePerPulse = // Assumes the encoders are directly mounted on the wheel shafts - (kWheelDiameterMeters * Math.PI) / (double) kEncoderCPR; + (kWheelDiameterMeters * Math.PI) / kEncoderCPR; public static final double kTurningEncoderDistancePerPulse = // Assumes the encoders are on a 1:1 reduction with the module shaft. - (2 * Math.PI) / (double) kEncoderCPR; + (2 * Math.PI) / kEncoderCPR; public static final double kPModuleTurningController = 1; diff --git a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/sysid/Constants.java b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/sysid/Constants.java index f7731317dec..a6f09eb2d92 100644 --- a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/sysid/Constants.java +++ b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/sysid/Constants.java @@ -30,7 +30,7 @@ public static final class DriveConstants { public static final double kWheelDiameterMeters = Units.inchesToMeters(6); public static final double kEncoderDistancePerPulse = // Assumes the encoders are directly mounted on the wheel shafts - (kWheelDiameterMeters * Math.PI) / (double) kEncoderCPR; + (kWheelDiameterMeters * Math.PI) / kEncoderCPR; } public static final class ShooterConstants { @@ -39,7 +39,7 @@ public static final class ShooterConstants { public static final int kEncoderCPR = 1024; public static final double kEncoderDistancePerPulse = // Distance units will be rotations - 1.0 / (double) kEncoderCPR; + 1.0 / kEncoderCPR; public static final int kShooterMotorPort = 4; public static final int kFeederMotorPort = 5; diff --git a/wpimath/src/main/java/edu/wpi/first/math/Matrix.java b/wpimath/src/main/java/edu/wpi/first/math/Matrix.java index e9846b2af18..ae5741ea132 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/Matrix.java +++ b/wpimath/src/main/java/edu/wpi/first/math/Matrix.java @@ -202,7 +202,7 @@ public final double minInternal() { * @return The mean value of this matrix. */ public final double mean() { - return this.elementSum() / (double) this.m_storage.getNumElements(); + return this.elementSum() / this.m_storage.getNumElements(); } /** @@ -728,12 +728,10 @@ public String toString() { */ @Override public boolean equals(Object other) { - if (this == other) { - return true; - } - return other instanceof Matrix matrix - && !MatrixFeatures_DDRM.hasUncountable(matrix.m_storage.getDDRM()) - && MatrixFeatures_DDRM.isEquals(this.m_storage.getDDRM(), matrix.m_storage.getDDRM()); + return this == other + || other instanceof Matrix matrix + && !MatrixFeatures_DDRM.hasUncountable(matrix.m_storage.getDDRM()) + && MatrixFeatures_DDRM.isEquals(this.m_storage.getDDRM(), matrix.m_storage.getDDRM()); } @Override diff --git a/wpimath/src/main/java/edu/wpi/first/math/Pair.java b/wpimath/src/main/java/edu/wpi/first/math/Pair.java index eacbac4179d..9ec237c0aaa 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/Pair.java +++ b/wpimath/src/main/java/edu/wpi/first/math/Pair.java @@ -71,12 +71,10 @@ public String toString() { */ @Override public boolean equals(Object obj) { - if (obj == this) { - return true; - } - return obj instanceof Pair other - && Objects.equals(m_first, other.getFirst()) - && Objects.equals(m_second, other.getSecond()); + return obj == this + || obj instanceof Pair other + && Objects.equals(m_first, other.getFirst()) + && Objects.equals(m_second, other.getSecond()); } @Override diff --git a/wpimath/src/main/java/edu/wpi/first/math/estimator/KalmanFilterLatencyCompensator.java b/wpimath/src/main/java/edu/wpi/first/math/estimator/KalmanFilterLatencyCompensator.java index ad4db523377..da8b0132e56 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/estimator/KalmanFilterLatencyCompensator.java +++ b/wpimath/src/main/java/edu/wpi/first/math/estimator/KalmanFilterLatencyCompensator.java @@ -171,7 +171,7 @@ public void applyPastGlobalMeasurement( } /** This class contains all the information about our observer at a given time. */ - public class ObserverSnapshot { + public final class ObserverSnapshot { /** The state estimate. */ public final Matrix xHat; diff --git a/wpimath/src/main/java/edu/wpi/first/math/estimator/PoseEstimator.java b/wpimath/src/main/java/edu/wpi/first/math/estimator/PoseEstimator.java index f0d7fe0b18f..06bc13dc1c5 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/estimator/PoseEstimator.java +++ b/wpimath/src/main/java/edu/wpi/first/math/estimator/PoseEstimator.java @@ -271,7 +271,7 @@ public Pose2d updateWithTime(double currentTimeSeconds, Rotation2d gyroAngle, T * Represents an odometry record. The record contains the inputs provided as well as the pose that * was observed based on these inputs, as well as the previous record and its inputs. */ - private class InterpolationRecord implements Interpolatable { + private final class InterpolationRecord implements Interpolatable { // The pose observed given the current sensor inputs and the previous pose. private final Pose2d poseMeters; @@ -325,13 +325,11 @@ public InterpolationRecord interpolate(InterpolationRecord endValue, double t) { @Override public boolean equals(Object obj) { - if (this == obj) { - return true; - } - return obj instanceof PoseEstimator.InterpolationRecord record - && Objects.equals(gyroAngle, record.gyroAngle) - && Objects.equals(wheelPositions, record.wheelPositions) - && Objects.equals(poseMeters, record.poseMeters); + return this == obj + || obj instanceof PoseEstimator.InterpolationRecord record + && Objects.equals(gyroAngle, record.gyroAngle) + && Objects.equals(wheelPositions, record.wheelPositions) + && Objects.equals(poseMeters, record.poseMeters); } @Override diff --git a/wpimath/src/main/java/edu/wpi/first/math/kinematics/ChassisSpeeds.java b/wpimath/src/main/java/edu/wpi/first/math/kinematics/ChassisSpeeds.java index e223d7ebe3a..5ad8f36c5bb 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/kinematics/ChassisSpeeds.java +++ b/wpimath/src/main/java/edu/wpi/first/math/kinematics/ChassisSpeeds.java @@ -391,13 +391,11 @@ public final int hashCode() { @Override public boolean equals(Object o) { - if (o == this) { - return true; - } - return o instanceof ChassisSpeeds c - && vxMetersPerSecond == c.vxMetersPerSecond - && vyMetersPerSecond == c.vyMetersPerSecond - && omegaRadiansPerSecond == c.omegaRadiansPerSecond; + return o == this + || o instanceof ChassisSpeeds c + && vxMetersPerSecond == c.vxMetersPerSecond + && vyMetersPerSecond == c.vyMetersPerSecond + && omegaRadiansPerSecond == c.omegaRadiansPerSecond; } @Override diff --git a/wpimath/src/main/java/edu/wpi/first/math/spline/CubicHermiteSpline.java b/wpimath/src/main/java/edu/wpi/first/math/spline/CubicHermiteSpline.java index 72108a5deb5..f9457bccdb9 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/spline/CubicHermiteSpline.java +++ b/wpimath/src/main/java/edu/wpi/first/math/spline/CubicHermiteSpline.java @@ -105,6 +105,7 @@ public ControlVector getFinalControlVector() { * * @return The hermite basis matrix for cubic hermite spline interpolation. */ + @SuppressWarnings("PMD.UnnecessaryVarargsArrayCreation") private SimpleMatrix makeHermiteBasis() { if (hermiteBasis == null) { // Given P(i), P'(i), P(i+1), P'(i+1), the control vectors, we want to find @@ -148,6 +149,7 @@ private SimpleMatrix makeHermiteBasis() { * @param finalVector The control vector for the final point. * @return The control vector matrix for a dimension. */ + @SuppressWarnings("PMD.UnnecessaryVarargsArrayCreation") private SimpleMatrix getControlVectorFromArrays(double[] initialVector, double[] finalVector) { if (initialVector.length < 2 || finalVector.length < 2) { throw new IllegalArgumentException("Size of vectors must be 2 or greater."); diff --git a/wpimath/src/main/java/edu/wpi/first/math/spline/QuinticHermiteSpline.java b/wpimath/src/main/java/edu/wpi/first/math/spline/QuinticHermiteSpline.java index 5d38bef60a7..0dc712a3b8b 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/spline/QuinticHermiteSpline.java +++ b/wpimath/src/main/java/edu/wpi/first/math/spline/QuinticHermiteSpline.java @@ -105,6 +105,7 @@ public ControlVector getFinalControlVector() { * * @return The hermite basis matrix for quintic hermite spline interpolation. */ + @SuppressWarnings("PMD.UnnecessaryVarargsArrayCreation") private SimpleMatrix makeHermiteBasis() { if (hermiteBasis == null) { // Given P(i), P'(i), P"(i), P(i+1), P'(i+1), P"(i+1), the control vectors, @@ -156,6 +157,7 @@ private SimpleMatrix makeHermiteBasis() { * @param finalVector The control vector for the final point. * @return The control vector matrix for a dimension. */ + @SuppressWarnings("PMD.UnnecessaryVarargsArrayCreation") private SimpleMatrix getControlVectorFromArrays(double[] initialVector, double[] finalVector) { if (initialVector.length != 3 || finalVector.length != 3) { throw new IllegalArgumentException("Size of vectors must be 3"); diff --git a/wpimath/src/main/java/edu/wpi/first/math/spline/SplineHelper.java b/wpimath/src/main/java/edu/wpi/first/math/spline/SplineHelper.java index 3ba27144039..2df70589c60 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/spline/SplineHelper.java +++ b/wpimath/src/main/java/edu/wpi/first/math/spline/SplineHelper.java @@ -257,7 +257,7 @@ public static QuinticHermiteSpline[] optimizeCurvature(QuinticHermiteSpline[] sp CubicHermiteSpline cb = new CubicHermiteSpline(bInitial.x, bFinal.x, bInitial.y, bFinal.y); // Calculate the second derivatives at the knot points. - SimpleMatrix bases = new SimpleMatrix(4, 1, true, new double[] {1, 1, 1, 1}); + SimpleMatrix bases = new SimpleMatrix(4, 1, true, 1, 1, 1, 1); SimpleMatrix combinedA = ca.getCoefficients().mult(bases); double ddxA = combinedA.get(4, 0); diff --git a/wpimath/src/main/java/edu/wpi/first/math/spline/SplineParameterizer.java b/wpimath/src/main/java/edu/wpi/first/math/spline/SplineParameterizer.java index 5cf742b3da4..36bddb1feb1 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/spline/SplineParameterizer.java +++ b/wpimath/src/main/java/edu/wpi/first/math/spline/SplineParameterizer.java @@ -57,7 +57,7 @@ private static class StackContents { } /** Exception for malformed splines. */ - public static class MalformedSplineException extends RuntimeException { + public static final class MalformedSplineException extends RuntimeException { /** * Create a new exception with the given message. * diff --git a/wpimath/src/main/java/edu/wpi/first/math/trajectory/ExponentialProfile.java b/wpimath/src/main/java/edu/wpi/first/math/trajectory/ExponentialProfile.java index fd2cef3d257..896ba6bdc51 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/trajectory/ExponentialProfile.java +++ b/wpimath/src/main/java/edu/wpi/first/math/trajectory/ExponentialProfile.java @@ -70,7 +70,7 @@ public boolean isFinished(double t) { } /** Profile constraints. */ - public static class Constraints { + public static final class Constraints { /** Maximum unsigned input voltage. */ public final double maxInput; diff --git a/wpiunits/src/main/java/edu/wpi/first/units/Measure.java b/wpiunits/src/main/java/edu/wpi/first/units/Measure.java index b545e55bed9..77b46f1d022 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/Measure.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/Measure.java @@ -299,11 +299,9 @@ default boolean isNear(Measure other, Measure tolerance) { * @return true if this measure is equivalent, false otherwise */ default boolean isEquivalent(Measure other) { - if (!this.unit().getBaseUnit().equals(other.unit().getBaseUnit())) { - return false; // Disjoint units, not compatible - } - - return Math.abs(baseUnitMagnitude() - other.baseUnitMagnitude()) <= EQUIVALENCE_THRESHOLD; + // Check for disjoint units that aren't compatible + return this.unit().getBaseUnit().equals(other.unit().getBaseUnit()) + && Math.abs(baseUnitMagnitude() - other.baseUnitMagnitude()) <= EQUIVALENCE_THRESHOLD; } /** {@inheritDoc} */ diff --git a/wpiunits/src/main/java/edu/wpi/first/units/Mult.java b/wpiunits/src/main/java/edu/wpi/first/units/Mult.java index d5e54d0e520..fa3570e4cc8 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/Mult.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/Mult.java @@ -66,9 +66,9 @@ protected Mult(A a, B b) { * @param b the second unit * @return the combined unit */ - @SuppressWarnings({"unchecked", "rawtypes"}) + @SuppressWarnings("unchecked") public static , B extends Unit> Mult combine(A a, B b) { - final long key = ((long) a.hashCode()) << 32L | (((long) b.hashCode()) & 0xFFFFFFFFL); + final long key = ((long) a.hashCode()) << 32L | (b.hashCode() & 0xFFFFFFFFL); if (cache.containsKey(key)) { return cache.get(key); } diff --git a/wpiunits/src/main/java/edu/wpi/first/units/Per.java b/wpiunits/src/main/java/edu/wpi/first/units/Per.java index 897c405f43a..fe9131487e8 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/Per.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/Per.java @@ -78,8 +78,7 @@ protected Per(N numerator, D denominator) { @SuppressWarnings("unchecked") public static , D extends Unit> Per combine( N numerator, D denominator) { - final long key = - ((long) numerator.hashCode()) << 32L | (((long) denominator.hashCode()) & 0xFFFFFFFFL); + final long key = ((long) numerator.hashCode()) << 32L | (denominator.hashCode() & 0xFFFFFFFFL); var existing = cache.get(key); if (existing != null) { diff --git a/wpiunits/src/main/java/edu/wpi/first/units/Unit.java b/wpiunits/src/main/java/edu/wpi/first/units/Unit.java index 8c61543fb2d..65339f87ce1 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/Unit.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/Unit.java @@ -286,13 +286,11 @@ public boolean equivalent(Unit other) { @Override public boolean equals(Object o) { - if (this == o) { - return true; - } - return o instanceof Unit that - && m_name.equals(that.m_name) - && m_symbol.equals(that.m_symbol) - && this.equivalent(that); + return this == o + || o instanceof Unit that + && m_name.equals(that.m_name) + && m_symbol.equals(that.m_symbol) + && this.equivalent(that); } @Override diff --git a/wpiunits/src/main/java/edu/wpi/first/units/UnitBuilder.java b/wpiunits/src/main/java/edu/wpi/first/units/UnitBuilder.java index 1ae185ad946..01e014f6d96 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/UnitBuilder.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/UnitBuilder.java @@ -69,7 +69,7 @@ private static double mapValue( } /** Helper class used for safely chaining mapping builder calls. */ - public class MappingBuilder { + public final class MappingBuilder { private final double m_minInput; private final double m_maxInput; @@ -271,7 +271,7 @@ public U make() { }); } - @SuppressWarnings("unchecked") + @SuppressWarnings({"unchecked", "PMD.AvoidAccessibilityAlteration"}) private static > Constructor> getConstructor(U baseUnit) throws NoSuchMethodException { var baseClass = baseUnit.getClass(); diff --git a/wpiunits/src/main/java/edu/wpi/first/units/Units.java b/wpiunits/src/main/java/edu/wpi/first/units/Units.java index dcb27f78452..b71a977ba94 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/Units.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/Units.java @@ -419,7 +419,7 @@ private Units() { * @param symbol the symbol of the new derived unit * @return the milli-unit */ - @SuppressWarnings({"PMD.MethodName", "checkstyle:methodname"}) + @SuppressWarnings("checkstyle:methodname") public static > U Milli(Unit baseUnit, String name, String symbol) { return derive(baseUnit).splitInto(1000).named(name).symbol(symbol).make(); } @@ -431,7 +431,7 @@ public static > U Milli(Unit baseUnit, String name, String * @param baseUnit the unit being derived from. This does not have to be the base unit of measure * @return the milli-unit */ - @SuppressWarnings({"PMD.MethodName", "checkstyle:methodname"}) + @SuppressWarnings("checkstyle:methodname") public static > U Milli(Unit baseUnit) { return Milli( baseUnit, "Milli" + baseUnit.name().toLowerCase(Locale.ROOT), "m" + baseUnit.symbol()); @@ -447,7 +447,7 @@ public static > U Milli(Unit baseUnit) { * @param symbol the symbol of the new derived unit * @return the micro-unit */ - @SuppressWarnings({"PMD.MethodName", "checkstyle:methodname"}) + @SuppressWarnings("checkstyle:methodname") public static > U Micro(Unit baseUnit, String name, String symbol) { return derive(baseUnit).splitInto(1_000_000).named(name).symbol(symbol).make(); } @@ -459,7 +459,7 @@ public static > U Micro(Unit baseUnit, String name, String * @param baseUnit the unit being derived from. This does not have to be the base unit of measure * @return the micro-unit */ - @SuppressWarnings({"PMD.MethodName", "checkstyle:methodname"}) + @SuppressWarnings("checkstyle:methodname") public static > U Micro(Unit baseUnit) { return Micro( baseUnit, "Micro" + baseUnit.name().toLowerCase(Locale.ROOT), "u" + baseUnit.symbol()); @@ -474,7 +474,7 @@ public static > U Micro(Unit baseUnit) { * @param symbol the symbol of the new derived unit * @return the kilo-unit */ - @SuppressWarnings({"PMD.MethodName", "checkstyle:methodname"}) + @SuppressWarnings("checkstyle:methodname") public static > U Kilo(Unit baseUnit, String name, String symbol) { return derive(baseUnit).aggregate(1000).named(name).symbol(symbol).make(); } @@ -486,7 +486,7 @@ public static > U Kilo(Unit baseUnit, String name, String s * @param baseUnit the unit being derived from. This does not have to be the base unit of measure * @return the kilo-unit */ - @SuppressWarnings({"PMD.MethodName", "checkstyle:methodname"}) + @SuppressWarnings("checkstyle:methodname") public static > U Kilo(Unit baseUnit) { return Kilo( baseUnit, "Kilo" + baseUnit.name().toLowerCase(Locale.ROOT), "K" + baseUnit.symbol()); diff --git a/wpiunits/src/main/java/edu/wpi/first/units/Velocity.java b/wpiunits/src/main/java/edu/wpi/first/units/Velocity.java index 6fdfba10d08..287c1601633 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/Velocity.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/Velocity.java @@ -33,7 +33,7 @@ public class Velocity> extends Unit> { /** Generates a cache key used for cache lookups. */ private static long cacheKey(Unit numerator, Unit denominator) { - return ((long) numerator.hashCode()) << 32L | (((long) denominator.hashCode()) & 0xFFFFFFFFL); + return ((long) numerator.hashCode()) << 32L | (denominator.hashCode() & 0xFFFFFFFFL); } /** diff --git a/wpiutil/src/main/java/edu/wpi/first/util/struct/StructDescriptorDatabase.java b/wpiutil/src/main/java/edu/wpi/first/util/struct/StructDescriptorDatabase.java index 459fa9e10f8..14515a50a6a 100644 --- a/wpiutil/src/main/java/edu/wpi/first/util/struct/StructDescriptorDatabase.java +++ b/wpiutil/src/main/java/edu/wpi/first/util/struct/StructDescriptorDatabase.java @@ -119,8 +119,7 @@ public StructDescriptor add(String name, String schema) throws BadSchemaExceptio } else { // check for circular reference if (!theStruct.checkCircular(stack)) { - StringBuilder builder = new StringBuilder(); - builder.append("circular struct reference: "); + StringBuilder builder = new StringBuilder("circular struct reference: "); boolean first = true; for (StructDescriptor elem : stack) { if (!first) { diff --git a/xrpVendordep/src/main/java/edu/wpi/first/wpilibj/xrp/XRPMotor.java b/xrpVendordep/src/main/java/edu/wpi/first/wpilibj/xrp/XRPMotor.java index 6db4fc236ac..5924cb4adb7 100644 --- a/xrpVendordep/src/main/java/edu/wpi/first/wpilibj/xrp/XRPMotor.java +++ b/xrpVendordep/src/main/java/edu/wpi/first/wpilibj/xrp/XRPMotor.java @@ -92,10 +92,7 @@ public void setInverted(boolean isInverted) { @Override public boolean getInverted() { - if (m_simInverted != null) { - return m_simInverted.get(); - } - return false; + return m_simInverted != null && m_simInverted.get(); } @Override