tomokinakamaru/silverchain

View on GitHub
src/main/java/silverchain/javadoc/Javadocs.java

Summary

Maintainability
C
7 hrs
Test Coverage
A
96%

Javadocs has 22 methods (exceeds 20 allowed). Consider refactoring.
Open

public final class Javadocs {

  private final String path;

  private final WarningHandler handler;
Severity: Minor
Found in src/main/java/silverchain/javadoc/Javadocs.java - About 2 hrs to fix

    File Javadocs.java has 257 lines of code (exceeds 250 allowed). Consider refactoring.
    Open

    package silverchain.javadoc;
    
    import static java.util.Arrays.stream;
    import static java.util.stream.Collectors.joining;
    
    
    Severity: Minor
    Found in src/main/java/silverchain/javadoc/Javadocs.java - About 2 hrs to fix

      Method getSignature has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
      Open

        private String getSignature(MethodDeclaration declaration) {
          StringBuilder builder = new StringBuilder();
          builder.append(declaration.getNameAsString());
          builder.append("(");
          List<String> types = new ArrayList<>();
      Severity: Minor
      Found in src/main/java/silverchain/javadoc/Javadocs.java - About 35 mins to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Method getSignature has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
      Open

        private static String getSignature(Method method) {
          StringBuilder builder = new StringBuilder();
          builder.append(method.name());
          builder.append("(");
          if (method.parameters().formalParameters().isPresent()) {
      Severity: Minor
      Found in src/main/java/silverchain/javadoc/Javadocs.java - About 35 mins to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Method loadComments has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
      Open

        private void loadComments(MethodDeclaration declaration) {
          String pkg = getPackageName(getCompilationUnit(declaration));
      
          ClassOrInterfaceDeclaration decl = getClassOrInterfaceDeclaration(declaration);
          if (decl == null) {
      Severity: Minor
      Found in src/main/java/silverchain/javadoc/Javadocs.java - About 35 mins to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Method findFqn has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
      Open

        private String findFqn(String name, Node node) {
          CompilationUnit unit = getCompilationUnit(node);
      
          String head = name.split("\\.")[0];
          String tail = name.substring(head.length());
      Severity: Minor
      Found in src/main/java/silverchain/javadoc/Javadocs.java - About 25 mins to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Method getComment has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
      Open

        private String getComment(MethodDeclaration declaration) {
          if (!declaration.hasJavaDocComment()) {
            return null;
          }
      
      
      Severity: Minor
      Found in src/main/java/silverchain/javadoc/Javadocs.java - About 25 mins to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Remove this unused private "getSignature" method.
      Open

        private static String getSignature(Method method) {

      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.

      Merge this if statement with the enclosing one.
      Open

            if (parsedTypeNames.get(pkg).contains(head)) {

      Merging collapsible if statements increases the code's readability.

      Noncompliant Code Example

      if (file != null) {
        if (file.isFile() || file.isDirectory()) {
          /* ... */
        }
      }
      

      Compliant Solution

      if (file != null && isFileOrDirectory(file)) {
        /* ... */
      }
      
      private static boolean isFileOrDirectory(File file) {
        return file.isFile() || file.isDirectory();
      }
      

      Merge this if statement with the enclosing one.
      Open

            if (importedNames.get(unit).containsKey(head)) {

      Merging collapsible if statements increases the code's readability.

      Noncompliant Code Example

      if (file != null) {
        if (file.isFile() || file.isDirectory()) {
          /* ... */
        }
      }
      

      Compliant Solution

      if (file != null && isFileOrDirectory(file)) {
        /* ... */
      }
      
      private static boolean isFileOrDirectory(File file) {
        return file.isFile() || file.isDirectory();
      }
      

      These nested if statements could be combined
      Open

            if (parsedTypeNames.get(pkg).contains(head)) {
              return getQualifiedName(pkg, head) + tail;
            }

      CollapsibleIfStatements

      Since: PMD 3.1

      Priority: Medium

      Categories: Style

      Remediation Points: 50000

      Sometimes two consecutive 'if' statements can be consolidated by separating their conditions with a boolean short-circuit operator.

      Example:

      void bar() {
       if (x) { // original implementation
       if (y) {
       // do stuff
       }
       }
      }
      
      void bar() {
       if (x && y) { // optimized implementation
       // do stuff
       }
      }

      These nested if statements could be combined
      Open

            if (importedNames.get(unit).containsKey(head)) {
              return importedNames.get(unit).get(head) + tail;
            }

      CollapsibleIfStatements

      Since: PMD 3.1

      Priority: Medium

      Categories: Style

      Remediation Points: 50000

      Sometimes two consecutive 'if' statements can be consolidated by separating their conditions with a boolean short-circuit operator.

      Example:

      void bar() {
       if (x) { // original implementation
       if (y) {
       // do stuff
       }
       }
      }
      
      void bar() {
       if (x && y) { // optimized implementation
       // do stuff
       }
      }

      There are no issues that match your filters.

      Category
      Status