jenkinsci/hpe-application-automation-tools-plugin

View on GitHub
src/main/java/com/microfocus/application/automation/tools/octane/model/processors/scm/SvnSCMProcessor.java

Summary

Maintainability
A
45 mins
Test Coverage

Avoid deeply nested control flow statements.
Open

                        if (property instanceof Mailer.UserProperty) {
                            userEmail = ((Mailer.UserProperty) property).getAddress();
                        }

    Refactor this method to reduce its Cognitive Complexity from 19 to the 15 allowed.
    Open

        private List<SCMCommit> extractCommits(List<ChangeLogSet<? extends ChangeLogSet.Entry>> changes) {

    Cognitive Complexity is a measure of how hard the control flow of a method is to understand. Methods with high Cognitive Complexity will be difficult to maintain.

    See

    Either re-interrupt this method or rethrow the "InterruptedException" that can be caught here.
    Open

            } catch (IOException | InterruptedException e) {

    InterruptedExceptions should never be ignored in the code, and simply logging the exception counts in this case as "ignoring". The throwing of the InterruptedException clears the interrupted state of the Thread, so if the exception is not handled properly the fact that the thread was interrupted will be lost. Instead, InterruptedExceptions should either be rethrown - immediately or after cleaning up the method's state - or the thread should be re-interrupted by calling Thread.interrupt() even if this is supposed to be a single-threaded application. Any other course of action risks delaying thread shutdown and loses the information that the thread was interrupted - probably without finishing its task.

    Similarly, the ThreadDeath exception should also be propagated. According to its JavaDoc:

    If ThreadDeath is caught by a method, it is important that it be rethrown so that the thread actually dies.

    Noncompliant Code Example

    public void run () {
      try {
        while (true) {
          // do stuff
        }
      }catch (InterruptedException e) { // Noncompliant; logging is not enough
        LOGGER.log(Level.WARN, "Interrupted!", e);
      }
    }
    

    Compliant Solution

    public void run () {
      try {
        while (true) {
          // do stuff
        }
      }catch (InterruptedException e) {
        LOGGER.log(Level.WARN, "Interrupted!", e);
        // Restore interrupted state...
        Thread.currentThread().interrupt();
      }
    }
    

    See

    There are no issues that match your filters.

    Category
    Status