The following issues were found

src/test/java/io/reactivex/rxjava3/subscribers/ResourceSubscriberTest.java
70 issues
Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 33

              public class ResourceSubscriberTest extends RxJavaTest {

    static class TestResourceSubscriber<T> extends ResourceSubscriber<T> {
        final List<T> values = new ArrayList<>();

        final List<Throwable> errors = new ArrayList<>();

        int complete;


            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 35

                  static class TestResourceSubscriber<T> extends ResourceSubscriber<T> {
        final List<T> values = new ArrayList<>();

        final List<Throwable> errors = new ArrayList<>();

        int complete;

        int start;


            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 37

              
        final List<Throwable> errors = new ArrayList<>();

        int complete;

        int start;

        @Override
        protected void onStart() {

            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 39

              
        int complete;

        int start;

        @Override
        protected void onStart() {
            super.onStart();


            

Reported by PMD.

Unit tests should not contain more than 1 assert(s).
Design

Line: 79

                  }

    @Test
    public void addResources() {
        TestResourceSubscriber<Integer> ro = new TestResourceSubscriber<>();

        assertFalse(ro.isDisposed());

        Disposable d = Disposable.empty();

            

Reported by PMD.

JUnit assertions should include a message
Design

Line: 82

                  public void addResources() {
        TestResourceSubscriber<Integer> ro = new TestResourceSubscriber<>();

        assertFalse(ro.isDisposed());

        Disposable d = Disposable.empty();

        ro.add(d);


            

Reported by PMD.

JUnit assertions should include a message
Design

Line: 88

              
        ro.add(d);

        assertFalse(d.isDisposed());

        ro.dispose();

        assertTrue(ro.isDisposed());


            

Reported by PMD.

Potential violation of Law of Demeter (object not created locally)
Design

Line: 88

              
        ro.add(d);

        assertFalse(d.isDisposed());

        ro.dispose();

        assertTrue(ro.isDisposed());


            

Reported by PMD.

JUnit assertions should include a message
Design

Line: 92

              
        ro.dispose();

        assertTrue(ro.isDisposed());

        assertTrue(d.isDisposed());

        ro.dispose();


            

Reported by PMD.

JUnit assertions should include a message
Design

Line: 94

              
        assertTrue(ro.isDisposed());

        assertTrue(d.isDisposed());

        ro.dispose();

        assertTrue(ro.isDisposed());


            

Reported by PMD.

src/test/java/io/reactivex/rxjava3/schedulers/ComputationSchedulerTests.java
70 issues
System.out.println is used
Design

Line: 83

                              e.printStackTrace();
            }

            System.out.println("Count A: " + map.get("a"));
            System.out.println("Count B: " + map.get("b"));
            System.out.println("nonThreadSafeCounter: " + map.get("nonThreadSafeCounter"));

            assertEquals(NUM, map.get("a").intValue());
            assertEquals(NUM, map.get("b").intValue());

            

Reported by PMD.

System.out.println is used
Design

Line: 84

                          }

            System.out.println("Count A: " + map.get("a"));
            System.out.println("Count B: " + map.get("b"));
            System.out.println("nonThreadSafeCounter: " + map.get("nonThreadSafeCounter"));

            assertEquals(NUM, map.get("a").intValue());
            assertEquals(NUM, map.get("b").intValue());
            assertEquals(NUM, map.get("nonThreadSafeCounter").intValue());

            

Reported by PMD.

System.out.println is used
Design

Line: 85

              
            System.out.println("Count A: " + map.get("a"));
            System.out.println("Count B: " + map.get("b"));
            System.out.println("nonThreadSafeCounter: " + map.get("nonThreadSafeCounter"));

            assertEquals(NUM, map.get("a").intValue());
            assertEquals(NUM, map.get("b").intValue());
            assertEquals(NUM, map.get("nonThreadSafeCounter").intValue());
        } finally {

            

Reported by PMD.

System.out.println is used
Design

Line: 112

              
            @Override
            public void accept(String t) {
                System.out.println("t: " + t);
            }
        });
    }

    @Test

            

Reported by PMD.

System.out.println is used
Design

Line: 138

              
            @Override
            public void accept(String t) {
                System.out.println("t: " + t);
            }
        });
    }

    @Test

            

Reported by PMD.

Unit tests should not contain more than 1 assert(s).
Design

Line: 41

                  }

    @Test
    public void threadSafetyWhenSchedulerIsHoppingBetweenThreads() {

        final int NUM = 1000000;
        final CountDownLatch latch = new CountDownLatch(1);
        final HashMap<String, Integer> map = new HashMap<>();


            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 47

                      final CountDownLatch latch = new CountDownLatch(1);
        final HashMap<String, Integer> map = new HashMap<>();

        final Scheduler.Worker inner = Schedulers.computation().createWorker();

        try {
            inner.schedule(new Runnable() {

                private HashMap<String, Integer> statefulMap = map;

            

Reported by PMD.

Avoid using implementation types like 'HashMap'; use the interface instead
Design

Line: 52

                      try {
            inner.schedule(new Runnable() {

                private HashMap<String, Integer> statefulMap = map;
                int nonThreadSafeCounter;

                @Override
                public void run() {
                    Integer i = statefulMap.get("a");

            

Reported by PMD.

Avoid printStackTrace(); use a logger call instead.
Design

Line: 80

                          try {
                latch.await();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

            System.out.println("Count A: " + map.get("a"));
            System.out.println("Count B: " + map.get("b"));
            System.out.println("nonThreadSafeCounter: " + map.get("nonThreadSafeCounter"));

            

Reported by PMD.

JUnit assertions should include a message
Design

Line: 87

                          System.out.println("Count B: " + map.get("b"));
            System.out.println("nonThreadSafeCounter: " + map.get("nonThreadSafeCounter"));

            assertEquals(NUM, map.get("a").intValue());
            assertEquals(NUM, map.get("b").intValue());
            assertEquals(NUM, map.get("nonThreadSafeCounter").intValue());
        } finally {
            inner.dispose();
        }

            

Reported by PMD.

src/test/java/io/reactivex/rxjava3/single/SingleNullTests.java
70 issues
This class has a bunch of public methods and attributes
Design

Line: 14

               * the License for the specific language governing permissions and limitations under the License.
 */

package io.reactivex.rxjava3.single;

import static org.junit.Assert.assertTrue;

import java.lang.reflect.*;
import java.util.*;

            

Reported by PMD.

This class has too many methods, consider refactoring it.
Design

Line: 30

              import io.reactivex.rxjava3.functions.*;
import io.reactivex.rxjava3.internal.functions.Functions;

public class SingleNullTests extends RxJavaTest {

    Single<Integer> just1 = Single.just(1);

    Single<Integer> error = Single.error(new TestException());


            

Reported by PMD.

The class 'SingleNullTests' has a Standard Cyclomatic Complexity of 2 (Highest = 11).
Design

Line: 30

              import io.reactivex.rxjava3.functions.*;
import io.reactivex.rxjava3.internal.functions.Functions;

public class SingleNullTests extends RxJavaTest {

    Single<Integer> just1 = Single.just(1);

    Single<Integer> error = Single.error(new TestException());


            

Reported by PMD.

The class 'SingleNullTests' has a Modified Cyclomatic Complexity of 2 (Highest = 11).
Design

Line: 30

              import io.reactivex.rxjava3.functions.*;
import io.reactivex.rxjava3.internal.functions.Functions;

public class SingleNullTests extends RxJavaTest {

    Single<Integer> just1 = Single.just(1);

    Single<Integer> error = Single.error(new TestException());


            

Reported by PMD.

Possible God Class (WMC=48, ATFD=31, TCC=12.892%)
Design

Line: 30

              import io.reactivex.rxjava3.functions.*;
import io.reactivex.rxjava3.internal.functions.Functions;

public class SingleNullTests extends RxJavaTest {

    Single<Integer> just1 = Single.just(1);

    Single<Integer> error = Single.error(new TestException());


            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 32

              
public class SingleNullTests extends RxJavaTest {

    Single<Integer> just1 = Single.just(1);

    Single<Integer> error = Single.error(new TestException());

    @Test
    public void ambIterableIteratorNull() {

            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 34

              
    Single<Integer> just1 = Single.just(1);

    Single<Integer> error = Single.error(new TestException());

    @Test
    public void ambIterableIteratorNull() {
        Single.amb(new Iterable<Single<Object>>() {
            @Override

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 48

              
    @Test
    public void ambIterableOneIsNull() {
        Single.amb(Arrays.asList(null, just1))
                .test()
                .assertError(NullPointerException.class);
    }

    @Test

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 48

              
    @Test
    public void ambIterableOneIsNull() {
        Single.amb(Arrays.asList(null, just1))
                .test()
                .assertError(NullPointerException.class);
    }

    @Test

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 55

              
    @Test
    public void ambArrayOneIsNull() {
        Single.ambArray(null, just1)
            .test()
            .assertError(NullPointerException.class);
    }

    @Test(expected = NullPointerException.class)

            

Reported by PMD.

src/test/java/io/reactivex/rxjava3/internal/jdk8/MaybeToCompletionStageTest.java
70 issues
A method/constructor should not explicitly throw java.lang.Exception
Design

Line: 32

              public class MaybeToCompletionStageTest extends RxJavaTest {

    @Test
    public void just() throws Exception {
        Integer v = Maybe.just(1)
                .toCompletionStage(null)
                .toCompletableFuture()
                .get();


            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 33

              
    @Test
    public void just() throws Exception {
        Integer v = Maybe.just(1)
                .toCompletionStage(null)
                .toCompletableFuture()
                .get();

        assertEquals((Integer)1, v);

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 33

              
    @Test
    public void just() throws Exception {
        Integer v = Maybe.just(1)
                .toCompletionStage(null)
                .toCompletableFuture()
                .get();

        assertEquals((Integer)1, v);

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 33

              
    @Test
    public void just() throws Exception {
        Integer v = Maybe.just(1)
                .toCompletionStage(null)
                .toCompletableFuture()
                .get();

        assertEquals((Integer)1, v);

            

Reported by PMD.

JUnit assertions should include a message
Design

Line: 38

                              .toCompletableFuture()
                .get();

        assertEquals((Integer)1, v);
    }

    @Test
    public void empty() throws Exception {
        Integer v = Maybe.<Integer>empty()

            

Reported by PMD.

A method/constructor should not explicitly throw java.lang.Exception
Design

Line: 42

                  }

    @Test
    public void empty() throws Exception {
        Integer v = Maybe.<Integer>empty()
                .toCompletionStage(2)
                .toCompletableFuture()
                .get();


            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 43

              
    @Test
    public void empty() throws Exception {
        Integer v = Maybe.<Integer>empty()
                .toCompletionStage(2)
                .toCompletableFuture()
                .get();

        assertEquals((Integer)2, v);

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 43

              
    @Test
    public void empty() throws Exception {
        Integer v = Maybe.<Integer>empty()
                .toCompletionStage(2)
                .toCompletableFuture()
                .get();

        assertEquals((Integer)2, v);

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 43

              
    @Test
    public void empty() throws Exception {
        Integer v = Maybe.<Integer>empty()
                .toCompletionStage(2)
                .toCompletableFuture()
                .get();

        assertEquals((Integer)2, v);

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 43

              
    @Test
    public void empty() throws Exception {
        Integer v = Maybe.<Integer>empty()
                .toCompletionStage(2)
                .toCompletableFuture()
                .get();

        assertEquals((Integer)2, v);

            

Reported by PMD.

src/test/java/io/reactivex/rxjava3/parallel/ParallelDoOnNextTryTest.java
69 issues
System.out.println is used
Design

Line: 106

                          @Override
            public void accept(Integer v) throws Exception {
                if (1 / v < 0) {
                    System.out.println("Should not happen!");
                }
            }
        }, ParallelFailureHandling.ERROR)
        .sequential()
        .test()

            

Reported by PMD.

System.out.println is used
Design

Line: 123

                          @Override
            public void accept(Integer v) throws Exception {
                if (1 / v < 0) {
                    System.out.println("Should not happen!");
                }
            }
        }, ParallelFailureHandling.STOP)
        .sequential()
        .test()

            

Reported by PMD.

System.out.println is used
Design

Line: 144

                                  return;
                }
                if (1 / v < 0) {
                    System.out.println("Should not happen!");
                }
            }
        }, ParallelFailureHandling.RETRY)
        .sequential()
        .test()

            

Reported by PMD.

System.out.println is used
Design

Line: 161

                          @Override
            public void accept(Integer v) throws Exception {
                if (1 / v < 0) {
                    System.out.println("Should not happen!");
                }
            }
        }, new BiFunction<Long, Throwable, ParallelFailureHandling>() {
            @Override
            public ParallelFailureHandling apply(Long n, Throwable e) throws Exception {

            

Reported by PMD.

System.out.println is used
Design

Line: 183

                          @Override
            public void accept(Integer v) throws Exception {
                if (1 / v < 0) {
                    System.out.println("Should not happen!");
                }
            }
        }, ParallelFailureHandling.SKIP)
        .sequential()
        .test()

            

Reported by PMD.

System.out.println is used
Design

Line: 200

                          @Override
            public void accept(Integer v) throws Exception {
                if (1 / v < 0) {
                    System.out.println("Should not happen!");
                }
            }
        }, new BiFunction<Long, Throwable, ParallelFailureHandling>() {
            @Override
            public ParallelFailureHandling apply(Long n, Throwable e) throws Exception {

            

Reported by PMD.

System.out.println is used
Design

Line: 247

                          @Override
            public void accept(Integer v) throws Exception {
                if (1 / v < 0) {
                    System.out.println("Should not happen!");
                }
            }
        }, ParallelFailureHandling.ERROR)
        .filter(Functions.alwaysTrue())
        .sequential()

            

Reported by PMD.

System.out.println is used
Design

Line: 265

                          @Override
            public void accept(Integer v) throws Exception {
                if (1 / v < 0) {
                    System.out.println("Should not happen!");
                }
            }
        }, ParallelFailureHandling.STOP)
        .filter(Functions.alwaysTrue())
        .sequential()

            

Reported by PMD.

System.out.println is used
Design

Line: 287

                                  return;
                }
                if (1 / v < 0) {
                    System.out.println("Should not happen!");
                }
            }
        }, ParallelFailureHandling.RETRY)
        .filter(Functions.alwaysTrue())
        .sequential()

            

Reported by PMD.

System.out.println is used
Design

Line: 305

                          @Override
            public void accept(Integer v) throws Exception {
                if (1 / v < 0) {
                    System.out.println("Should not happen!");
                }
            }
        }, new BiFunction<Long, Throwable, ParallelFailureHandling>() {
            @Override
            public ParallelFailureHandling apply(Long n, Throwable e) throws Exception {

            

Reported by PMD.

src/test/java/io/reactivex/rxjava3/internal/operators/observable/ObservableScanTest.java
69 issues
This class has too many methods, consider refactoring it.
Design

Line: 37

              import io.reactivex.rxjava3.subjects.PublishSubject;
import io.reactivex.rxjava3.testsupport.*;

public class ObservableScanTest extends RxJavaTest {

    @Test
    public void scanIntegersWithInitialValue() {
        Observer<String> observer = TestHelper.mockObserver();


            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 55

                      });
        m.subscribe(observer);

        verify(observer, never()).onError(any(Throwable.class));
        verify(observer, times(1)).onNext("");
        verify(observer, times(1)).onNext("1");
        verify(observer, times(1)).onNext("12");
        verify(observer, times(1)).onNext("123");
        verify(observer, times(4)).onNext(anyString());

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 56

                      m.subscribe(observer);

        verify(observer, never()).onError(any(Throwable.class));
        verify(observer, times(1)).onNext("");
        verify(observer, times(1)).onNext("1");
        verify(observer, times(1)).onNext("12");
        verify(observer, times(1)).onNext("123");
        verify(observer, times(4)).onNext(anyString());
        verify(observer, times(1)).onComplete();

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 57

              
        verify(observer, never()).onError(any(Throwable.class));
        verify(observer, times(1)).onNext("");
        verify(observer, times(1)).onNext("1");
        verify(observer, times(1)).onNext("12");
        verify(observer, times(1)).onNext("123");
        verify(observer, times(4)).onNext(anyString());
        verify(observer, times(1)).onComplete();
        verify(observer, never()).onError(any(Throwable.class));

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 58

                      verify(observer, never()).onError(any(Throwable.class));
        verify(observer, times(1)).onNext("");
        verify(observer, times(1)).onNext("1");
        verify(observer, times(1)).onNext("12");
        verify(observer, times(1)).onNext("123");
        verify(observer, times(4)).onNext(anyString());
        verify(observer, times(1)).onComplete();
        verify(observer, never()).onError(any(Throwable.class));
    }

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 59

                      verify(observer, times(1)).onNext("");
        verify(observer, times(1)).onNext("1");
        verify(observer, times(1)).onNext("12");
        verify(observer, times(1)).onNext("123");
        verify(observer, times(4)).onNext(anyString());
        verify(observer, times(1)).onComplete();
        verify(observer, never()).onError(any(Throwable.class));
    }


            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 60

                      verify(observer, times(1)).onNext("1");
        verify(observer, times(1)).onNext("12");
        verify(observer, times(1)).onNext("123");
        verify(observer, times(4)).onNext(anyString());
        verify(observer, times(1)).onComplete();
        verify(observer, never()).onError(any(Throwable.class));
    }

    @Test

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 61

                      verify(observer, times(1)).onNext("12");
        verify(observer, times(1)).onNext("123");
        verify(observer, times(4)).onNext(anyString());
        verify(observer, times(1)).onComplete();
        verify(observer, never()).onError(any(Throwable.class));
    }

    @Test
    public void scanIntegersWithoutInitialValue() {

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 62

                      verify(observer, times(1)).onNext("123");
        verify(observer, times(4)).onNext(anyString());
        verify(observer, times(1)).onComplete();
        verify(observer, never()).onError(any(Throwable.class));
    }

    @Test
    public void scanIntegersWithoutInitialValue() {
        Observer<Integer> observer = TestHelper.mockObserver();

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 81

                      });
        m.subscribe(observer);

        verify(observer, never()).onError(any(Throwable.class));
        verify(observer, never()).onNext(0);
        verify(observer, times(1)).onNext(1);
        verify(observer, times(1)).onNext(3);
        verify(observer, times(1)).onNext(6);
        verify(observer, times(3)).onNext(anyInt());

            

Reported by PMD.

src/test/java/io/reactivex/rxjava3/internal/util/OperatorArgumentNaming.java
69 issues
System.out.print is used
Design

Line: 127

                                                  if (match) {
                                        for (int k = 0; k < overloadFirst.size(); k++) {
                                            if (!overloadFirst.get(k).name.equals(overloadSecond.get(k).name)) {
                                                System.out.print("Argument naming mismatch #");
                                                System.out.println(++counter);

                                                System.out.print("  ");
                                                System.out.print(Strings.padEnd(firstName, Math.max(firstName.length(), secondName.length()) + 1, ' '));
                                                System.out.print(methodOverloadsFirst.getKey());

            

Reported by PMD.

System.out.println is used
Design

Line: 128

                                                      for (int k = 0; k < overloadFirst.size(); k++) {
                                            if (!overloadFirst.get(k).name.equals(overloadSecond.get(k).name)) {
                                                System.out.print("Argument naming mismatch #");
                                                System.out.println(++counter);

                                                System.out.print("  ");
                                                System.out.print(Strings.padEnd(firstName, Math.max(firstName.length(), secondName.length()) + 1, ' '));
                                                System.out.print(methodOverloadsFirst.getKey());
                                                System.out.print("  ");

            

Reported by PMD.

System.out.print is used
Design

Line: 130

                                                              System.out.print("Argument naming mismatch #");
                                                System.out.println(++counter);

                                                System.out.print("  ");
                                                System.out.print(Strings.padEnd(firstName, Math.max(firstName.length(), secondName.length()) + 1, ' '));
                                                System.out.print(methodOverloadsFirst.getKey());
                                                System.out.print("  ");
                                                System.out.println(overloadFirst);


            

Reported by PMD.

System.out.print is used
Design

Line: 131

                                                              System.out.println(++counter);

                                                System.out.print("  ");
                                                System.out.print(Strings.padEnd(firstName, Math.max(firstName.length(), secondName.length()) + 1, ' '));
                                                System.out.print(methodOverloadsFirst.getKey());
                                                System.out.print("  ");
                                                System.out.println(overloadFirst);

                                                System.out.print("  ");

            

Reported by PMD.

System.out.print is used
Design

Line: 132

              
                                                System.out.print("  ");
                                                System.out.print(Strings.padEnd(firstName, Math.max(firstName.length(), secondName.length()) + 1, ' '));
                                                System.out.print(methodOverloadsFirst.getKey());
                                                System.out.print("  ");
                                                System.out.println(overloadFirst);

                                                System.out.print("  ");
                                                System.out.print(Strings.padEnd(secondName, Math.max(firstName.length(), secondName.length()) + 1, ' '));

            

Reported by PMD.

System.out.print is used
Design

Line: 133

                                                              System.out.print("  ");
                                                System.out.print(Strings.padEnd(firstName, Math.max(firstName.length(), secondName.length()) + 1, ' '));
                                                System.out.print(methodOverloadsFirst.getKey());
                                                System.out.print("  ");
                                                System.out.println(overloadFirst);

                                                System.out.print("  ");
                                                System.out.print(Strings.padEnd(secondName, Math.max(firstName.length(), secondName.length()) + 1, ' '));
                                                System.out.print(methodOverloadsFirst.getKey());

            

Reported by PMD.

System.out.println is used
Design

Line: 134

                                                              System.out.print(Strings.padEnd(firstName, Math.max(firstName.length(), secondName.length()) + 1, ' '));
                                                System.out.print(methodOverloadsFirst.getKey());
                                                System.out.print("  ");
                                                System.out.println(overloadFirst);

                                                System.out.print("  ");
                                                System.out.print(Strings.padEnd(secondName, Math.max(firstName.length(), secondName.length()) + 1, ' '));
                                                System.out.print(methodOverloadsFirst.getKey());
                                                System.out.print("  ");

            

Reported by PMD.

System.out.print is used
Design

Line: 136

                                                              System.out.print("  ");
                                                System.out.println(overloadFirst);

                                                System.out.print("  ");
                                                System.out.print(Strings.padEnd(secondName, Math.max(firstName.length(), secondName.length()) + 1, ' '));
                                                System.out.print(methodOverloadsFirst.getKey());
                                                System.out.print("  ");
                                                System.out.println(overloadSecond);
                                                System.out.println();

            

Reported by PMD.

System.out.print is used
Design

Line: 137

                                                              System.out.println(overloadFirst);

                                                System.out.print("  ");
                                                System.out.print(Strings.padEnd(secondName, Math.max(firstName.length(), secondName.length()) + 1, ' '));
                                                System.out.print(methodOverloadsFirst.getKey());
                                                System.out.print("  ");
                                                System.out.println(overloadSecond);
                                                System.out.println();
                                                break;

            

Reported by PMD.

System.out.print is used
Design

Line: 138

              
                                                System.out.print("  ");
                                                System.out.print(Strings.padEnd(secondName, Math.max(firstName.length(), secondName.length()) + 1, ' '));
                                                System.out.print(methodOverloadsFirst.getKey());
                                                System.out.print("  ");
                                                System.out.println(overloadSecond);
                                                System.out.println();
                                                break;
                                            }

            

Reported by PMD.

src/main/java/io/reactivex/rxjava3/internal/operators/flowable/FlowableZip.java
69 issues
Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 32

              
public final class FlowableZip<T, R> extends Flowable<R> {

    final Publisher<? extends T>[] sources;
    final Iterable<? extends Publisher<? extends T>> sourcesIterable;
    final Function<? super Object[], ? extends R> zipper;
    final int bufferSize;
    final boolean delayError;


            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 33

              public final class FlowableZip<T, R> extends Flowable<R> {

    final Publisher<? extends T>[] sources;
    final Iterable<? extends Publisher<? extends T>> sourcesIterable;
    final Function<? super Object[], ? extends R> zipper;
    final int bufferSize;
    final boolean delayError;

    public FlowableZip(Publisher<? extends T>[] sources,

            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 34

              
    final Publisher<? extends T>[] sources;
    final Iterable<? extends Publisher<? extends T>> sourcesIterable;
    final Function<? super Object[], ? extends R> zipper;
    final int bufferSize;
    final boolean delayError;

    public FlowableZip(Publisher<? extends T>[] sources,
            Iterable<? extends Publisher<? extends T>> sourcesIterable,

            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 35

                  final Publisher<? extends T>[] sources;
    final Iterable<? extends Publisher<? extends T>> sourcesIterable;
    final Function<? super Object[], ? extends R> zipper;
    final int bufferSize;
    final boolean delayError;

    public FlowableZip(Publisher<? extends T>[] sources,
            Iterable<? extends Publisher<? extends T>> sourcesIterable,
                    Function<? super Object[], ? extends R> zipper,

            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 36

                  final Iterable<? extends Publisher<? extends T>> sourcesIterable;
    final Function<? super Object[], ? extends R> zipper;
    final int bufferSize;
    final boolean delayError;

    public FlowableZip(Publisher<? extends T>[] sources,
            Iterable<? extends Publisher<? extends T>> sourcesIterable,
                    Function<? super Object[], ? extends R> zipper,
                    int bufferSize,

            

Reported by PMD.

The user-supplied array 'sources' is stored directly.
Design

Line: 38

                  final int bufferSize;
    final boolean delayError;

    public FlowableZip(Publisher<? extends T>[] sources,
            Iterable<? extends Publisher<? extends T>> sourcesIterable,
                    Function<? super Object[], ? extends R> zipper,
                    int bufferSize,
                    boolean delayError) {
        this.sources = sources;

            

Reported by PMD.

Avoid instantiating new objects inside loops
Performance

Line: 59

                          sources = new Publisher[8];
            for (Publisher<? extends T> p : sourcesIterable) {
                if (count == sources.length) {
                    Publisher<? extends T>[] b = new Publisher[count + (count >> 2)];
                    System.arraycopy(sources, 0, b, 0, count);
                    sources = b;
                }
                sources[count++] = p;
            }

            

Reported by PMD.

The class 'ZipCoordinator' has a Standard Cyclomatic Complexity of 6 (Highest = 29).
Design

Line: 81

                      coordinator.subscribe(sources, count);
    }

    static final class ZipCoordinator<T, R>
    extends AtomicInteger
    implements Subscription {

        private static final long serialVersionUID = -2434867452883857743L;


            

Reported by PMD.

The class 'ZipCoordinator' has a Modified Cyclomatic Complexity of 6 (Highest = 29).
Design

Line: 81

                      coordinator.subscribe(sources, count);
    }

    static final class ZipCoordinator<T, R>
    extends AtomicInteger
    implements Subscription {

        private static final long serialVersionUID = -2434867452883857743L;


            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 87

              
        private static final long serialVersionUID = -2434867452883857743L;

        final Subscriber<? super R> downstream;

        final ZipSubscriber<T, R>[] subscribers;

        final Function<? super Object[], ? extends R> zipper;


            

Reported by PMD.

src/test/java/io/reactivex/rxjava3/internal/jdk8/ParallelMapOptionalTest.java
68 issues
This class has too many methods, consider refactoring it.
Design

Line: 32

              import io.reactivex.rxjava3.schedulers.Schedulers;
import io.reactivex.rxjava3.testsupport.TestHelper;

public class ParallelMapOptionalTest extends RxJavaTest {

    @Test
    public void doubleFilter() {
        Flowable.range(1, 10)
        .parallel()

            

Reported by PMD.

JUnit tests should include assert() or fail()
Design

Line: 35

              public class ParallelMapOptionalTest extends RxJavaTest {

    @Test
    public void doubleFilter() {
        Flowable.range(1, 10)
        .parallel()
        .mapOptional(Optional::of)
        .filter(new Predicate<Integer>() {
            @Override

            

Reported by PMD.

JUnit tests should include assert() or fail()
Design

Line: 57

                  }

    @Test
    public void doubleFilterAsync() {
        Flowable.range(1, 10)
        .parallel()
        .runOn(Schedulers.computation())
        .mapOptional(Optional::of)
        .filter(new Predicate<Integer>() {

            

Reported by PMD.

Unit tests should not contain more than 1 assert(s).
Design

Line: 81

                  }

    @Test
    public void doubleError() {
        List<Throwable> errors = TestHelper.trackPluginErrors();
        try {
            new ParallelInvalid()
            .mapOptional(Optional::of)
            .sequential()

            

Reported by PMD.

JUnit assertions should include a message
Design

Line: 90

                          .test()
            .assertFailure(TestException.class);

            assertFalse(errors.isEmpty());
            for (Throwable ex : errors) {
                assertTrue(ex.toString(), ex.getCause() instanceof TestException);
            }
        } finally {
            RxJavaPlugins.reset();

            

Reported by PMD.

Unit tests should not contain more than 1 assert(s).
Design

Line: 100

                  }

    @Test
    public void doubleError2() {
        List<Throwable> errors = TestHelper.trackPluginErrors();
        try {
            new ParallelInvalid()
            .mapOptional(Optional::of)
            .filter(Functions.alwaysTrue())

            

Reported by PMD.

JUnit assertions should include a message
Design

Line: 110

                          .test()
            .assertFailure(TestException.class);

            assertFalse(errors.isEmpty());
            for (Throwable ex : errors) {
                assertTrue(ex.toString(), ex.getCause() instanceof TestException);
            }
        } finally {
            RxJavaPlugins.reset();

            

Reported by PMD.

JUnit tests should include assert() or fail()
Design

Line: 120

                  }

    @Test
    public void error() {
        Flowable.error(new TestException())
        .parallel()
        .mapOptional(Optional::of)
        .sequential()
        .test()

            

Reported by PMD.

JUnit tests should include assert() or fail()
Design

Line: 130

                  }

    @Test
    public void mapCrash() {
        Flowable.just(1)
        .parallel()
        .mapOptional(v -> { throw new TestException(); })
        .sequential()
        .test()

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 131

              
    @Test
    public void mapCrash() {
        Flowable.just(1)
        .parallel()
        .mapOptional(v -> { throw new TestException(); })
        .sequential()
        .test()
        .assertFailure(TestException.class);

            

Reported by PMD.

src/test/java/io/reactivex/rxjava3/internal/operators/observable/ObservableSkipUntilTest.java
68 issues
Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 27

              import io.reactivex.rxjava3.testsupport.TestHelper;

public class ObservableSkipUntilTest extends RxJavaTest {
    Observer<Object> observer;

    @Before
    public void before() {
        observer = TestHelper.mockObserver();
    }

            

Reported by PMD.

Potential violation of Law of Demeter (object not created locally)
Design

Line: 39

                      PublishSubject<Integer> source = PublishSubject.create();
        PublishSubject<Integer> other = PublishSubject.create();

        Observable<Integer> m = source.skipUntil(other);
        m.subscribe(observer);

        source.onNext(0);
        source.onNext(1);


            

Reported by PMD.

Potential violation of Law of Demeter (object not created locally)
Design

Line: 40

                      PublishSubject<Integer> other = PublishSubject.create();

        Observable<Integer> m = source.skipUntil(other);
        m.subscribe(observer);

        source.onNext(0);
        source.onNext(1);

        other.onNext(100);

            

Reported by PMD.

Potential violation of Law of Demeter (object not created locally)
Design

Line: 42

                      Observable<Integer> m = source.skipUntil(other);
        m.subscribe(observer);

        source.onNext(0);
        source.onNext(1);

        other.onNext(100);

        source.onNext(2);

            

Reported by PMD.

Potential violation of Law of Demeter (object not created locally)
Design

Line: 43

                      m.subscribe(observer);

        source.onNext(0);
        source.onNext(1);

        other.onNext(100);

        source.onNext(2);
        source.onNext(3);

            

Reported by PMD.

Potential violation of Law of Demeter (object not created locally)
Design

Line: 45

                      source.onNext(0);
        source.onNext(1);

        other.onNext(100);

        source.onNext(2);
        source.onNext(3);
        source.onNext(4);
        source.onComplete();

            

Reported by PMD.

Potential violation of Law of Demeter (object not created locally)
Design

Line: 47

              
        other.onNext(100);

        source.onNext(2);
        source.onNext(3);
        source.onNext(4);
        source.onComplete();

        verify(observer, never()).onError(any(Throwable.class));

            

Reported by PMD.

Potential violation of Law of Demeter (object not created locally)
Design

Line: 48

                      other.onNext(100);

        source.onNext(2);
        source.onNext(3);
        source.onNext(4);
        source.onComplete();

        verify(observer, never()).onError(any(Throwable.class));
        verify(observer, times(1)).onNext(2);

            

Reported by PMD.

Potential violation of Law of Demeter (object not created locally)
Design

Line: 49

              
        source.onNext(2);
        source.onNext(3);
        source.onNext(4);
        source.onComplete();

        verify(observer, never()).onError(any(Throwable.class));
        verify(observer, times(1)).onNext(2);
        verify(observer, times(1)).onNext(3);

            

Reported by PMD.

Potential violation of Law of Demeter (object not created locally)
Design

Line: 50

                      source.onNext(2);
        source.onNext(3);
        source.onNext(4);
        source.onComplete();

        verify(observer, never()).onError(any(Throwable.class));
        verify(observer, times(1)).onNext(2);
        verify(observer, times(1)).onNext(3);
        verify(observer, times(1)).onNext(4);

            

Reported by PMD.