hackedteam/core-blackberry

View on GitHub
bb-tools/proguard4.7/src/proguard/optimize/evaluation/PartialEvaluator.java

Summary

Maintainability
F
1 wk
Test Coverage

File PartialEvaluator.java has 787 lines of code (exceeds 250 allowed). Consider refactoring.
Open

/*
 * ProGuard -- shrinking, optimization, obfuscation, and preverification
 *             of Java bytecode.
 *
 * Copyright (c) 2002-2011 Eric Lafortune (eric@graphics.cornell.edu)

    Method evaluateSingleInstructionBlock has a Cognitive Complexity of 81 (exceeds 5 allowed). Consider refactoring.
    Open

        private void evaluateSingleInstructionBlock(Clazz            clazz,
                                                    Method           method,
                                                    CodeAttribute    codeAttribute,
                                                    TracedVariables  variables,
                                                    TracedStack      stack,

    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 evaluateSingleInstructionBlock has 180 lines of code (exceeds 25 allowed). Consider refactoring.
    Open

        private void evaluateSingleInstructionBlock(Clazz            clazz,
                                                    Method           method,
                                                    CodeAttribute    codeAttribute,
                                                    TracedVariables  variables,
                                                    TracedStack      stack,

      PartialEvaluator has 34 methods (exceeds 20 allowed). Consider refactoring.
      Open

      public class PartialEvaluator
      extends      SimplifiedVisitor
      implements   AttributeVisitor,
                   ExceptionInfoVisitor
      {

        Method visitCodeAttribute has a Cognitive Complexity of 29 (exceeds 5 allowed). Consider refactoring.
        Open

            public void visitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute)
            {
        //        DEBUG = DEBUG_RESULTS =
        //            clazz.getName().equals("abc/Def") &&
        //            method.getName(clazz).equals("abc");

        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 generalize has a Cognitive Complexity of 24 (exceeds 5 allowed). Consider refactoring.
        Open

            private void generalize(PartialEvaluator other,
                                    int              codeStart,
                                    int              codeEnd)
            {
                if (DEBUG) System.out.println("Generalizing with temporary partial evaluation");

        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 visitCodeAttribute0 has a Cognitive Complexity of 22 (exceeds 5 allowed). Consider refactoring.
        Open

            public void visitCodeAttribute0(Clazz clazz, Method method, CodeAttribute codeAttribute)
            {
                // Evaluate the instructions, starting at the entry point.
                if (DEBUG)
                {

        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 visitCodeAttribute0 has 56 lines of code (exceeds 25 allowed). Consider refactoring.
        Open

            public void visitCodeAttribute0(Clazz clazz, Method method, CodeAttribute codeAttribute)
            {
                // Evaluate the instructions, starting at the entry point.
                if (DEBUG)
                {

          Method initializeArrays has a Cognitive Complexity of 16 (exceeds 5 allowed). Consider refactoring.
          Open

              private void initializeArrays(CodeAttribute codeAttribute)
              {
                  int codeLength = codeAttribute.u4codeLength;
          
                  // Create new arrays for storing information at each instruction offset.

          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 visitCodeAttribute has 50 lines of code (exceeds 25 allowed). Consider refactoring.
          Open

              public void visitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute)
              {
          //        DEBUG = DEBUG_RESULTS =
          //            clazz.getName().equals("abc/Def") &&
          //            method.getName(clazz).equals("abc");

            Method visitExceptionInfo has 41 lines of code (exceeds 25 allowed). Consider refactoring.
            Open

                public void visitExceptionInfo(Clazz clazz, Method method, CodeAttribute codeAttribute, ExceptionInfo exceptionInfo)
                {
                    int startPC = exceptionInfo.u2startPC;
                    int endPC   = exceptionInfo.u2endPC;
            
            

              Method generalizeVariables has a Cognitive Complexity of 13 (exceeds 5 allowed). Consider refactoring.
              Open

                  private void generalizeVariables(int             startOffset,
                                                   int             endOffset,
                                                   boolean         includeAfterLastInstruction,
                                                   TracedVariables generalizedVariables)
                  {

              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 initializeArrays has 38 lines of code (exceeds 25 allowed). Consider refactoring.
              Open

                  private void initializeArrays(CodeAttribute codeAttribute)
                  {
                      int codeLength = codeAttribute.u4codeLength;
              
                      // Create new arrays for storing information at each instruction offset.

                Method generalizeVariables has 36 lines of code (exceeds 25 allowed). Consider refactoring.
                Open

                    private void generalizeVariables(int             startOffset,
                                                     int             endOffset,
                                                     boolean         includeAfterLastInstruction,
                                                     TracedVariables generalizedVariables)
                    {

                  Method generalize has 36 lines of code (exceeds 25 allowed). Consider refactoring.
                  Open

                      private void generalize(PartialEvaluator other,
                                              int              codeStart,
                                              int              codeEnd)
                      {
                          if (DEBUG) System.out.println("Generalizing with temporary partial evaluation");

                    Method visitExceptionInfo has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
                    Open

                        public void visitExceptionInfo(Clazz clazz, Method method, CodeAttribute codeAttribute, ExceptionInfo exceptionInfo)
                        {
                            int startPC = exceptionInfo.u2startPC;
                            int endPC   = exceptionInfo.u2endPC;
                    
                    

                    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 evaluateSubroutine has 7 arguments (exceeds 4 allowed). Consider refactoring.
                    Open

                        private void evaluateSubroutine(Clazz           clazz,
                                                        Method          method,
                                                        CodeAttribute   codeAttribute,
                                                        TracedVariables variables,
                                                        TracedStack     stack,

                      Method evaluateInstructionBlockAndExceptionHandlers has 7 arguments (exceeds 4 allowed). Consider refactoring.
                      Open

                          private void evaluateInstructionBlockAndExceptionHandlers(Clazz           clazz,
                                                                                    Method          method,
                                                                                    CodeAttribute   codeAttribute,
                                                                                    TracedVariables variables,
                                                                                    TracedStack     stack,

                        Method evaluateInstructionBlock has 6 arguments (exceeds 4 allowed). Consider refactoring.
                        Open

                            private void evaluateInstructionBlock(Clazz           clazz,
                                                                  Method          method,
                                                                  CodeAttribute   codeAttribute,
                                                                  TracedVariables variables,
                                                                  TracedStack     stack,

                          Method evaluateSingleInstructionBlock has 6 arguments (exceeds 4 allowed). Consider refactoring.
                          Open

                              private void evaluateSingleInstructionBlock(Clazz            clazz,
                                                                          Method           method,
                                                                          CodeAttribute    codeAttribute,
                                                                          TracedVariables  variables,
                                                                          TracedStack      stack,

                            Avoid deeply nested control flow statements.
                            Open

                                                    if (DEBUG) System.out.println("Pushing alternative branch #"+index+" out of "+branchTargetCount+", from ["+instructionOffset+"] to ["+branchTargets.instructionOffset(index)+"]");

                              Method evaluateExceptionHandlers has 5 arguments (exceeds 4 allowed). Consider refactoring.
                              Open

                                  private void evaluateExceptionHandlers(Clazz         clazz,
                                                                         Method        method,
                                                                         CodeAttribute codeAttribute,
                                                                         int           startOffset,
                                                                         int           endOffset)

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

                                    private void evaluateSubroutine(Clazz           clazz,
                                                                    Method          method,
                                                                    CodeAttribute   codeAttribute,
                                                                    TracedVariables variables,
                                                                    TracedStack     stack,

                                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

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

                                            do
                                            {
                                                if (isBranchOrExceptionTarget(offset))
                                                {
                                                    System.out.println("Branch target from ["+branchOriginValues[offset]+"]:");
                                bb-tools/proguard4.7/src/proguard/optimize/evaluation/PartialEvaluator.java on lines 197..233

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

                                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

                                                do
                                                {
                                                    if (isBranchOrExceptionTarget(offset))
                                                    {
                                                        System.out.println("Branch target from ["+branchOriginValues[offset]+"]:");
                                bb-tools/proguard4.7/src/proguard/optimize/evaluation/PartialEvaluator.java on lines 277..313

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

                                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

                                                if (variablesBefore[instructionOffset] == null)
                                                {
                                                    // There's not even a context at this index yet.
                                                    variablesBefore[instructionOffset] = new TracedVariables(variables);
                                                    stacksBefore[instructionOffset]    = new TracedStack(stack);
                                bb-tools/proguard4.7/src/proguard/optimize/evaluation/PartialEvaluator.java on lines 797..808

                                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

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

                                                if (variablesAfter[instructionOffset] == null)
                                                {
                                                    // There's not even a context at this index yet.
                                                    variablesAfter[instructionOffset] = new TracedVariables(variables);
                                                    stacksAfter[instructionOffset]    = new TracedStack(stack);
                                bb-tools/proguard4.7/src/proguard/optimize/evaluation/PartialEvaluator.java on lines 662..673

                                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

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

                                            if (other.branchOriginValues[offset] != null)
                                            {
                                                branchOriginValues[offset] = branchOriginValues[offset] == null ?
                                                    other.branchOriginValues[offset] :
                                                    branchOriginValues[offset].generalize(other.branchOriginValues[offset]).instructionOffsetValue();
                                bb-tools/proguard4.7/src/proguard/optimize/evaluation/PartialEvaluator.java on lines 963..968

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

                                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

                                                if (other.branchTargetValues[offset] != null)
                                                {
                                                    branchTargetValues[offset] = branchTargetValues[offset] == null ?
                                                        other.branchTargetValues[offset] :
                                                        branchTargetValues[offset].generalize(other.branchTargetValues[offset]).instructionOffsetValue();
                                bb-tools/proguard4.7/src/proguard/optimize/evaluation/PartialEvaluator.java on lines 954..959

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

                                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

                                    public boolean isTraced(int startOffset, int endOffset)
                                    {
                                        for (int index = startOffset; index < endOffset; index++)
                                        {
                                            if (isTraced(index))
                                bb-tools/proguard4.7/src/proguard/optimize/evaluation/EvaluationShrinker.java on lines 2042..2056

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

                                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