woothemes/woocommerce

View on GitHub
includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php

Summary

Maintainability
F
1 mo
Test Coverage

File class-wc-rest-products-v1-controller.php has 1966 lines of code (exceeds 250 allowed). Consider refactoring.
Open

<?php
/**
 * REST API Products controller
 *
 * Handles requests to the /products endpoint.

    Method get_item_schema has 832 lines of code (exceeds 25 allowed). Consider refactoring.
    Open

        public function get_item_schema() {
            $weight_unit    = get_option( 'woocommerce_weight_unit' );
            $dimension_unit = get_option( 'woocommerce_dimension_unit' );
            $schema         = array(
                '$schema'    => 'http://json-schema.org/draft-04/schema#',

      Function set_product_meta has a Cognitive Complexity of 110 (exceeds 5 allowed). Consider refactoring.
      Open

          protected function set_product_meta( $product, $request ) {
              // Virtual.
              if ( isset( $request['virtual'] ) ) {
                  $product->set_virtual( $request['virtual'] );
              }

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

          protected function save_variations_data( $product, $request ) {
              foreach ( $request['variations'] as $menu_order => $data ) {
                  $variation = new WC_Product_Variation( isset( $data['id'] ) ? absint( $data['id'] ) : 0 );
      
                  // Create initial name and status.

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

          protected function set_product_meta( $product, $request ) {
              // Virtual.
              if ( isset( $request['virtual'] ) ) {
                  $product->set_virtual( $request['virtual'] );
              }

        Function save_default_attributes has a Cognitive Complexity of 36 (exceeds 5 allowed). Consider refactoring.
        Open

            protected function save_default_attributes( $product, $request ) {
                if ( isset( $request['default_attributes'] ) && is_array( $request['default_attributes'] ) ) {
                    $attributes         = $product->get_attributes();
                    $default_attributes = array();
        
        

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

            protected function set_product_images( $product, $images ) {
                if ( is_array( $images ) ) {
                    $gallery = array();
        
                    foreach ( $images as $image ) {

        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

        WC_REST_Products_V1_Controller has 36 functions (exceeds 20 allowed). Consider refactoring.
        Open

        class WC_REST_Products_V1_Controller extends WC_REST_Posts_Controller {
        
            /**
             * Endpoint namespace.
             *

          Method save_variations_data has 115 lines of code (exceeds 25 allowed). Consider refactoring.
          Open

              protected function save_variations_data( $product, $request ) {
                  foreach ( $request['variations'] as $menu_order => $data ) {
                      $variation = new WC_Product_Variation( isset( $data['id'] ) ? absint( $data['id'] ) : 0 );
          
                      // Create initial name and status.

            Function delete_item has a Cognitive Complexity of 30 (exceeds 5 allowed). Consider refactoring.
            Open

                public function delete_item( $request ) {
                    $id      = (int) $request['id'];
                    $force   = (bool) $request['force'];
                    $post    = get_post( $id );
                    $product = wc_get_product( $id );

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

                protected function get_product_data( $product ) {
                    $data = array(
                        'id'                    => $product->get_id(),
                        'name'                  => $product->get_name(),
                        'slug'                  => $product->get_slug(),

              Function get_attributes has a Cognitive Complexity of 19 (exceeds 5 allowed). Consider refactoring.
              Open

                  protected function get_attributes( $product ) {
                      $attributes = array();
              
                      if ( $product->is_type( 'variation' ) ) {
                          // Variation attributes.

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

                  public function query_args( $args, $request ) {
                      // Set post_status.
                      $args['post_status'] = $request['status'];
              
                      // Taxonomy query to filter products by type, category,

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

                  public function query_args( $args, $request ) {
                      // Set post_status.
                      $args['post_status'] = $request['status'];
              
                      // Taxonomy query to filter products by type, category,

                Method register_routes has 59 lines of code (exceeds 25 allowed). Consider refactoring.
                Open

                    public function register_routes() {
                        register_rest_route( $this->namespace, '/' . $this->rest_base, array(
                            array(
                                'methods'             => WP_REST_Server::READABLE,
                                'callback'            => array( $this, 'get_items' ),

                  Method get_collection_params has 58 lines of code (exceeds 25 allowed). Consider refactoring.
                  Open

                      public function get_collection_params() {
                          $params = parent::get_collection_params();
                  
                          $params['slug'] = array(
                              'description'       => __( 'Limit result set to products with a specific slug.', 'woocommerce' ),

                    Method delete_item has 53 lines of code (exceeds 25 allowed). Consider refactoring.
                    Open

                        public function delete_item( $request ) {
                            $id      = (int) $request['id'];
                            $force   = (bool) $request['force'];
                            $post    = get_post( $id );
                            $product = wc_get_product( $id );

                      Method get_attributes has 46 lines of code (exceeds 25 allowed). Consider refactoring.
                      Open

                          protected function get_attributes( $product ) {
                              $attributes = array();
                      
                              if ( $product->is_type( 'variation' ) ) {
                                  // Variation attributes.

                        Method get_variation_data has 46 lines of code (exceeds 25 allowed). Consider refactoring.
                        Open

                            protected function get_variation_data( $product ) {
                                $variations = array();
                        
                                foreach ( $product->get_children() as $child_id ) {
                                    $variation = wc_get_product( $child_id );

                          Method set_product_images has 38 lines of code (exceeds 25 allowed). Consider refactoring.
                          Open

                              protected function set_product_images( $product, $images ) {
                                  if ( is_array( $images ) ) {
                                      $gallery = array();
                          
                                      foreach ( $images as $image ) {

                            Method get_images has 37 lines of code (exceeds 25 allowed). Consider refactoring.
                            Open

                                protected function get_images( $product ) {
                                    $images = array();
                                    $attachment_ids = array();
                            
                                    // Add featured image.

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

                                  protected function save_default_attributes( $product, $request ) {
                                      if ( isset( $request['default_attributes'] ) && is_array( $request['default_attributes'] ) ) {
                                          $attributes         = $product->get_attributes();
                                          $default_attributes = array();
                              
                              

                                Function save_product_shipping_data has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
                                Open

                                    protected function save_product_shipping_data( $product, $data ) {
                                        // Virtual.
                                        if ( isset( $data['virtual'] ) && true === $data['virtual'] ) {
                                            $product->set_weight( '' );
                                            $product->set_height( '' );

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

                                    protected function prepare_item_for_database( $request ) {
                                        $id = isset( $request['id'] ) ? absint( $request['id'] ) : 0;
                                
                                        // Type is the most important part here because we need to be using the correct class and methods.
                                        if ( isset( $request['type'] ) ) {

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

                                    protected function prepare_item_for_database( $request ) {
                                        $id = isset( $request['id'] ) ? absint( $request['id'] ) : 0;
                                
                                        // Type is the most important part here because we need to be using the correct class and methods.
                                        if ( isset( $request['type'] ) ) {

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

                                      protected function get_images( $product ) {
                                          $images = array();
                                          $attachment_ids = array();
                                  
                                          // Add featured image.

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

                                      protected function get_default_attributes( $product ) {
                                          $default = array();
                                  
                                          if ( $product->is_type( 'variable' ) ) {
                                              foreach ( array_filter( (array) $product->get_default_attributes(), 'strlen' ) as $key => $value ) {

                                  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

                                  Avoid too many return statements within this method.
                                  Open

                                                  return new WP_Error( 'woocommerce_rest_already_trashed', sprintf( __( 'The %s has already been deleted.', 'woocommerce' ), $this->post_type ), array( 'status' => 410 ) );

                                    Avoid too many return statements within this method.
                                    Open

                                                return new WP_Error( 'woocommerce_rest_cannot_delete', sprintf( __( 'The %s cannot be deleted.', 'woocommerce' ), $this->post_type ), array( 'status' => 500 ) );

                                      Avoid too many return statements within this method.
                                      Open

                                              return $response;

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

                                            protected function save_variations_data( $product, $request ) {
                                                foreach ( $request['variations'] as $menu_order => $data ) {
                                                    $variation = new WC_Product_Variation( isset( $data['id'] ) ? absint( $data['id'] ) : 0 );
                                        
                                                    // Create initial name and status.
                                        includes/legacy/api/class-wc-rest-legacy-products-controller.php on lines 525..699

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

                                        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 4 locations. Consider refactoring.
                                        Open

                                                if ( isset( $request['attributes'] ) ) {
                                                    $attributes = array();
                                        
                                                    foreach ( $request['attributes'] as $attribute ) {
                                                        $attribute_id   = 0;
                                        includes/legacy/api/class-wc-rest-legacy-products-controller.php on lines 275..338
                                        includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php on lines 987..1050
                                        includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 401..464

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

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

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

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

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

                                        Refactorings

                                        Further Reading

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

                                            public function register_routes() {
                                                register_rest_route( $this->namespace, '/' . $this->rest_base, array(
                                                    array(
                                                        'methods'             => WP_REST_Server::READABLE,
                                                        'callback'            => array( $this, 'get_items' ),
                                        includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php on lines 59..137

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

                                        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

                                            protected function save_default_attributes( $product, $request ) {
                                                if ( isset( $request['default_attributes'] ) && is_array( $request['default_attributes'] ) ) {
                                                    $attributes         = $product->get_attributes();
                                                    $default_attributes = array();
                                        
                                        
                                        includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php on lines 1449..1499

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

                                        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 4 locations. Consider refactoring.
                                        Open

                                                if ( 'yes' === get_option( 'woocommerce_manage_stock' ) ) {
                                                    // Manage stock.
                                                    if ( isset( $request['manage_stock'] ) ) {
                                                        $product->set_manage_stock( $request['manage_stock'] );
                                                    }
                                        includes/legacy/api/class-wc-rest-legacy-products-controller.php on lines 385..428
                                        includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php on lines 1105..1148
                                        includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 519..562

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

                                        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

                                                                'properties' => array(
                                                                    'id' => array(
                                                                        'description' => __( 'Image ID.', 'woocommerce' ),
                                                                        'type'        => 'integer',
                                                                        'context'     => array( 'view', 'edit' ),
                                        includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 2485..2524

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

                                        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

                                                                        'properties'  => array(
                                                                            'id' => array(
                                                                                'description' => __( 'Image ID.', 'woocommerce' ),
                                                                                'type'        => 'integer',
                                                                                'context'     => array( 'view', 'edit' ),
                                        includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 2153..2192

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

                                        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

                                            protected function save_product_shipping_data( $product, $data ) {
                                                // Virtual.
                                                if ( isset( $data['virtual'] ) && true === $data['virtual'] ) {
                                                    $product->set_weight( '' );
                                                    $product->set_height( '' );
                                        includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php on lines 1350..1386

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

                                        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

                                            protected function save_downloadable_files( $product, $downloads, $deprecated = 0 ) {
                                                if ( $deprecated ) {
                                                    wc_deprecated_argument( 'variation_id', '3.0', 'save_downloadable_files() not requires a variation_id anymore.' );
                                                }
                                        
                                        
                                        includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php on lines 1397..1417

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

                                        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 6 locations. Consider refactoring.
                                        Open

                                                        'dimensions' => array(
                                                            'description' => __( 'Product dimensions.', 'woocommerce' ),
                                                            'type'        => 'object',
                                                            'context'     => array( 'view', 'edit' ),
                                                            'properties'  => array(
                                        includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 2445..2469
                                        includes/rest-api/Controllers/Version2/class-wc-rest-product-variations-v2-controller.php on lines 842..866
                                        includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php on lines 1933..1957
                                        includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php on lines 606..630
                                        includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 1000..1024

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

                                        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 6 locations. Consider refactoring.
                                        Open

                                                                    'dimensions' => array(
                                                                        'description' => __( 'Variation dimensions.', 'woocommerce' ),
                                                                        'type'        => 'object',
                                                                        'context'     => array( 'view', 'edit' ),
                                                                        'properties'  => array(
                                        includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 1992..2016
                                        includes/rest-api/Controllers/Version2/class-wc-rest-product-variations-v2-controller.php on lines 842..866
                                        includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php on lines 1933..1957
                                        includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php on lines 606..630
                                        includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 1000..1024

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

                                        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 6 locations. Consider refactoring.
                                        Open

                                                        'categories' => array(
                                                            'description' => __( 'List of categories.', 'woocommerce' ),
                                                            'type'        => 'array',
                                                            'context'     => array( 'view', 'edit' ),
                                                            'items'       => array(
                                        includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 2120..2146
                                        includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php on lines 2034..2060
                                        includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php on lines 2061..2087
                                        includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 1101..1127
                                        includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 1128..1154

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

                                        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 6 locations. Consider refactoring.
                                        Open

                                                        'tags' => array(
                                                            'description' => __( 'List of tags.', 'woocommerce' ),
                                                            'type'        => 'array',
                                                            'context'     => array( 'view', 'edit' ),
                                                            'items'       => array(
                                        includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 2093..2119
                                        includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php on lines 2034..2060
                                        includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php on lines 2061..2087
                                        includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 1101..1127
                                        includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 1128..1154

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

                                        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 ( in_array( $product->get_type(), array( 'variable', 'grouped' ), true ) ) {
                                                    $product->set_regular_price( '' );
                                                    $product->set_sale_price( '' );
                                                    $product->set_date_on_sale_to( '' );
                                                    $product->set_date_on_sale_from( '' );
                                        includes/legacy/api/class-wc-rest-legacy-products-controller.php on lines 341..365

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

                                        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 12 locations. Consider refactoring.
                                        Open

                                                                    'downloads' => array(
                                                                        'description' => __( 'List of downloadable files.', 'woocommerce' ),
                                                                        'type'        => 'array',
                                                                        'context'     => array( 'view', 'edit' ),
                                                                        'items'       => array(
                                        includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 1877..1901
                                        includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 2237..2261
                                        includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 2526..2550
                                        includes/rest-api/Controllers/Version2/class-wc-rest-product-variations-v2-controller.php on lines 751..775
                                        includes/rest-api/Controllers/Version2/class-wc-rest-product-variations-v2-controller.php on lines 935..959
                                        includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php on lines 1825..1849
                                        includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php on lines 2193..2217
                                        includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php on lines 514..538
                                        includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php on lines 694..718
                                        includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 891..915
                                        includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 1255..1279

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

                                        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 12 locations. Consider refactoring.
                                        Open

                                                                    'attributes' => array(
                                                                        'description' => __( 'List of attributes.', 'woocommerce' ),
                                                                        'type'        => 'array',
                                                                        'context'     => array( 'view', 'edit' ),
                                                                        'items'       => array(
                                        includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 1877..1901
                                        includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 2237..2261
                                        includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 2354..2378
                                        includes/rest-api/Controllers/Version2/class-wc-rest-product-variations-v2-controller.php on lines 751..775
                                        includes/rest-api/Controllers/Version2/class-wc-rest-product-variations-v2-controller.php on lines 935..959
                                        includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php on lines 1825..1849
                                        includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php on lines 2193..2217
                                        includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php on lines 514..538
                                        includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php on lines 694..718
                                        includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 891..915
                                        includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 1255..1279

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

                                        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 12 locations. Consider refactoring.
                                        Open

                                                        'default_attributes' => array(
                                                            'description' => __( 'Defaults variation attributes.', 'woocommerce' ),
                                                            'type'        => 'array',
                                                            'context'     => array( 'view', 'edit' ),
                                                            'items'       => array(
                                        includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 1877..1901
                                        includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 2354..2378
                                        includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 2526..2550
                                        includes/rest-api/Controllers/Version2/class-wc-rest-product-variations-v2-controller.php on lines 751..775
                                        includes/rest-api/Controllers/Version2/class-wc-rest-product-variations-v2-controller.php on lines 935..959
                                        includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php on lines 1825..1849
                                        includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php on lines 2193..2217
                                        includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php on lines 514..538
                                        includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php on lines 694..718
                                        includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 891..915
                                        includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 1255..1279

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

                                        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 12 locations. Consider refactoring.
                                        Open

                                                        'downloads' => array(
                                                            'description' => __( 'List of downloadable files.', 'woocommerce' ),
                                                            'type'        => 'array',
                                                            'context'     => array( 'view', 'edit' ),
                                                            'items'       => array(
                                        includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 2237..2261
                                        includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 2354..2378
                                        includes/rest-api/Controllers/Version1/class-wc-rest-products-v1-controller.php on lines 2526..2550
                                        includes/rest-api/Controllers/Version2/class-wc-rest-product-variations-v2-controller.php on lines 751..775
                                        includes/rest-api/Controllers/Version2/class-wc-rest-product-variations-v2-controller.php on lines 935..959
                                        includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php on lines 1825..1849
                                        includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php on lines 2193..2217
                                        includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php on lines 514..538
                                        includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php on lines 694..718
                                        includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 891..915
                                        includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 1255..1279

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

                                        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

                                            protected function update_post_meta_fields( $post, $request ) {
                                                $product = wc_get_product( $post );
                                        
                                                // Check for featured/gallery images, upload it and set it.
                                                if ( isset( $request['images'] ) ) {
                                        includes/legacy/api/class-wc-rest-legacy-products-controller.php on lines 721..747

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

                                        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

                                            protected function prepare_links( $product, $request ) {
                                                $links = array(
                                                    'self' => array(
                                                        'href' => rest_url( sprintf( '/%s/%s/%d', $this->namespace, $this->rest_base, $product->get_id() ) ),
                                                    ),
                                        includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php on lines 858..875

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

                                        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

                                                if ( ! empty( $post->post_type ) && 'product_variation' === $post->post_type && 'product' === $this->post_type ) {
                                                    return new WP_Error( "woocommerce_rest_invalid_{$this->post_type}_id", __( 'To manipulate product variations you should use the /products/&lt;product_id&gt;/variations/&lt;id&gt; endpoint.', 'woocommerce' ), array( 'status' => 404 ) );
                                                } elseif ( empty( $id ) || empty( $post->ID ) || $post->post_type !== $this->post_type ) {
                                                    return new WP_Error( "woocommerce_rest_{$this->post_type}_invalid_id", __( 'Invalid post ID.', 'woocommerce' ), array( 'status' => 404 ) );
                                                }
                                        includes/rest-api/Controllers/Version3/class-wc-rest-posts-controller.php on lines 150..154
                                        includes/rest-api/Controllers/Version3/class-wc-rest-posts-controller.php on lines 257..261

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

                                        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

                                            protected function delete_post( $id ) {
                                                if ( ! empty( $id->ID ) ) {
                                                    $id = $id->ID;
                                                } elseif ( ! is_numeric( $id ) || 0 >= $id ) {
                                                    return;
                                        includes/legacy/api/class-wc-rest-legacy-products-controller.php on lines 756..777

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

                                        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 3 locations. Consider refactoring.
                                        Open

                                                        if ( 0 === $attachment_id && isset( $image['src'] ) ) {
                                                            $upload = wc_rest_upload_image_from_url( esc_url_raw( $image['src'] ) );
                                        
                                                            if ( is_wp_error( $upload ) ) {
                                                                if ( ! apply_filters( 'woocommerce_rest_suppress_image_upload_error', false, $upload, $product->get_id(), $images ) ) {
                                        includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php on lines 1280..1292
                                        includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 240..252

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

                                        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 3 locations. Consider refactoring.
                                        Open

                                                if ( isset( $request['type'] ) ) {
                                                    $classname = WC_Product_Factory::get_classname_from_product_type( $request['type'] );
                                        
                                                    if ( ! class_exists( $classname ) ) {
                                                        $classname = 'WC_Product_Simple';
                                        includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php on lines 889..901
                                        includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 303..315

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

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

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

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

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

                                        Refactorings

                                        Further Reading

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

                                                if ( ! empty( $request['sku'] ) ) {
                                                    $skus = explode( ',', $request['sku'] );
                                                    // Include the current string as a SKU too.
                                                    if ( 1 < count( $skus ) ) {
                                                        $skus[] = $request['sku'];
                                        includes/legacy/api/class-wc-rest-legacy-products-controller.php on lines 102..114
                                        includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php on lines 264..279
                                        includes/rest-api/Controllers/Version3/class-wc-rest-product-variations-controller.php on lines 769..784
                                        includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php on lines 148..163

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

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

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

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

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

                                        Refactorings

                                        Further Reading

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

                                            protected function get_attribute_options( $product_id, $attribute ) {
                                                if ( isset( $attribute['is_taxonomy'] ) && $attribute['is_taxonomy'] ) {
                                                    return wc_get_product_terms( $product_id, $attribute['name'], array( 'fields' => 'names' ) );
                                                } elseif ( isset( $attribute['value'] ) ) {
                                                    return array_map( 'trim', explode( '|', $attribute['value'] ) );
                                        includes/legacy/api/v1/class-wc-api-products.php on lines 475..483
                                        includes/legacy/api/v2/class-wc-api-products.php on lines 1752..1760
                                        includes/legacy/api/v3/class-wc-api-products.php on lines 2305..2313
                                        includes/rest-api/Controllers/Version2/class-wc-rest-products-v2-controller.php on lines 526..540

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

                                        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