LoboEvolution/LoboEvolution

View on GitHub
LoboUnitTest/src/test/java/org/loboevolution/css/property/ElementClientWidthTest.java

Summary

Maintainability
F
5 days
Test Coverage

ElementClientWidthTest has 155 methods (exceeds 20 allowed). Consider refactoring.
Open

@ExtendWith(AlertsExtension.class)
public class ElementClientWidthTest extends LoboUnitTest {

    private static final String VALUE_ = "e == null ? e : (e.clientWidth <= 700 ? e.clientWidth :"
            + "e.clientWidth - document.documentElement.clientWidth)";

    File ElementClientWidthTest.java has 834 lines of code (exceeds 250 allowed). Consider refactoring.
    Open

    /*
     * MIT License
     *
     * Copyright (c) 2014 - 2024 LoboEvolution
     *

      Method test has 27 lines of code (exceeds 25 allowed). Consider refactoring.
      Open

          private static String test(final String tagName) {
              switch (tagName) {
                  case "basefont":
                      return headElementClosesItself(tagName);
                  case "script":

        Define a constant instead of duplicating this literal " var e = document.getElementById('outer'); " 5 times.
        Open

                        + "  var e = document.getElementById('outer');\n"

        Duplicated string literals make the process of refactoring error-prone, since you must be sure to update all occurrences.

        On the other hand, constants can be referenced from many places, but only need to be updated in a single place.

        Noncompliant Code Example

        With the default threshold of 3:

        public void run() {
          prepare("action1");                              // Noncompliant - "action1" is duplicated 3 times
          execute("action1");
          release("action1");
        }
        
        @SuppressWarning("all")                            // Compliant - annotations are excluded
        private void method1() { /* ... */ }
        @SuppressWarning("all")
        private void method2() { /* ... */ }
        
        public String method3(String a) {
          System.out.println("'" + a + "'");               // Compliant - literal "'" has less than 5 characters and is excluded
          return "";                                       // Compliant - literal "" has less than 5 characters and is excluded
        }
        

        Compliant Solution

        private static final String ACTION_1 = "action1";  // Compliant
        
        public void run() {
          prepare(ACTION_1);                               // Compliant
          execute(ACTION_1);
          release(ACTION_1);
        }
        

        Exceptions

        To prevent generating some false-positives, literals having less than 5 characters are excluded.

        Define a constant instead of duplicating this literal "function test() { " 5 times.
        Open

                        + "function test() {\n"

        Duplicated string literals make the process of refactoring error-prone, since you must be sure to update all occurrences.

        On the other hand, constants can be referenced from many places, but only need to be updated in a single place.

        Noncompliant Code Example

        With the default threshold of 3:

        public void run() {
          prepare("action1");                              // Noncompliant - "action1" is duplicated 3 times
          execute("action1");
          release("action1");
        }
        
        @SuppressWarning("all")                            // Compliant - annotations are excluded
        private void method1() { /* ... */ }
        @SuppressWarning("all")
        private void method2() { /* ... */ }
        
        public String method3(String a) {
          System.out.println("'" + a + "'");               // Compliant - literal "'" has less than 5 characters and is excluded
          return "";                                       // Compliant - literal "" has less than 5 characters and is excluded
        }
        

        Compliant Solution

        private static final String ACTION_1 = "action1";  // Compliant
        
        public void run() {
          prepare(ACTION_1);                               // Compliant
          execute(ACTION_1);
          release(ACTION_1);
        }
        

        Exceptions

        To prevent generating some false-positives, literals having less than 5 characters are excluded.

        Define a constant instead of duplicating this literal " alert(" 5 times.
        Open

                        + "  alert(" + VALUE_ + ");\n"

        Duplicated string literals make the process of refactoring error-prone, since you must be sure to update all occurrences.

        On the other hand, constants can be referenced from many places, but only need to be updated in a single place.

        Noncompliant Code Example

        With the default threshold of 3:

        public void run() {
          prepare("action1");                              // Noncompliant - "action1" is duplicated 3 times
          execute("action1");
          release("action1");
        }
        
        @SuppressWarning("all")                            // Compliant - annotations are excluded
        private void method1() { /* ... */ }
        @SuppressWarning("all")
        private void method2() { /* ... */ }
        
        public String method3(String a) {
          System.out.println("'" + a + "'");               // Compliant - literal "'" has less than 5 characters and is excluded
          return "";                                       // Compliant - literal "" has less than 5 characters and is excluded
        }
        

        Compliant Solution

        private static final String ACTION_1 = "action1";  // Compliant
        
        public void run() {
          prepare(ACTION_1);                               // Compliant
          execute(ACTION_1);
          release(ACTION_1);
        }
        

        Exceptions

        To prevent generating some false-positives, literals having less than 5 characters are excluded.

        Define a constant instead of duplicating this literal " " 6 times.
        Open

                        + "</script>\n"

        Duplicated string literals make the process of refactoring error-prone, since you must be sure to update all occurrences.

        On the other hand, constants can be referenced from many places, but only need to be updated in a single place.

        Noncompliant Code Example

        With the default threshold of 3:

        public void run() {
          prepare("action1");                              // Noncompliant - "action1" is duplicated 3 times
          execute("action1");
          release("action1");
        }
        
        @SuppressWarning("all")                            // Compliant - annotations are excluded
        private void method1() { /* ... */ }
        @SuppressWarning("all")
        private void method2() { /* ... */ }
        
        public String method3(String a) {
          System.out.println("'" + a + "'");               // Compliant - literal "'" has less than 5 characters and is excluded
          return "";                                       // Compliant - literal "" has less than 5 characters and is excluded
        }
        

        Compliant Solution

        private static final String ACTION_1 = "action1";  // Compliant
        
        public void run() {
          prepare(ACTION_1);                               // Compliant
          execute(ACTION_1);
          release(ACTION_1);
        }
        

        Exceptions

        To prevent generating some false-positives, literals having less than 5 characters are excluded.

        Rename this method to not match a restricted identifier.
        Open

            public void var() {

        Even if it is technically possible, Restricted Identifiers should not be used as identifiers. This is only possible for compatibility reasons, using it in Java code is confusing and should be avoided.

        Note that this applies to any version of Java, including the one where these identifiers are not yet restricted, to avoid future confusion.

        This rule reports an issue when restricted identifiers:

        • var
        • yield
        • record

        are used as identifiers.

        Noncompliant Code Example

        var var = "var"; // Noncompliant: compiles but this code is confusing
        var = "what is this?";
        
        int yield(int i) { // Noncompliant
          return switch (i) {
            case 1: yield(0); // This is a yield from switch expression, not a recursive call.
            default: yield(i-1);
          };
        }
        
        String record = "record"; // Noncompliant
        

        Compliant Solution

        var myVariable = "var";
        
        int minusOne(int i) {
          return switch (i) {
            case 1: yield(0);
            default: yield(i-1);
          };
        }
        
        String myRecord = "record";
        

        See

        Define a constant instead of duplicating this literal " " 5 times.
        Open

                final String html = "<html><head>\n"

        Duplicated string literals make the process of refactoring error-prone, since you must be sure to update all occurrences.

        On the other hand, constants can be referenced from many places, but only need to be updated in a single place.

        Noncompliant Code Example

        With the default threshold of 3:

        public void run() {
          prepare("action1");                              // Noncompliant - "action1" is duplicated 3 times
          execute("action1");
          release("action1");
        }
        
        @SuppressWarning("all")                            // Compliant - annotations are excluded
        private void method1() { /* ... */ }
        @SuppressWarning("all")
        private void method2() { /* ... */ }
        
        public String method3(String a) {
          System.out.println("'" + a + "'");               // Compliant - literal "'" has less than 5 characters and is excluded
          return "";                                       // Compliant - literal "" has less than 5 characters and is excluded
        }
        

        Compliant Solution

        private static final String ACTION_1 = "action1";  // Compliant
        
        public void run() {
          prepare(ACTION_1);                               // Compliant
          execute(ACTION_1);
          release(ACTION_1);
        }
        

        Exceptions

        To prevent generating some false-positives, literals having less than 5 characters are excluded.

        Define a constant instead of duplicating this literal "
        Open

                        + "</body></html>";

        Duplicated string literals make the process of refactoring error-prone, since you must be sure to update all occurrences.

        On the other hand, constants can be referenced from many places, but only need to be updated in a single place.

        Noncompliant Code Example

        With the default threshold of 3:

        public void run() {
          prepare("action1");                              // Noncompliant - "action1" is duplicated 3 times
          execute("action1");
          release("action1");
        }
        
        @SuppressWarning("all")                            // Compliant - annotations are excluded
        private void method1() { /* ... */ }
        @SuppressWarning("all")
        private void method2() { /* ... */ }
        
        public String method3(String a) {
          System.out.println("'" + a + "'");               // Compliant - literal "'" has less than 5 characters and is excluded
          return "";                                       // Compliant - literal "" has less than 5 characters and is excluded
        }
        

        Compliant Solution

        private static final String ACTION_1 = "action1";  // Compliant
        
        public void run() {
          prepare(ACTION_1);                               // Compliant
          execute(ACTION_1);
          release(ACTION_1);
        }
        

        Exceptions

        To prevent generating some false-positives, literals having less than 5 characters are excluded.

        Define a constant instead of duplicating this literal "<script> " 5 times.</script>
        Open

                        + "<script>\n"

        Duplicated string literals make the process of refactoring error-prone, since you must be sure to update all occurrences.

        On the other hand, constants can be referenced from many places, but only need to be updated in a single place.

        Noncompliant Code Example

        With the default threshold of 3:

        public void run() {
          prepare("action1");                              // Noncompliant - "action1" is duplicated 3 times
          execute("action1");
          release("action1");
        }
        
        @SuppressWarning("all")                            // Compliant - annotations are excluded
        private void method1() { /* ... */ }
        @SuppressWarning("all")
        private void method2() { /* ... */ }
        
        public String method3(String a) {
          System.out.println("'" + a + "'");               // Compliant - literal "'" has less than 5 characters and is excluded
          return "";                                       // Compliant - literal "" has less than 5 characters and is excluded
        }
        

        Compliant Solution

        private static final String ACTION_1 = "action1";  // Compliant
        
        public void run() {
          prepare(ACTION_1);                               // Compliant
          execute(ACTION_1);
          release(ACTION_1);
        }
        

        Exceptions

        To prevent generating some false-positives, literals having less than 5 characters are excluded.

        Define a constant instead of duplicating this literal " " 5 times.
        Open

                        + "</head><body onload='test()'>\n"

        Duplicated string literals make the process of refactoring error-prone, since you must be sure to update all occurrences.

        On the other hand, constants can be referenced from many places, but only need to be updated in a single place.

        Noncompliant Code Example

        With the default threshold of 3:

        public void run() {
          prepare("action1");                              // Noncompliant - "action1" is duplicated 3 times
          execute("action1");
          release("action1");
        }
        
        @SuppressWarning("all")                            // Compliant - annotations are excluded
        private void method1() { /* ... */ }
        @SuppressWarning("all")
        private void method2() { /* ... */ }
        
        public String method3(String a) {
          System.out.println("'" + a + "'");               // Compliant - literal "'" has less than 5 characters and is excluded
          return "";                                       // Compliant - literal "" has less than 5 characters and is excluded
        }
        

        Compliant Solution

        private static final String ACTION_1 = "action1";  // Compliant
        
        public void run() {
          prepare(ACTION_1);                               // Compliant
          execute(ACTION_1);
          release(ACTION_1);
        }
        

        Exceptions

        To prevent generating some false-positives, literals having less than 5 characters are excluded.

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

            private static String test(final String tagName) {
                switch (tagName) {
                    case "basefont":
                        return headElementClosesItself(tagName);
                    case "script":
        LoboUnitTest/src/test/java/org/loboevolution/css/property/ElementClientHeightTest.java on lines 1062..1090

        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 156.

        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

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

            private static String headElementClosesItself(final String tagName) {
                return "<html><head>\n"
                        + "<" + tagName + " id='outer'><" + tagName + ">\n"
                        + "<script>\n"
                        + "function test() {\n"
        LoboUnitTest/src/test/java/org/loboevolution/css/property/ElementClientHeightTest.java on lines 1105..1116

        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 68.

        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

        Similar blocks of code found in 4 locations. Consider refactoring.
        Open

            @Test
            @Alerts("0")
            public void title() {
                final String html = "<html><head>\n"
                        + "<script>\n"
        LoboUnitTest/src/test/java/org/loboevolution/css/property/ElementClientHeightTest.java on lines 898..913
        LoboUnitTest/src/test/java/org/loboevolution/css/property/ElementOffsetWidthTest.java on lines 918..933
        LoboUnitTest/src/test/java/org/loboevolution/html/HTMLScriptElementTest.java on lines 339..355

        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 61.

        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

        Similar blocks of code found in 3 locations. Consider refactoring.
        Open

            private static String testInput(final String type) {
                return "<html><head>\n"
                        + "<script>\n"
                        + "function test() {\n"
                        + "  var e = document.getElementById('outer');\n"
        LoboUnitTest/src/test/java/org/loboevolution/css/property/ElementClientHeightTest.java on lines 1092..1103
        LoboUnitTest/src/test/java/org/loboevolution/css/property/ElementOffsetWidthTest.java on lines 1089..1100

        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 60.

        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

        Rename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.
        Open

            private static final String VALUE_ = "e == null ? e : (e.clientWidth <= 700 ? e.clientWidth :"

        Shared coding conventions allow teams to collaborate efficiently. This rule checks that all constant names match a provided regular expression.

        Noncompliant Code Example

        With the default regular expression ^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$:

        public class MyClass {
          public static final int first = 1;
        }
        
        public enum MyEnum {
          first;
        }
        

        Compliant Solution

        public class MyClass {
          public static final int FIRST = 1;
        }
        
        public enum MyEnum {
          FIRST;
        }
        

        There are no issues that match your filters.

        Category
        Status