Reports calls to Throwable.initCause() where an exception constructor also takes a Throwable cause argument.

In this case, the initCause() call can be removed and its argument can be added to the call to the exception's constructor.

Example:


  try {
      process();
  }
  catch (RuntimeException ex) {
    RuntimeException wrapper = new RuntimeException("Error while processing");
    wrapper.initCause(ex); // Unnecessary call to 'Throwable.initCause()'
    throw wrapper;
  }

A quick-fix is available to pass the cause argument to the constructor. After the quick-fix is applied:


  try {
      process();
  }
  catch (RuntimeException ex) {
    RuntimeException wrapper = new RuntimeException("Error while processing", ex);
    throw wrapper;
  }