tensorflow/models

View on GitHub
research/deeplab/core/resnet_v1_beta.py

Summary

Maintainability
F
1 wk
Test Coverage

File resnet_v1_beta.py has 714 lines of code (exceeds 250 allowed). Consider refactoring.
Open

# Lint as: python2, python3
# Copyright 2018 The TensorFlow Authors All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Severity: Major
Found in research/deeplab/core/resnet_v1_beta.py - About 1 day to fix

    Function resnet_v1_beta has 10 arguments (exceeds 4 allowed). Consider refactoring.
    Open

    def resnet_v1_beta(inputs,
    Severity: Major
    Found in research/deeplab/core/resnet_v1_beta.py - About 1 hr to fix

      Function resnet_v1_18_beta has 10 arguments (exceeds 4 allowed). Consider refactoring.
      Open

      def resnet_v1_18_beta(inputs,
      Severity: Major
      Found in research/deeplab/core/resnet_v1_beta.py - About 1 hr to fix

        Function resnet_arg_scope has 9 arguments (exceeds 4 allowed). Consider refactoring.
        Open

        def resnet_arg_scope(weight_decay=0.0001,
        Severity: Major
        Found in research/deeplab/core/resnet_v1_beta.py - About 1 hr to fix

          Function resnet_v1_50_beta has 9 arguments (exceeds 4 allowed). Consider refactoring.
          Open

          def resnet_v1_50_beta(inputs,
          Severity: Major
          Found in research/deeplab/core/resnet_v1_beta.py - About 1 hr to fix

            Function resnet_v1_101 has 9 arguments (exceeds 4 allowed). Consider refactoring.
            Open

            def resnet_v1_101(inputs,
            Severity: Major
            Found in research/deeplab/core/resnet_v1_beta.py - About 1 hr to fix

              Function resnet_v1_18 has 9 arguments (exceeds 4 allowed). Consider refactoring.
              Open

              def resnet_v1_18(inputs,
              Severity: Major
              Found in research/deeplab/core/resnet_v1_beta.py - About 1 hr to fix

                Function resnet_v1_101_beta has 9 arguments (exceeds 4 allowed). Consider refactoring.
                Open

                def resnet_v1_101_beta(inputs,
                Severity: Major
                Found in research/deeplab/core/resnet_v1_beta.py - About 1 hr to fix

                  Function resnet_v1_50 has 9 arguments (exceeds 4 allowed). Consider refactoring.
                  Open

                  def resnet_v1_50(inputs,
                  Severity: Major
                  Found in research/deeplab/core/resnet_v1_beta.py - About 1 hr to fix

                    Function bottleneck has 8 arguments (exceeds 4 allowed). Consider refactoring.
                    Open

                    def bottleneck(inputs,
                    Severity: Major
                    Found in research/deeplab/core/resnet_v1_beta.py - About 1 hr to fix

                      Function resnet_v1_beta has a Cognitive Complexity of 9 (exceeds 5 allowed). Consider refactoring.
                      Open

                      def resnet_v1_beta(inputs,
                                         blocks,
                                         num_classes=None,
                                         is_training=None,
                                         global_pool=True,
                      Severity: Minor
                      Found in research/deeplab/core/resnet_v1_beta.py - About 55 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

                      Function lite_bottleneck has 7 arguments (exceeds 4 allowed). Consider refactoring.
                      Open

                      def lite_bottleneck(inputs,
                      Severity: Major
                      Found in research/deeplab/core/resnet_v1_beta.py - About 50 mins to fix

                        Avoid deeply nested control flow statements.
                        Open

                                  if output_stride % 4 != 0:
                                    raise ValueError('The output_stride needs to be a multiple of 4.')
                                  output_stride //= 4
                        Severity: Major
                        Found in research/deeplab/core/resnet_v1_beta.py - About 45 mins to fix

                          Function resnet_arg_scope has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
                          Open

                          def resnet_arg_scope(weight_decay=0.0001,
                                               batch_norm_decay=0.997,
                                               batch_norm_epsilon=1e-5,
                                               batch_norm_scale=True,
                                               activation_fn=tf.nn.relu,
                          Severity: Minor
                          Found in research/deeplab/core/resnet_v1_beta.py - 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

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

                          def resnet_v1_50_beta(inputs,
                                                num_classes=None,
                                                is_training=None,
                                                global_pool=False,
                                                output_stride=None,
                          Severity: Major
                          Found in research/deeplab/core/resnet_v1_beta.py and 1 other location - About 1 day to fix
                          research/deeplab/core/resnet_v1_beta.py on lines 691..760

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

                          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

                          def resnet_v1_101_beta(inputs,
                                                 num_classes=None,
                                                 is_training=None,
                                                 global_pool=False,
                                                 output_stride=None,
                          Severity: Major
                          Found in research/deeplab/core/resnet_v1_beta.py and 1 other location - About 1 day to fix
                          research/deeplab/core/resnet_v1_beta.py on lines 546..615

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

                          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

                          def resnet_v1_101(inputs,
                                            num_classes=None,
                                            is_training=None,
                                            global_pool=False,
                                            output_stride=None,
                          Severity: Major
                          Found in research/deeplab/core/resnet_v1_beta.py and 1 other location - About 1 day to fix
                          research/deeplab/core/resnet_v1_beta.py on lines 476..534

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

                          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

                          def resnet_v1_50(inputs,
                                           num_classes=None,
                                           is_training=None,
                                           global_pool=False,
                                           output_stride=None,
                          Severity: Major
                          Found in research/deeplab/core/resnet_v1_beta.py and 1 other location - About 1 day to fix
                          research/deeplab/core/resnet_v1_beta.py on lines 621..679

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

                          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

                            blocks = [
                                resnet_v1_small_beta_block(
                                    'block1', base_depth=64, num_units=2, stride=2),
                                resnet_v1_small_beta_block(
                                    'block2', base_depth=128, num_units=2, stride=2),
                          Severity: Major
                          Found in research/deeplab/core/resnet_v1_beta.py and 1 other location - About 2 hrs to fix
                          research/deeplab/core/resnet_v1_beta.py on lines 374..381

                          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

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

                            blocks = [
                                resnet_v1_small_beta_block(
                                    'block1', base_depth=64, num_units=2, stride=2),
                                resnet_v1_small_beta_block(
                                    'block2', base_depth=128, num_units=2, stride=2),
                          Severity: Major
                          Found in research/deeplab/core/resnet_v1_beta.py and 1 other location - About 2 hrs to fix
                          research/deeplab/core/resnet_v1_beta.py on lines 453..460

                          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

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

                              if depth == depth_in:
                                shortcut = resnet_utils.subsample(inputs, stride, 'shortcut')
                              else:
                                shortcut = conv2d_ws.conv2d(
                                    inputs,
                          Severity: Major
                          Found in research/deeplab/core/resnet_v1_beta.py and 1 other location - About 2 hrs to fix
                          research/deeplab/core/resnet_v1_beta.py on lines 133..138

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

                          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 depth == depth_in:
                                shortcut = resnet_utils.subsample(inputs, stride, 'shortcut')
                              else:
                                shortcut = conv2d_ws.conv2d(
                                    inputs,
                          Severity: Major
                          Found in research/deeplab/core/resnet_v1_beta.py and 1 other location - About 2 hrs to fix
                          research/deeplab/core/resnet_v1_beta.py on lines 78..84

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

                          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

                                  if output_stride is not None:
                                    if output_stride % 4 != 0:
                                      raise ValueError('The output_stride needs to be a multiple of 4.')
                                    output_stride //= 4
                          Severity: Major
                          Found in research/deeplab/core/resnet_v1_beta.py and 1 other location - About 1 hr to fix
                          research/deeplab/core/xception.py on lines 480..483

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

                          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