Skip to content

Commit 76edf94

Browse files
authored
feat: add java linting (#342)
1 parent 6463b0f commit 76edf94

File tree

8 files changed

+42
-4
lines changed

8 files changed

+42
-4
lines changed

.aspect/cli/config.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,4 @@ lint:
1717
- //tools/lint:linters.bzl%eslint
1818
- //tools/lint:linters.bzl%shellcheck
1919
- //tools/lint:linters.bzl%ruff
20+
- //tools/lint:linters.bzl%pmd

BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ exports_files(
1717
".ruff.toml",
1818
".shellcheckrc",
1919
"buf.yaml",
20+
"pmd.xml",
2021
"pyproject.toml",
2122
],
2223
)

MODULE.bazel

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,18 @@ bazel_dep(name = "toolchains_protoc", version = "0.3.1")
3636
# with HTTP and make it available. The syntax is slightly different,
3737
# demonstrated here.
3838

39+
http_archive = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
40+
3941
http_jar = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_jar")
4042

43+
http_archive(
44+
name = "net_sourceforge_pmd",
45+
build_file_content = """java_import(name = "net_sourceforge_pmd", jars = glob(["*.jar"]), visibility = ["//visibility:public"])""",
46+
sha256 = "21acf96d43cb40d591cacccc1c20a66fc796eaddf69ea61812594447bac7a11d",
47+
strip_prefix = "pmd-bin-6.55.0/lib",
48+
url = "https://github.com/pmd/pmd/releases/download/pmd_releases/6.55.0/pmd-bin-6.55.0.zip",
49+
)
50+
4151
http_jar(
4252
name = "google-java-format",
4353
sha256 = "33068bbbdce1099982ec1171f5e202898eb35f2919cf486141e439fc6e3a4203",

MODULE.bazel.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

logger/client/src/build/aspect/JavaLoggingClientLibrary.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
package build.aspect;
22

3+
import build.aspect.examples.LogMessage;
4+
import build.aspect.examples.LoggerGrpc;
35
import io.grpc.ManagedChannel;
46
import io.grpc.ManagedChannelBuilder;
57
import io.grpc.StatusRuntimeException;
68
import java.util.concurrent.TimeUnit;
79
import java.util.logging.Level;
810
import java.util.logging.Logger;
9-
import build.aspect.examples.LogMessage;
10-
import build.aspect.examples.LoggerGrpc;
1111

1212
public class JavaLoggingClientLibrary {
1313
private static final Logger logger = Logger.getLogger(JavaLoggingClientLibrary.class.getName());
@@ -24,6 +24,9 @@ public JavaLoggingClientLibrary(String host, int port) {
2424
.build());
2525
}
2626

27+
// this is confusing and probably a bug
28+
protected void finalize(int a) {}
29+
2730
/** Construct client for accessing the Logging server using the existing channel. */
2831
JavaLoggingClientLibrary(ManagedChannel channel) {
2932
this.channel = channel;
@@ -45,5 +48,4 @@ public void sendLogMessageToServer(String message) {
4548
return;
4649
}
4750
}
48-
4951
}

pmd.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?xml version="1.0"?>
2+
<ruleset name="pmd-ruleset"
3+
xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">
6+
7+
<description>Error</description>
8+
9+
<rule ref="category/java/errorprone.xml/FinalizeOverloaded" />
10+
11+
</ruleset>

tools/lint/BUILD.bazel

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ TODO(alex): add Java linting
55

66
load("@bazel_skylib//rules:native_binary.bzl", "native_binary")
77
load("@npm//:eslint/package_json.bzl", eslint_bin = "bin")
8+
load("@rules_java//java:defs.bzl", "java_binary")
89

910
package(default_visibility = ["//:__subpackages__"])
1011

@@ -15,6 +16,12 @@ alias(
1516

1617
eslint_bin.eslint_binary(name = "eslint")
1718

19+
java_binary(
20+
name = "pmd",
21+
main_class = "net.sourceforge.pmd.PMD",
22+
runtime_deps = ["@net_sourceforge_pmd"],
23+
)
24+
1825
native_binary(
1926
name = "clang_tidy",
2027
src = select(

tools/lint/linters.bzl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
load("@aspect_rules_lint//lint:buf.bzl", "lint_buf_aspect")
44
load("@aspect_rules_lint//lint:clang_tidy.bzl", "lint_clang_tidy_aspect")
55
load("@aspect_rules_lint//lint:eslint.bzl", "lint_eslint_aspect")
6+
load("@aspect_rules_lint//lint:pmd.bzl", "lint_pmd_aspect")
67
load("@aspect_rules_lint//lint:ruff.bzl", "lint_ruff_aspect")
78
load("@aspect_rules_lint//lint:shellcheck.bzl", "lint_shellcheck_aspect")
89

@@ -40,3 +41,8 @@ clang_tidy = lint_clang_tidy_aspect(
4041
angle_includes_are_system = False,
4142
verbose = False,
4243
)
44+
45+
pmd = lint_pmd_aspect(
46+
binary = "@@//tools/lint:pmd",
47+
rulesets = ["@@//:pmd.xml"],
48+
)

0 commit comments

Comments
 (0)