A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/pmd/pmd/issues/2686 below:

[java] UnusedAssignment must not flag abstract method parameters in interfaces and abstract classes · Issue #2686 · pmd/pmd · GitHub

Affects PMD Version:
6.25.0

Description:
UnusedAssignment must not flag formal parameters for abstract methods in interfaces and abstract classes when property reportUnusedVariables is set to true.

Code Sample demonstrating the issue:

package ds;

public interface IArray {

  long[] get();

  long[] getExtentArray();

  int count();

  void clear();

  int findIndex(long searchKey);

  boolean find(long searchKey);

  int insert(long value);

  int syncInsert(long value);

  boolean delete(long value);

  boolean syncDelete(long value);

  void display();
}
package ds;

import java.util.Arrays;
import java.util.concurrent.atomic.AtomicInteger;

public abstract class AbstractArray implements IArray {
  protected final long[] a;
  protected final AtomicInteger nElems;
  protected final Object lock = new Object();
  protected boolean strict;
  protected AtomicInteger modCount;

  public AbstractArray(int max, boolean strict) {
    if (max <= 0) throw new IllegalArgumentException("Invalid size: " + max);
    a = new long[max];
    nElems = new AtomicInteger();
    modCount = new AtomicInteger();
    this.strict = strict;
  }

 
  @Override
  public long[] get() {
    return a.clone();
  }

  @Override
  public long[] getExtentArray() {
    return Arrays.copyOfRange(a, 0, nElems.intValue());
  }

  @Override
  public abstract int findIndex(long searchKey);

  @Override
  public abstract boolean find(long searchKey);

  @Override
  public abstract int insert(long value);

  @Override
  public abstract boolean delete(long value);

  @Override
  public int syncInsert(long value) {
    synchronized (lock) {
      return insert(value);
    }
  }

  @Override
  public void clear() {
    int length = nElems.intValue();
    if (length == 0) return;
    modCount.incrementAndGet();
    Arrays.fill(a, 0, length, 0L);
    nElems.set(0);
  }

  @Override
  public boolean syncDelete(long value) {
    synchronized (lock) {
      return delete(value);
    }
  }

  @Override
  @SuppressWarnings({"PMD.SystemPrintln", "PMD.LawOfDemeter"})
  public void display() {
    System.out.println(this);
  }

  @Override
  @SuppressWarnings({"PMD.DataflowAnomalyAnalysis", "PMD.LawOfDemeter"})
  public String toString() {
    int length = nElems.intValue();
    StringBuilder sb = new StringBuilder();
    String lineSeparator = System.lineSeparator();
    sb.append(getClass().getName())
        .append(lineSeparator)
        .append("nElems = ")
        .append(length)
        .append(lineSeparator);
    long[] newArray = a.clone();
    for (int j = 0; j < length; j++) {
      sb.append(newArray[j]).append(' ');
      if ((j + 1) % 10 == 0) sb.append(lineSeparator);
    }
    return sb.toString();
  }

  @Override
  public int count() {
    return nElems.intValue();
  }

  @Override
  @SuppressWarnings("all")
  public boolean equals(final Object o) {
    if (o == this) return true;
    if (!(o instanceof AbstractArray)) return false;
    final AbstractArray other = (AbstractArray) o;
    if (!other.canEqual((Object) this)) return false;
    if (!java.util.Arrays.equals(this.a, other.a)) return false;
    final Object this$nElems = this.nElems;
    final Object other$nElems = other.nElems;
    if (this$nElems == null ? other$nElems != null : !this$nElems.equals(other$nElems))
      return false;
    return true;
  }

  @SuppressWarnings("all")
  protected boolean canEqual(final Object other) {
    return other instanceof AbstractArray;
  }

  @Override
  @SuppressWarnings("all")
  public int hashCode() {
    final int PRIME = 59;
    int result = 1;
    result = result * PRIME + java.util.Arrays.hashCode(this.a);
    final Object $nElems = this.nElems;
    result = result * PRIME + ($nElems == null ? 43 : $nElems.hashCode());
    return result;
  }
}

Running PMD through: [CLI | Ant | Maven | Gradle | Designer | Other]


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4