jenkinsci/hpe-application-automation-tools-plugin

View on GitHub
src/main/java/com/microfocus/application/automation/tools/run/SseBuilder.java

Summary

Maintainability
C
7 hrs
Test Coverage

Avoid too many return statements within this method.
Open

                    return FormValidation.ok();

    Avoid too many return statements within this method.
    Open

                return FormValidation.warning("Cannot find any credentials with id " + value);

      Constructor has 8 parameters, which is greater than 7 authorized.
      Open

          public SseBuilder(String almServerName,

      A long parameter list can indicate that a new structure should be created to wrap the numerous parameters or that the function is doing too many things.

      Noncompliant Code Example

      With a maximum number of 4 parameters:

      public void doSomething(int param1, int param2, int param3, String param4, long param5) {
      ...
      }
      

      Compliant Solution

      public void doSomething(int param1, int param2, int param3, String param4) {
      ...
      }
      

      Exceptions

      Methods annotated with :

      • Spring's @RequestMapping (and related shortcut annotations, like @GetRequest)
      • JAX-RS API annotations (like @javax.ws.rs.GET)
      • Bean constructor injection with @org.springframework.beans.factory.annotation.Autowired
      • CDI constructor injection with @javax.inject.Inject
      • @com.fasterxml.jackson.annotation.JsonCreator

      may have a lot of parameters, encapsulation being possible. Such methods are therefore ignored.

      A "NullPointerException" could be thrown; "credentials" is nullable here.
      Open

                      credentials.getUsername(),

      A reference to null should never be dereferenced/accessed. Doing so will cause a NullPointerException to be thrown. At best, such an exception will cause abrupt program termination. At worst, it could expose debugging information that would be useful to an attacker, or it could allow an attacker to bypass security measures.

      Note that when they are present, this rule takes advantage of @CheckForNull and @Nonnull annotations defined in JSR-305 to understand which values are and are not nullable except when @Nonnull is used on the parameter to equals, which by contract should always work with null.

      Noncompliant Code Example

      @CheckForNull
      String getName(){...}
      
      public boolean isNameEmpty() {
        return getName().length() == 0; // Noncompliant; the result of getName() could be null, but isn't null-checked
      }
      
      Connection conn = null;
      Statement stmt = null;
      try{
        conn = DriverManager.getConnection(DB_URL,USER,PASS);
        stmt = conn.createStatement();
        // ...
      
      }catch(Exception e){
        e.printStackTrace();
      }finally{
        stmt.close();   // Noncompliant; stmt could be null if an exception was thrown in the try{} block
        conn.close();  // Noncompliant; conn could be null if an exception was thrown
      }
      
      private void merge(@Nonnull Color firstColor, @Nonnull Color secondColor){...}
      
      public  void append(@CheckForNull Color color) {
          merge(currentColor, color);  // Noncompliant; color should be null-checked because merge(...) doesn't accept nullable parameters
      }
      
      void paint(Color color) {
        if(color == null) {
          System.out.println("Unable to apply color " + color.toString());  // Noncompliant; NullPointerException will be thrown
          return;
        }
        ...
      }
      

      See

      Remove this unused private "execute" method.
      Open

          private Testsuites execute(

      private methods that are never executed are dead code: unnecessary, inoperative code that should be removed. Cleaning out dead code decreases the size of the maintained codebase, making it easier to understand the program and preventing bugs from being introduced.

      Note that this rule does not take reflection into account, which means that issues will be raised on private methods that are only accessed using the reflection API.

      Noncompliant Code Example

      public class Foo implements Serializable
      {
        private Foo(){}     //Compliant, private empty constructor intentionally used to prevent any direct instantiation of a class.
        public static void doSomething(){
          Foo foo = new Foo();
          ...
        }
        private void unusedPrivateMethod(){...}
        private void writeObject(ObjectOutputStream s){...}  //Compliant, relates to the java serialization mechanism
        private void readObject(ObjectInputStream in){...}  //Compliant, relates to the java serialization mechanism
      }
      

      Compliant Solution

      public class Foo implements Serializable
      {
        private Foo(){}     //Compliant, private empty constructor intentionally used to prevent any direct instantiation of a class.
        public static void doSomething(){
          Foo foo = new Foo();
          ...
        }
      
        private void writeObject(ObjectOutputStream s){...}  //Compliant, relates to the java serialization mechanism
      
        private void readObject(ObjectInputStream in){...}  //Compliant, relates to the java serialization mechanism
      }
      

      Exceptions

      This rule doesn't raise any issue on annotated methods.

      Identical blocks of code found in 2 locations. Consider refactoring.
      Open

              public FormValidation doCheckCredentialsId(@AncestorInPath Item project,
                      @QueryParameter String url,
                      @QueryParameter String value) {
                  if (project == null || !project.hasPermission(Item.EXTENDED_READ)) {
                      return FormValidation.ok();
      src/main/java/com/microfocus/application/automation/tools/pipelineSteps/SseBuildAndPublishStep.java on lines 301..339

      Duplicated Code

      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

      Tuning

      This issue has a mass of 186.

      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

      Refactorings

      Further Reading

      Identical blocks of code found in 2 locations. Consider refactoring.
      Open

                  String timeslotDuration) {
      
              this.almServerName = almServerName;
              this.credentialsId = credentialsId;
              this.almProject = almProject;
      src/main/java/com/microfocus/application/automation/tools/sse/autenvironment/AUTEnvironmentParametersManager.java on lines 77..87

      Duplicated Code

      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

      Tuning

      This issue has a mass of 82.

      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

      Refactorings

      Further Reading

      Identical blocks of code found in 2 locations. Consider refactoring.
      Open

          public String getServerUrl(String almServerName) {
      
              String ret = "";
              AlmServerSettingsModel[] almServers = getDescriptor().getAlmServers();
              if (almServers != null && almServers.length > 0) {
      src/main/java/com/microfocus/application/automation/tools/run/AutEnvironmentBuilder.java on lines 99..113

      Duplicated Code

      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

      Tuning

      This issue has a mass of 80.

      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

      Refactorings

      Further Reading

      Identical blocks of code found in 5 locations. Consider refactoring.
      Open

              public ListBoxModel doFillCredentialsIdItems(@AncestorInPath Item project,
                      @QueryParameter String credentialsId) {
      
                  if (project == null || !project.hasPermission(Item.CONFIGURE)) {
                      return new StandardUsernameListBoxModel().includeCurrentValue(credentialsId);
      src/main/java/com/microfocus/application/automation/tools/commonResultUpload/CommonResultUploadBuilder.java on lines 243..256
      src/main/java/com/microfocus/application/automation/tools/pipelineSteps/SseBuildAndPublishStep.java on lines 285..299
      src/main/java/com/microfocus/application/automation/tools/results/TestResultToALMUploader.java on lines 524..537
      src/main/java/com/microfocus/application/automation/tools/run/PcBuilder.java on lines 1248..1262

      Duplicated Code

      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

      Tuning

      This issue has a mass of 75.

      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

      Refactorings

      Further Reading

      There are no issues that match your filters.

      Category
      Status