diff --git a/apriltag/src/test/java/org/wpilib/vision/apriltag/AprilTagDetectorTest.java b/apriltag/src/test/java/org/wpilib/vision/apriltag/AprilTagDetectorTest.java index 358bc48753..1678997f1e 100644 --- a/apriltag/src/test/java/org/wpilib/vision/apriltag/AprilTagDetectorTest.java +++ b/apriltag/src/test/java/org/wpilib/vision/apriltag/AprilTagDetectorTest.java @@ -110,7 +110,6 @@ class AprilTagDetectorTest { detector.removeFamily("tag16h5"); } - @SuppressWarnings("PMD.AssignmentInOperand") public Mat loadImage(String resource) throws IOException { Mat encoded; try (InputStream is = getClass().getResource(resource).openStream()) { diff --git a/build.gradle b/build.gradle index 6365f34611..6cacf14d4f 100644 --- a/build.gradle +++ b/build.gradle @@ -187,5 +187,5 @@ ext.getCurrentArch = { } wrapper { - gradleVersion = '9.2.0' + gradleVersion = '9.4.1' } diff --git a/commandsv2/src/main/java/org/wpilib/command2/SequentialCommandGroup.java b/commandsv2/src/main/java/org/wpilib/command2/SequentialCommandGroup.java index 47eb6e8a86..0a45cefb29 100644 --- a/commandsv2/src/main/java/org/wpilib/command2/SequentialCommandGroup.java +++ b/commandsv2/src/main/java/org/wpilib/command2/SequentialCommandGroup.java @@ -39,7 +39,6 @@ public class SequentialCommandGroup extends Command { * * @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/commandsv3/src/main/java/org/wpilib/command3/Continuation.java b/commandsv3/src/main/java/org/wpilib/command3/Continuation.java index c7ba7ff572..82fbb979bd 100644 --- a/commandsv3/src/main/java/org/wpilib/command3/Continuation.java +++ b/commandsv3/src/main/java/org/wpilib/command3/Continuation.java @@ -26,6 +26,7 @@ import java.lang.invoke.WrongMethodTypeException; *

Teams don't need to use continuations directly with the commands framework; all mounting and * unmounting is handled by the command scheduler and a coroutine wrapper. */ +@SuppressWarnings("PMD.AvoidCatchingGenericException") final class Continuation { // The underlying jdk.internal.vm.Continuation object // https://github.com/openjdk/jdk/blob/jdk-21%2B35/src/java.base/share/classes/jdk/internal/vm/Continuation.java @@ -114,7 +115,7 @@ final class Continuation { * @param scope the continuation's scope, used in yield * @param target the continuation's body */ - @SuppressWarnings({"PMD.AvoidRethrowingException", "PMD.AvoidCatchingGenericException"}) + @SuppressWarnings("PMD.AvoidCatchingGenericException") Continuation(ContinuationScope scope, Runnable target) { try { m_continuation = CONSTRUCTOR.invoke(scope.m_continuationScope, target); @@ -132,7 +133,7 @@ final class Continuation { * @return {@code true} for success; {@code false} for failure * @throws IllegalStateException if not currently in this continuation's scope */ - @SuppressWarnings({"PMD.AvoidRethrowingException", "PMD.AvoidCatchingGenericException"}) + @SuppressWarnings("PMD.AvoidCatchingGenericException") public boolean yield() { try { return (boolean) YIELD.invoke(m_scope.m_continuationScope); @@ -148,7 +149,7 @@ final class Continuation { * Mounts and runs the continuation body until the body calls {@link #yield()}. If the * continuation is suspended, it will continue from the most recent yield point. */ - @SuppressWarnings({"PMD.AvoidRethrowingException", "PMD.AvoidCatchingGenericException"}) + @SuppressWarnings("PMD.AvoidCatchingGenericException") public void run() { try { RUN.invoke(m_continuation); @@ -167,7 +168,7 @@ final class Continuation { * * @return whether this continuation is completed */ - @SuppressWarnings({"PMD.AvoidRethrowingException", "PMD.AvoidCatchingGenericException"}) + @SuppressWarnings("PMD.AvoidCatchingGenericException") public boolean isDone() { try { return (boolean) IS_DONE.invoke(m_continuation); @@ -185,7 +186,7 @@ final class Continuation { * * @param continuation the continuation to mount */ - @SuppressWarnings({"PMD.AvoidRethrowingException", "PMD.AvoidCatchingGenericException"}) + @SuppressWarnings("PMD.AvoidCatchingGenericException") public static void mountContinuation(Continuation continuation) { try { if (continuation == null) { diff --git a/commandsv3/src/main/java/org/wpilib/command3/ContinuationScope.java b/commandsv3/src/main/java/org/wpilib/command3/ContinuationScope.java index d44b19d978..2e4c9bcd83 100644 --- a/commandsv3/src/main/java/org/wpilib/command3/ContinuationScope.java +++ b/commandsv3/src/main/java/org/wpilib/command3/ContinuationScope.java @@ -10,6 +10,7 @@ import java.lang.invoke.MethodType; import java.util.Objects; /** A continuation scope. */ +@SuppressWarnings("PMD.AvoidCatchingGenericException") final class ContinuationScope { // The underlying jdk.internal.vm.ContinuationScope object // https://github.com/openjdk/jdk/blob/jdk-21%2B35/src/java.base/share/classes/jdk/internal/vm/ContinuationScope.java diff --git a/cscore/src/main/java/org/wpilib/vision/camera/CvSource.java b/cscore/src/main/java/org/wpilib/vision/camera/CvSource.java index 587b7a85bc..e39596371a 100644 --- a/cscore/src/main/java/org/wpilib/vision/camera/CvSource.java +++ b/cscore/src/main/java/org/wpilib/vision/camera/CvSource.java @@ -40,7 +40,7 @@ public class CvSource extends ImageSource { } /** - * Put an OpenCV image and notify sinks + * Put an OpenCV image and notify sinks. * *

The image format is guessed from the number of channels. The channel mapping is as follows. * 1: kGray 2: kYUYV 3: BGR 4: BGRA Any other channel numbers will throw an error. If your image diff --git a/cscore/src/main/java/org/wpilib/vision/camera/VideoListener.java b/cscore/src/main/java/org/wpilib/vision/camera/VideoListener.java index 6cf9ba8068..39220b5f6e 100644 --- a/cscore/src/main/java/org/wpilib/vision/camera/VideoListener.java +++ b/cscore/src/main/java/org/wpilib/vision/camera/VideoListener.java @@ -72,6 +72,7 @@ public class VideoListener implements AutoCloseable { private static boolean s_waitQueue; private static final Condition s_waitQueueCond = s_lock.newCondition(); + @SuppressWarnings("PMD.AvoidCatchingGenericException") private static void startThread() { s_thread = new Thread( diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4065d8d7ed..57fedd443e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -37,10 +37,10 @@ mockito = ["mockito-core"] # Similar logic applies for JMH [plugins] -build-shadow = { id = "com.gradleup.shadow", version = "9.1.0" } -lint-errorprone = { id = "net.ltgt.errorprone", version = "4.3.0" } -lint-spotbugs = { id = "com.github.spotbugs", version = "6.4.2" } -lint-spotless = { id = "com.diffplug.spotless", version = "8.0.0" } +build-shadow = { id = "com.gradleup.shadow", version = "9.4.1" } +lint-errorprone = { id = "net.ltgt.errorprone", version = "5.1.0" } +lint-spotbugs = { id = "com.github.spotbugs", version = "6.4.12" } +lint-spotless = { id = "com.diffplug.spotless", version = "8.4.0" } wpilib-gradle-jni = { id = "org.wpilib.GradleJni", version = "2027.0.0" } # Note: these plugins can't be used. Their JARs are on the classpath for buildSrc, diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index f8e1ee3125..d997cfc60f 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index bad7c2462f..c61a118f7d 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index adff685a03..739907dfd1 100755 --- a/gradlew +++ b/gradlew @@ -57,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/2d6327017519d23b96af35865dc997fcb544fb40/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. diff --git a/ntcore/src/generate/main/java/NetworkTableInstance.java.jinja b/ntcore/src/generate/main/java/NetworkTableInstance.java.jinja index 4ee1feb41b..894b5782bd 100644 --- a/ntcore/src/generate/main/java/NetworkTableInstance.java.jinja +++ b/ntcore/src/generate/main/java/NetworkTableInstance.java.jinja @@ -579,6 +579,7 @@ public final class NetworkTableInstance implements AutoCloseable { m_poller = 0; } + @SuppressWarnings("PMD.AvoidCatchingGenericException") private void startThread() { m_thread = new Thread( diff --git a/ntcore/src/generated/main/java/org/wpilib/networktables/NetworkTableInstance.java b/ntcore/src/generated/main/java/org/wpilib/networktables/NetworkTableInstance.java index 289083a3e1..2fd70f9759 100644 --- a/ntcore/src/generated/main/java/org/wpilib/networktables/NetworkTableInstance.java +++ b/ntcore/src/generated/main/java/org/wpilib/networktables/NetworkTableInstance.java @@ -859,6 +859,7 @@ public final class NetworkTableInstance implements AutoCloseable { m_poller = 0; } + @SuppressWarnings("PMD.AvoidCatchingGenericException") private void startThread() { m_thread = new Thread( diff --git a/romiVendordep/src/main/java/org/wpilib/romi/RomiGyro.java b/romiVendordep/src/main/java/org/wpilib/romi/RomiGyro.java index d3d799afb7..0ea7557f6e 100644 --- a/romiVendordep/src/main/java/org/wpilib/romi/RomiGyro.java +++ b/romiVendordep/src/main/java/org/wpilib/romi/RomiGyro.java @@ -151,7 +151,7 @@ public class RomiGyro { } /** - * Return the rate of rotation of the gyro + * Return the rate of rotation of the gyro. * *

The rate is based on the most recent reading of the gyro. * diff --git a/shared/java/javacommon.gradle b/shared/java/javacommon.gradle index 7ddd04cc5b..0d5ffd7cc9 100644 --- a/shared/java/javacommon.gradle +++ b/shared/java/javacommon.gradle @@ -136,7 +136,7 @@ task run(type: JavaExec) { build.dependsOn devClasses jacoco { - toolVersion = "0.8.13" + toolVersion = "0.8.14" } jacocoTestReport { diff --git a/shared/java/javastyle.gradle b/shared/java/javastyle.gradle index e81ad9967f..b8771616c3 100644 --- a/shared/java/javastyle.gradle +++ b/shared/java/javastyle.gradle @@ -5,7 +5,7 @@ if (project.hasProperty('skipJavaFormat')) { apply plugin: 'checkstyle' checkstyle { - toolVersion = "11.0.0" + toolVersion = "13.4.0" configDirectory = file("${project.rootDir}/styleguide") config = resources.text.fromFile(new File(configDirectory.get().getAsFile(), "checkstyle.xml")) } @@ -13,7 +13,7 @@ checkstyle { apply plugin: 'pmd' pmd { - toolVersion = '7.16.0' + toolVersion = '7.23.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 fd8f6c0464..9bbebd1eff 100644 --- a/styleguide/pmd-ruleset.xml +++ b/styleguide/pmd-ruleset.xml @@ -29,6 +29,7 @@ + @@ -53,6 +54,7 @@ + @@ -68,11 +70,13 @@ + + diff --git a/wpilibj/src/main/java/org/wpilib/framework/RobotBase.java b/wpilibj/src/main/java/org/wpilib/framework/RobotBase.java index ea66f5d094..f1f7394193 100644 --- a/wpilibj/src/main/java/org/wpilib/framework/RobotBase.java +++ b/wpilibj/src/main/java/org/wpilib/framework/RobotBase.java @@ -315,6 +315,7 @@ public abstract class RobotBase implements AutoCloseable { } /** Run the robot main loop. */ + @SuppressWarnings("PMD.AvoidCatchingGenericException") private static void runRobot(Class robotClass) { System.out.println("********** Robot program starting **********"); diff --git a/wpilibj/src/main/java/org/wpilib/hardware/bus/SerialPort.java b/wpilibj/src/main/java/org/wpilib/hardware/bus/SerialPort.java index 80ecd3a380..b4728ef615 100644 --- a/wpilibj/src/main/java/org/wpilib/hardware/bus/SerialPort.java +++ b/wpilibj/src/main/java/org/wpilib/hardware/bus/SerialPort.java @@ -198,7 +198,7 @@ public class SerialPort implements AutoCloseable { } /** - * Enable termination with the default terminator '\n' + * Enable termination with the default terminator '\n'. * *

Termination is currently only implemented for receive. When the terminator is received, the * read() or readString() will return fewer bytes than requested, stopping after the terminator. diff --git a/wpilibj/src/main/java/org/wpilib/hardware/expansionhub/ExpansionHub.java b/wpilibj/src/main/java/org/wpilib/hardware/expansionhub/ExpansionHub.java index f17102093b..61605096c3 100644 --- a/wpilibj/src/main/java/org/wpilib/hardware/expansionhub/ExpansionHub.java +++ b/wpilibj/src/main/java/org/wpilib/hardware/expansionhub/ExpansionHub.java @@ -87,7 +87,7 @@ public class ExpansionHub implements AutoCloseable { private final DataStore m_dataStore; /** - * Constructs a new ExpansionHub for a given USB ID + * Constructs a new ExpansionHub for a given USB ID. * *

Multiple instances can be constructed, but will point to the same backing object with a ref * count. diff --git a/wpilibj/src/main/java/org/wpilib/hardware/expansionhub/ExpansionHubServo.java b/wpilibj/src/main/java/org/wpilib/hardware/expansionhub/ExpansionHubServo.java index 0d53e5c754..30f9858490 100644 --- a/wpilibj/src/main/java/org/wpilib/hardware/expansionhub/ExpansionHubServo.java +++ b/wpilibj/src/main/java/org/wpilib/hardware/expansionhub/ExpansionHubServo.java @@ -110,7 +110,7 @@ public class ExpansionHubServo implements AutoCloseable { } /** - * Sets the servo angle + * Sets the servo angle. * *

Servo angles range defaults to 0 to 180 degrees, but can be changed with setAngleRange(). * diff --git a/wpilibj/src/main/java/org/wpilib/hardware/motor/MotorSafety.java b/wpilibj/src/main/java/org/wpilib/hardware/motor/MotorSafety.java index 8330735e7b..f80878a63d 100644 --- a/wpilibj/src/main/java/org/wpilib/hardware/motor/MotorSafety.java +++ b/wpilibj/src/main/java/org/wpilib/hardware/motor/MotorSafety.java @@ -31,7 +31,6 @@ public abstract class MotorSafety { private static final Object m_listMutex = new Object(); private static Thread m_safetyThread; - @SuppressWarnings("PMD.AssignmentInOperand") private static void threadMain() { int event = WPIUtilJNI.makeEvent(false, false); DriverStationJNI.provideNewDataEventHandle(event); diff --git a/wpilibj/src/main/java/org/wpilib/hardware/rotation/DutyCycleEncoder.java b/wpilibj/src/main/java/org/wpilib/hardware/rotation/DutyCycleEncoder.java index 83b187a4e0..731277a137 100644 --- a/wpilibj/src/main/java/org/wpilib/hardware/rotation/DutyCycleEncoder.java +++ b/wpilibj/src/main/java/org/wpilib/hardware/rotation/DutyCycleEncoder.java @@ -170,7 +170,7 @@ public class DutyCycleEncoder implements Sendable, AutoCloseable { } /** - * Get if the sensor is connected + * Get if the sensor is connected. * *

This uses the duty cycle frequency to determine if the sensor is connected. By default, a * value of 100 Hz is used as the threshold, and this value can be changed with {@link diff --git a/wpilibjExamples/build.gradle b/wpilibjExamples/build.gradle index 8662bf9d9d..2eec1d8cc2 100644 --- a/wpilibjExamples/build.gradle +++ b/wpilibjExamples/build.gradle @@ -48,7 +48,7 @@ eclipse { } jacoco { - toolVersion = "0.8.13" + toolVersion = "0.8.14" } jacocoTestReport { diff --git a/wpilibjExamples/src/main/java/org/wpilib/examples/drivedistanceoffboard/ExampleSmartMotorController.java b/wpilibjExamples/src/main/java/org/wpilib/examples/drivedistanceoffboard/ExampleSmartMotorController.java index 9f26abc84d..a84dfef45b 100644 --- a/wpilibjExamples/src/main/java/org/wpilib/examples/drivedistanceoffboard/ExampleSmartMotorController.java +++ b/wpilibjExamples/src/main/java/org/wpilib/examples/drivedistanceoffboard/ExampleSmartMotorController.java @@ -23,7 +23,6 @@ public class ExampleSmartMotorController { * * @param port The port for the controller. */ - @SuppressWarnings("PMD.UnusedFormalParameter") public ExampleSmartMotorController(int port) {} /** diff --git a/wpilibjExamples/src/main/java/org/wpilib/examples/elevatorexponentialprofile/ExampleSmartMotorController.java b/wpilibjExamples/src/main/java/org/wpilib/examples/elevatorexponentialprofile/ExampleSmartMotorController.java index fa564ea88d..9693263988 100644 --- a/wpilibjExamples/src/main/java/org/wpilib/examples/elevatorexponentialprofile/ExampleSmartMotorController.java +++ b/wpilibjExamples/src/main/java/org/wpilib/examples/elevatorexponentialprofile/ExampleSmartMotorController.java @@ -21,7 +21,6 @@ public class ExampleSmartMotorController { * * @param port The port for the controller. */ - @SuppressWarnings("PMD.UnusedFormalParameter") public ExampleSmartMotorController(int port) {} /** diff --git a/wpilibjExamples/src/main/java/org/wpilib/examples/elevatortrapezoidprofile/ExampleSmartMotorController.java b/wpilibjExamples/src/main/java/org/wpilib/examples/elevatortrapezoidprofile/ExampleSmartMotorController.java index 9eb8acd5f2..74a9cc0952 100644 --- a/wpilibjExamples/src/main/java/org/wpilib/examples/elevatortrapezoidprofile/ExampleSmartMotorController.java +++ b/wpilibjExamples/src/main/java/org/wpilib/examples/elevatortrapezoidprofile/ExampleSmartMotorController.java @@ -21,7 +21,6 @@ public class ExampleSmartMotorController { * * @param port The port for the controller. */ - @SuppressWarnings("PMD.UnusedFormalParameter") public ExampleSmartMotorController(int port) {} /** diff --git a/wpimath/src/main/java/org/wpilib/math/autodiff/Slice.java b/wpimath/src/main/java/org/wpilib/math/autodiff/Slice.java index f1f31327ed..cae3e80fd9 100644 --- a/wpimath/src/main/java/org/wpilib/math/autodiff/Slice.java +++ b/wpimath/src/main/java/org/wpilib/math/autodiff/Slice.java @@ -7,7 +7,6 @@ package org.wpilib.math.autodiff; import java.util.OptionalInt; /** Represents a sequence of elements in an iterable object. */ -@SuppressWarnings("PMD.UnusedFormalParameter") public class Slice { /** Type tag used to designate an omitted argument of the slice. */ public static class None { diff --git a/wpimath/src/main/java/org/wpilib/math/autodiff/Variable.java b/wpimath/src/main/java/org/wpilib/math/autodiff/Variable.java index 1750c7405e..11c4506fa9 100644 --- a/wpimath/src/main/java/org/wpilib/math/autodiff/Variable.java +++ b/wpimath/src/main/java/org/wpilib/math/autodiff/Variable.java @@ -54,7 +54,7 @@ public class Variable implements AutoCloseable { * @param handleTypeTag Handle type tag. * @param handle Variable handle. */ - @SuppressWarnings({"PMD.UnusedFormalParameter", "this-escape"}) + @SuppressWarnings("this-escape") public Variable(Handle handleTypeTag, long handle) { m_handle = handle; VariablePool.register(this); diff --git a/wpimath/src/main/java/org/wpilib/math/estimator/PoseEstimator.java b/wpimath/src/main/java/org/wpilib/math/estimator/PoseEstimator.java index c39186a2be..9e7d659feb 100644 --- a/wpimath/src/main/java/org/wpilib/math/estimator/PoseEstimator.java +++ b/wpimath/src/main/java/org/wpilib/math/estimator/PoseEstimator.java @@ -68,7 +68,6 @@ public class PoseEstimator { * in meters, y position in meters, and heading in radians). Increase these numbers to trust * the vision pose measurement less. */ - @SuppressWarnings("PMD.UnusedFormalParameter") public PoseEstimator( Kinematics kinematics, Odometry odometry, diff --git a/wpimath/src/main/java/org/wpilib/math/estimator/PoseEstimator3d.java b/wpimath/src/main/java/org/wpilib/math/estimator/PoseEstimator3d.java index 799a599003..b6482fbb19 100644 --- a/wpimath/src/main/java/org/wpilib/math/estimator/PoseEstimator3d.java +++ b/wpimath/src/main/java/org/wpilib/math/estimator/PoseEstimator3d.java @@ -75,7 +75,6 @@ public class PoseEstimator3d { * in meters, y position in meters, z position in meters, and angle in radians). Increase * these numbers to trust the vision pose measurement less. */ - @SuppressWarnings("PMD.UnusedFormalParameter") public PoseEstimator3d( Kinematics kinematics, Odometry3d odometry, diff --git a/wpiutil/src/main/java/org/wpilib/util/struct/DynamicStruct.java b/wpiutil/src/main/java/org/wpilib/util/struct/DynamicStruct.java index 4a06a5ac17..c37031b640 100644 --- a/wpiutil/src/main/java/org/wpilib/util/struct/DynamicStruct.java +++ b/wpiutil/src/main/java/org/wpilib/util/struct/DynamicStruct.java @@ -378,7 +378,7 @@ public final class DynamicStruct { * @throws IllegalArgumentException if field is not a member of this struct * @throws IllegalStateException if struct descriptor is invalid */ - @SuppressWarnings({"PMD.CollapsibleIfStatements", "PMD.AvoidDeeplyNestedIfStmts"}) + @SuppressWarnings("PMD.CollapsibleIfStatements") public String getStringField(StructFieldDescriptor field) { if (field.getType() != StructFieldType.CHAR) { throw new UnsupportedOperationException("field is not char type"); diff --git a/wpiutil/src/test/java/org/wpilib/util/ConstructorMatchTest.java b/wpiutil/src/test/java/org/wpilib/util/ConstructorMatchTest.java index 57e979c0d3..389f795158 100644 --- a/wpiutil/src/test/java/org/wpilib/util/ConstructorMatchTest.java +++ b/wpiutil/src/test/java/org/wpilib/util/ConstructorMatchTest.java @@ -11,11 +11,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.Optional; import org.junit.jupiter.api.Test; -@SuppressWarnings({ - "PMD.TestClassWithoutTestCases", - "PMD.UnusedFormalParameter", - "RedundantModifier" -}) +@SuppressWarnings({"PMD.TestClassWithoutTestCases", "RedundantModifier"}) class ConstructorMatchTest { public static class TestClass { public TestClass() {} diff --git a/xrpVendordep/src/main/java/org/wpilib/xrp/XRPGyro.java b/xrpVendordep/src/main/java/org/wpilib/xrp/XRPGyro.java index 8e1f037ab7..6056c457e4 100644 --- a/xrpVendordep/src/main/java/org/wpilib/xrp/XRPGyro.java +++ b/xrpVendordep/src/main/java/org/wpilib/xrp/XRPGyro.java @@ -165,7 +165,7 @@ public class XRPGyro { } /** - * Return the rate of rotation of the gyro + * Return the rate of rotation of the gyro. * *

The rate is based on the most recent reading of the gyro. *