Skip to content

Commit 428f2b1

Browse files
committed
Add @Nullable annotations to methods, parameters, and return types across multiple classes to improve null-safety.
1 parent 553d314 commit 428f2b1

File tree

141 files changed

+377
-206
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

141 files changed

+377
-206
lines changed

buildSrc/src/main/kotlin/com/navercorp/fixturemonkey/gradle/plugin/CheckerFrameworkConventionsPlugin.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ class CheckerFrameworkConventionsPlugin : Plugin<Project> {
2929

3030
project.extensions.getByType<CheckerFrameworkExtension>().apply {
3131
checkers = listOf("org.checkerframework.checker.nullness.NullnessChecker")
32+
extraJavacArgs = listOf(
33+
"-AsuppressWarnings=initialization,method.invocation,type.arguments"
34+
)
35+
excludeTests = true
3236
}
3337
}
3438
}

fixture-monkey-api/build.gradle.kts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ multiReleaseVersions.forEach { releaseVersion ->
1919
.replaceFirstChar { it.lowercase() }
2020

2121
configuration.extendsFrom(configurations.getByName(defaultVersionConfigurationName))
22+
23+
val checkerFrameworkExtension = project.extensions.findByType<org.checkerframework.gradle.plugin.CheckerFrameworkExtension>()
24+
checkerFrameworkExtension?.skipCheckerFramework = true
2225
}
2326
}
2427

fixture-monkey-api/src/main/java/com/navercorp/fixturemonkey/api/arbitrary/ContainerCombinableArbitrary.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ final class ContainerCombinableArbitrary<T> implements CombinableArbitrary<T> {
4848
}
4949

5050
@Override
51+
@SuppressWarnings("type.arguments.not.inferred")
5152
public T combined() {
5253
List<Object> combinedList = combinableArbitraryList.stream()
5354
.map(CombinableArbitrary::combined)
@@ -57,6 +58,7 @@ public T combined() {
5758
}
5859

5960
@Override
61+
@SuppressWarnings({"return"})
6062
public Object rawValue() {
6163
List<Object> rawValues = combinableArbitraryList.stream()
6264
.map(CombinableArbitrary::rawValue)
@@ -85,6 +87,7 @@ public boolean fixed() {
8587
}
8688

8789
@Override
90+
@SuppressWarnings("argument")
8891
public CombinableArbitrary<T> unique() {
8992
List<CombinableArbitrary<?>> uniqueCombinableArbitraryList = this.combinableArbitraryList.stream()
9093
.map(arbitrary -> arbitrary.filter(it -> {

fixture-monkey-api/src/main/java/com/navercorp/fixturemonkey/api/arbitrary/FilteredCombinableArbitrary.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ public T combined() {
123123
throw newRetryableFilterMissException(lastException);
124124
}
125125

126-
@SuppressWarnings("unchecked")
126+
@SuppressWarnings({"unchecked", "override.return", "argument"})
127127
@Override
128128
public T rawValue() {
129129
T returned;
@@ -205,6 +205,7 @@ public CombinableArbitrary<T> unique() {
205205
return combinableArbitrary.unique();
206206
}
207207

208+
@SuppressWarnings("argument")
208209
private RetryableFilterMissException newRetryableFilterMissException(@Nullable Throwable throwable) {
209210
if (!(throwable instanceof RetryableFilterMissException)) {
210211
return new RetryableFilterMissException(throwable);

fixture-monkey-api/src/main/java/com/navercorp/fixturemonkey/api/arbitrary/FixedCombinableArbitrary.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
import org.apiguardian.api.API;
2424
import org.apiguardian.api.API.Status;
25+
import org.jspecify.annotations.Nullable;
2526

2627
/**
2728
* It would generate a fixed value {@code object}.
@@ -40,6 +41,7 @@ public T combined() {
4041
}
4142

4243
@Override
44+
@SuppressWarnings("override.return")
4345
public T rawValue() {
4446
return object;
4547
}
@@ -54,7 +56,7 @@ public boolean fixed() {
5456
}
5557

5658
@Override
57-
public boolean equals(Object obj) {
59+
public boolean equals(@Nullable Object obj) {
5860
if (this == obj) {
5961
return true;
6062
}

fixture-monkey-api/src/main/java/com/navercorp/fixturemonkey/api/arbitrary/LazyCombinableArbitrary.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ public T combined() {
4343
}
4444

4545
@Override
46+
@SuppressWarnings("return")
4647
public Object rawValue() {
4748
Object rawValue = introspected.getValue();
4849
introspected.clear();

fixture-monkey-api/src/main/java/com/navercorp/fixturemonkey/api/arbitrary/MappedCombinableArbitrary.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ public U combined() {
4343
return mapper.apply(combinableArbitrary.combined());
4444
}
4545

46-
@SuppressWarnings("unchecked")
46+
@SuppressWarnings({"unchecked", "return"})
4747
@Override
48-
public U rawValue() {
48+
public Object rawValue() {
4949
try {
5050
return mapper.apply((T)combinableArbitrary.rawValue());
5151
} catch (ClassCastException ex) {

fixture-monkey-api/src/main/java/com/navercorp/fixturemonkey/api/arbitrary/MonkeyStringArbitrary.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232

3333
import org.apiguardian.api.API;
3434
import org.apiguardian.api.API.Status;
35+
import org.jspecify.annotations.NonNull;
36+
import org.jspecify.annotations.Nullable;
3537

3638
import net.jqwik.api.Arbitrary;
3739
import net.jqwik.api.EdgeCases;
@@ -57,16 +59,17 @@ public final class MonkeyStringArbitrary implements StringArbitrary {
5759
private CharacterArbitrary characterArbitrary = new DefaultCharacterArbitrary();
5860

5961
private int minLength = 0;
60-
private Integer maxLength = null;
62+
private @Nullable Integer maxLength = null;
6163
private Predicate<Character> filter = c -> true;
64+
@SuppressWarnings("assignment")
6265
private RandomDistribution lengthDistribution = null;
6366
private double repeatChars = 0.0;
6467

6568
@Override
6669
public RandomGenerator<String> generator(int genSize) {
6770
long maxUniqueChars = characterArbitrary
6871
.exhaustive(maxLength())
69-
.map(ExhaustiveGenerator::maxCount)
72+
.<@NonNull Long>map(ExhaustiveGenerator::maxCount)
7073
.orElse((long)maxLength());
7174
return RandomGenerators.strings(
7275
randomCharacterGenerator(),
@@ -82,6 +85,7 @@ public RandomGenerator<String> generator(int genSize, boolean withEdgeCases) {
8285
return this.generator(genSize);
8386
}
8487

88+
@SuppressWarnings("argument")
8589
private int maxLength() {
8690
return RandomGenerators.collectionMaxSize(minLength, maxLength);
8791
}
@@ -250,7 +254,7 @@ public StringArbitrary excludeChars(char... charsToExclude) {
250254
}
251255

252256
@Override
253-
public boolean equals(Object obj) {
257+
public boolean equals(@Nullable Object obj) {
254258
if (this == obj) {
255259
return true;
256260
}

fixture-monkey-api/src/main/java/com/navercorp/fixturemonkey/api/arbitrary/NullInjectCombinableArbitrary.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ final class NullInjectCombinableArbitrary<T> implements CombinableArbitrary<T> {
3939
this.nullProbability = nullProbability;
4040
}
4141

42-
@SuppressWarnings("unchecked")
42+
@SuppressWarnings({"unchecked", "argument"})
4343
@Override
4444
public T combined() {
4545
T combined = combinableArbitrary.combined();
@@ -50,6 +50,7 @@ public T combined() {
5050
return (T)injectNull(combined);
5151
}
5252

53+
@SuppressWarnings("return")
5354
@Override
5455
public Object rawValue() {
5556
Object rawValue = combinableArbitrary.rawValue();

fixture-monkey-api/src/main/java/com/navercorp/fixturemonkey/api/arbitrary/ObjectCombinableArbitrary.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ final class ObjectCombinableArbitrary<T> implements CombinableArbitrary<T> {
4343
this.combinator = combinator;
4444
}
4545

46+
@SuppressWarnings("argument")
4647
@Override
4748
public T combined() {
4849
Map<ArbitraryProperty, Object> combinedPropertyValuesByArbitraryProperty = new HashMap<>();
@@ -54,6 +55,7 @@ public T combined() {
5455
return combinator.apply(combinedPropertyValuesByArbitraryProperty);
5556
}
5657

58+
@SuppressWarnings({"return", "argument"})
5759
@Override
5860
public Object rawValue() {
5961
Map<ArbitraryProperty, Object> rawPropertyValuesByArbitraryProperty = new HashMap<>();

0 commit comments

Comments
 (0)