Skip to content

Commit 6f1d082

Browse files
committed
[java] NullAway added for the entire project
1 parent 8c0bffd commit 6f1d082

File tree

7 files changed

+84
-26
lines changed

7 files changed

+84
-26
lines changed

.github/workflows/ci-java.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,3 +71,11 @@ jobs:
7171
java-version: 17
7272
run: |
7373
bazel test --flaky_test_attempts 3 //java/test/org/openqa/selenium/chrome:ChromeDriverFunctionalTest-remote
74+
75+
nullaway-checks:
76+
name: NullAway Checks
77+
uses: ./.github/workflows/bazel.yml
78+
with:
79+
name: NullAway Checks
80+
java-version: 17
81+
run: bazel build //java/... --//java:nullaway_level=ERROR

java/BUILD.bazel

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
load("@contrib_rules_jvm//java:defs.bzl", "spotbugs_config")
22
load(":defs.bzl", "artifact")
3+
load("@bazel_skylib//rules:common_settings.bzl", "string_flag")
34

45
exports_files(
56
srcs = [
@@ -53,3 +54,23 @@ spotbugs_config(
5354
"//visibility:public",
5455
],
5556
)
57+
58+
string_flag(
59+
name = "nullaway_level",
60+
values = ["NONE", "WARN", "ERROR"],
61+
build_setting_default = "NONE",
62+
)
63+
64+
config_setting(
65+
name = "use_nullaway_level_warn",
66+
flag_values = {
67+
":nullaway_level": "WARN",
68+
},
69+
)
70+
71+
config_setting(
72+
name = "use_nullaway_level_error",
73+
flag_values = {
74+
":nullaway_level": "ERROR",
75+
},
76+
)

java/private/export.bzl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ load("@rules_jvm_external//private/rules:maven_bom_fragment.bzl", "maven_bom_fra
77
load("@rules_jvm_external//private/rules:maven_project_jar.bzl", "maven_project_jar")
88
load("@rules_jvm_external//private/rules:maven_publish.bzl", "maven_publish")
99
load("//java/private:module.bzl", "java_module")
10+
load(":java_library.bzl", "java_library")
1011

1112
def java_export(
1213
name,
@@ -24,7 +25,7 @@ def java_export(
2425
lib_name = "%s-lib" % name
2526

2627
# Construct the java_library we'll export from here.
27-
native.java_library(
28+
java_library(
2829
name = lib_name,
2930
tags = tags,
3031
exports = exports,

java/private/java_library.bzl

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
load(
2+
"@contrib_rules_jvm//java:defs.bzl",
3+
_java_library = "java_library"
4+
)
5+
6+
def java_library(
7+
name,
8+
deps = [],
9+
srcs = [],
10+
exports = [],
11+
tags = [],
12+
visibility = None,
13+
javacopts = [],
14+
plugins = [],
15+
**kwargs):
16+
17+
# NullAway configuration
18+
nullaway_plugins = select({
19+
"//java:use_nullaway_level_warn": [
20+
"//java:nullaway"
21+
],
22+
"//java:use_nullaway_level_error": [
23+
"//java:nullaway"
24+
],
25+
"//conditions:default": [],
26+
})
27+
nullaway_javacopts = select({
28+
"//java:use_nullaway_level_warn": [
29+
'-Xep:NullAway:WARN',
30+
'-XepOpt:NullAway:AnnotatedPackages=org.openqa.selenium',
31+
'-XepOpt:NullAway:JSpecifyMode=true'
32+
],
33+
"//java:use_nullaway_level_error": [
34+
'-Xep:NullAway:ERROR',
35+
'-XepOpt:NullAway:AnnotatedPackages=org.openqa.selenium',
36+
'-XepOpt:NullAway:JSpecifyMode=true'
37+
],
38+
"//conditions:default": [],
39+
})
40+
41+
# global place for NullAway plugin use
42+
_java_library(
43+
name = name,
44+
deps = deps,
45+
srcs = srcs,
46+
exports = exports,
47+
tags = tags,
48+
visibility = visibility,
49+
plugins = plugins + nullaway_plugins,
50+
javacopts = javacopts + nullaway_javacopts,
51+
**kwargs
52+
)

java/private/library.bzl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
load(
22
"@contrib_rules_jvm//java:defs.bzl",
3-
_java_library = "java_library",
43
_java_test = "java_test",
54
)
65
load(":export.bzl", _java_export = "java_export")
6+
load(":java_library.bzl", _java_library = "java_library")
77

88
java_export = _java_export
99
java_library = _java_library

java/src/org/openqa/selenium/BUILD.bazel

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,6 @@ java_export(
3838
":manifest",
3939
artifact("org.jspecify:jspecify"),
4040
],
41-
plugins = [
42-
"//java:nullaway"
43-
],
44-
javacopts = [
45-
'-Xep:NullAway:WARN',
46-
'-XepOpt:NullAway:AnnotatedPackages=org.openqa.selenium',
47-
'-XepOpt:NullAway:JSpecifyMode=true'
48-
],
4941
)
5042

5143
java_export(

java/src/org/openqa/selenium/support/BUILD.bazel

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,6 @@ java_export(
3636
"//java/src/org/openqa/selenium/support/ui:elements",
3737
"//java/src/org/openqa/selenium/support/ui:wait",
3838
],
39-
plugins = [
40-
"//java:nullaway"
41-
],
42-
javacopts = [
43-
'-Xep:NullAway:WARN',
44-
'-XepOpt:NullAway:AnnotatedPackages=org.openqa.selenium',
45-
'-XepOpt:NullAway:JSpecifyMode=true'
46-
],
4739
)
4840

4941
java_library(
@@ -66,12 +58,4 @@ java_library(
6658
"//java/src/org/openqa/selenium:core",
6759
"//java/src/org/openqa/selenium/support/ui:components",
6860
],
69-
plugins = [
70-
"//java:nullaway"
71-
],
72-
javacopts = [
73-
'-Xep:NullAway:WARN',
74-
'-XepOpt:NullAway:AnnotatedPackages=org.openqa.selenium',
75-
'-XepOpt:NullAway:JSpecifyMode=true'
76-
],
7761
)

0 commit comments

Comments
 (0)