diff --git a/.github/workflows/javaCodestyle.yml b/.github/workflows/javaCodestyle.yml
new file mode 100644
index 00000000000..50c970023c1
--- /dev/null
+++ b/.github/workflows/javaCodestyle.yml
@@ -0,0 +1,60 @@
+#-------------------------------------------------------------
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+#-------------------------------------------------------------
+
+name: Java Codestyle
+
+on:
+ push:
+ paths-ignore:
+ - 'docs/**'
+ - '*.md'
+ - '*.html'
+ - 'src/main/python/**'
+ - 'dev/**'
+ branches:
+ - main
+ pull_request:
+ paths-ignore:
+ - 'docs/**'
+ - '*.md'
+ - '*.html'
+ - 'src/main/python/**'
+ - 'dev/**'
+ branches:
+ - main
+
+jobs:
+ java_codestyle:
+ name: Java Checkstyle
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout Repository
+ uses: actions/checkout@v6
+
+ - name: Setup Java 17 adopt
+ uses: actions/setup-java@v5
+ with:
+ distribution: adopt
+ java-version: '17'
+ cache: 'maven'
+
+ - name: Run Checkstyle
+ run: mvn -ntp -B -Dcheckstyle.skip=false checkstyle:check
diff --git a/.github/workflows/javaTests.yml b/.github/workflows/javaTests.yml
index 93149c3d1c9..b4f4ce2e11d 100644
--- a/.github/workflows/javaTests.yml
+++ b/.github/workflows/javaTests.yml
@@ -181,4 +181,3 @@ jobs:
name: Java Code Coverage (Jacoco)
path: target/site/jacoco
retention-days: 3
-
diff --git a/dev/checkstyle/checkstyle.xml b/dev/checkstyle/checkstyle.xml
new file mode 100644
index 00000000000..96a381cd4c9
--- /dev/null
+++ b/dev/checkstyle/checkstyle.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dev/checkstyle/suppressions-xpath.xml b/dev/checkstyle/suppressions-xpath.xml
new file mode 100644
index 00000000000..8843856a78d
--- /dev/null
+++ b/dev/checkstyle/suppressions-xpath.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dev/checkstyle/suppressions.xml b/dev/checkstyle/suppressions.xml
new file mode 100644
index 00000000000..642bf3beba8
--- /dev/null
+++ b/dev/checkstyle/suppressions.xml
@@ -0,0 +1,363 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pom.xml b/pom.xml
index e0b3f794272..08669868aa1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -54,6 +54,7 @@
2.22.1
3.2.0
3.0.0
+ 3.3.1
3.0.0
3.5.0
3.2.0
@@ -77,6 +78,7 @@
1C
2
false
+ true
false
**
false
@@ -365,7 +367,34 @@
-
+
+ org.apache.maven.plugins
+ maven-checkstyle-plugin
+ ${maven-checkstyle-plugin.version}
+
+
+
+ checkstyle
+
+ test
+
+ check
+
+
+
+
+
+ dev/checkstyle/checkstyle.xml
+ ${checkstyle.skip}
+ true
+ true
+ ${project.build.directory}/checkstyle-result.xml
+ xml
+ true
+
+
+
+
org.apache.maven.plugins
maven-surefire-plugin
diff --git a/src/main/java/org/apache/sysds/parser/dml/DmlLexer.java b/src/main/java/org/apache/sysds/parser/dml/DmlLexer.java
index 0ce5c153a0a..954fe9e71c4 100644
--- a/src/main/java/org/apache/sysds/parser/dml/DmlLexer.java
+++ b/src/main/java/org/apache/sysds/parser/dml/DmlLexer.java
@@ -22,8 +22,6 @@
import org.antlr.v4.runtime.Lexer;
import org.antlr.v4.runtime.CharStream;
-import org.antlr.v4.runtime.Token;
-import org.antlr.v4.runtime.TokenStream;
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.atn.*;
import org.antlr.v4.runtime.dfa.DFA;
@@ -411,4 +409,4 @@ public DmlLexer(CharStream input) {
_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
}
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/org/apache/sysds/parser/dml/DmlParser.java b/src/main/java/org/apache/sysds/parser/dml/DmlParser.java
index 531b93c5ac7..263ef205d38 100644
--- a/src/main/java/org/apache/sysds/parser/dml/DmlParser.java
+++ b/src/main/java/org/apache/sysds/parser/dml/DmlParser.java
@@ -26,7 +26,6 @@
import org.antlr.v4.runtime.misc.*;
import org.antlr.v4.runtime.tree.*;
import java.util.List;
-import java.util.Iterator;
import java.util.ArrayList;
@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
@@ -3463,4 +3462,4 @@ private boolean expression_sempred(ExpressionContext _localctx, int predIndex) {
_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
}
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/org/apache/sysds/runtime/controlprogram/caching/CacheableData.java b/src/main/java/org/apache/sysds/runtime/controlprogram/caching/CacheableData.java
index 2759ed33925..36637ee8959 100644
--- a/src/main/java/org/apache/sysds/runtime/controlprogram/caching/CacheableData.java
+++ b/src/main/java/org/apache/sysds/runtime/controlprogram/caching/CacheableData.java
@@ -43,7 +43,6 @@
import org.apache.sysds.runtime.compress.CompressedMatrixBlock;
import org.apache.sysds.runtime.controlprogram.caching.LazyWriteBuffer.RPolicy;
import org.apache.sysds.runtime.controlprogram.federated.FederationMap;
-import org.apache.sysds.runtime.controlprogram.parfor.LocalTaskQueue;
import org.apache.sysds.runtime.controlprogram.parfor.util.IDSequence;
import org.apache.sysds.runtime.instructions.cp.Data;
import org.apache.sysds.runtime.instructions.fed.InitFEDInstruction;
diff --git a/src/main/java/org/apache/sysds/runtime/controlprogram/caching/FrameObject.java b/src/main/java/org/apache/sysds/runtime/controlprogram/caching/FrameObject.java
index 8c5a0793467..7151d87211c 100644
--- a/src/main/java/org/apache/sysds/runtime/controlprogram/caching/FrameObject.java
+++ b/src/main/java/org/apache/sysds/runtime/controlprogram/caching/FrameObject.java
@@ -33,7 +33,6 @@
import org.apache.sysds.runtime.controlprogram.federated.FederatedRange;
import org.apache.sysds.runtime.controlprogram.federated.FederatedResponse;
import org.apache.sysds.runtime.controlprogram.federated.FederationMap;
-import org.apache.sysds.runtime.controlprogram.parfor.LocalTaskQueue;
import org.apache.sysds.runtime.frame.data.FrameBlock;
import org.apache.sysds.runtime.instructions.ooc.OOCStream;
import org.apache.sysds.runtime.instructions.spark.data.IndexedMatrixValue;
diff --git a/src/main/java/org/apache/sysds/runtime/einsum/EOpNode.java b/src/main/java/org/apache/sysds/runtime/einsum/EOpNode.java
index 29c3187c3e1..e205c2721ae 100644
--- a/src/main/java/org/apache/sysds/runtime/einsum/EOpNode.java
+++ b/src/main/java/org/apache/sysds/runtime/einsum/EOpNode.java
@@ -21,7 +21,6 @@
import org.apache.commons.logging.Log;
import org.apache.sysds.runtime.matrix.data.MatrixBlock;
-import scala.Int;
import java.util.ArrayList;
import java.util.Arrays;
diff --git a/src/main/java/org/apache/sysds/runtime/einsum/EOpNodeFuse.java b/src/main/java/org/apache/sysds/runtime/einsum/EOpNodeFuse.java
index 1107462caf9..a999ce68f9c 100644
--- a/src/main/java/org/apache/sysds/runtime/einsum/EOpNodeFuse.java
+++ b/src/main/java/org/apache/sysds/runtime/einsum/EOpNodeFuse.java
@@ -34,7 +34,6 @@
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
diff --git a/src/main/java/org/apache/sysds/runtime/einsum/EOpNodeUnary.java b/src/main/java/org/apache/sysds/runtime/einsum/EOpNodeUnary.java
index a94bbc95656..e46e7ec1041 100644
--- a/src/main/java/org/apache/sysds/runtime/einsum/EOpNodeUnary.java
+++ b/src/main/java/org/apache/sysds/runtime/einsum/EOpNodeUnary.java
@@ -20,10 +20,7 @@
package org.apache.sysds.runtime.einsum;
import org.apache.commons.logging.Log;
-import org.apache.sysds.common.Opcodes;
import org.apache.sysds.common.Types;
-import org.apache.sysds.hops.AggUnaryOp;
-import org.apache.sysds.hops.rewrite.HopRewriteUtils;
import org.apache.sysds.runtime.functionobjects.DiagIndex;
import org.apache.sysds.runtime.functionobjects.KahanPlus;
import org.apache.sysds.runtime.functionobjects.Plus;
diff --git a/src/main/java/org/apache/sysds/runtime/instructions/ooc/OOCStream.java b/src/main/java/org/apache/sysds/runtime/instructions/ooc/OOCStream.java
index c70f9cbb8db..27dd9515acf 100644
--- a/src/main/java/org/apache/sysds/runtime/instructions/ooc/OOCStream.java
+++ b/src/main/java/org/apache/sysds/runtime/instructions/ooc/OOCStream.java
@@ -20,7 +20,6 @@
package org.apache.sysds.runtime.instructions.ooc;
import org.apache.sysds.runtime.DMLRuntimeException;
-import org.apache.sysds.runtime.controlprogram.parfor.LocalTaskQueue;
import java.util.function.Consumer;
diff --git a/src/main/java/org/apache/sysds/runtime/matrix/data/LibMatrixCUDA.java b/src/main/java/org/apache/sysds/runtime/matrix/data/LibMatrixCUDA.java
index 3a9cf83e792..4f3c55415d6 100644
--- a/src/main/java/org/apache/sysds/runtime/matrix/data/LibMatrixCUDA.java
+++ b/src/main/java/org/apache/sysds/runtime/matrix/data/LibMatrixCUDA.java
@@ -91,7 +91,6 @@
import static jcuda.runtime.cudaMemcpyKind.cudaMemcpyDeviceToDevice;
import static jcuda.runtime.cudaMemcpyKind.cudaMemcpyDeviceToHost;
-import java.lang.Math;
import java.util.ArrayList;
/**
diff --git a/src/test/java/org/apache/sysds/test/functions/builtin/part2/BuiltinMatrixProfileTest.java b/src/test/java/org/apache/sysds/test/functions/builtin/part2/BuiltinMatrixProfileTest.java
index e3ee065417e..67c3be751a6 100644
--- a/src/test/java/org/apache/sysds/test/functions/builtin/part2/BuiltinMatrixProfileTest.java
+++ b/src/test/java/org/apache/sysds/test/functions/builtin/part2/BuiltinMatrixProfileTest.java
@@ -28,7 +28,6 @@
import org.junit.Test;
import java.io.IOException;
-import java.lang.Math;
import java.util.Random;
import java.util.Collections;
import java.util.Comparator;