Bloombox/Swift

View on GitHub

Showing 103 of 106 total issues

File ShopClient.swift has 357 lines of code (exceeds 250 allowed). Consider refactoring.
Open

import Foundation
import SwiftGRPC
import OpenCannabis


Severity: Minor
Found in Sources/Client/ShopClient.swift - About 4 hrs to fix

    File TelemetryClient+Commercial.swift has 303 lines of code (exceeds 250 allowed). Consider refactoring.
    Open

    import Foundation
    
    
    /// Enumerates errors that may be thrown during operations related to commercial events.
    public enum CommercialEventError: Error {
    Severity: Minor
    Found in Sources/Client/TelemetryClient+Commercial.swift - About 3 hrs to fix

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

          return try self.service(apiKey).enrollMember(EnrollMember.Request.with { builder in
            builder.early = true
            builder.preOrder = preOrder
            builder.source = source
            if let c = channel {
      Severity: Major
      Found in Sources/Client/ShopClient.swift and 1 other location - About 2 hrs to fix
      Sources/Client/ShopClient.swift on lines 542..563

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

      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

          return try self.service(apiKey).enrollMember(EnrollMember.Request.with { builder in
            builder.early = true
            builder.preOrder = preOrder
            builder.source = source
            if let c = channel {
      Severity: Major
      Found in Sources/Client/ShopClient.swift and 1 other location - About 2 hrs to fix
      Sources/Client/ShopClient.swift on lines 489..508

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

      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

      Function searchResult has 14 arguments (exceeds 4 allowed). Consider refactoring.
      Open

        public func searchResult(term: String,
                                 total: UInt32,
                                 selected: UInt32,
                                 product: ProductKey,
                                 uuid: UUID? = nil,
      Severity: Major
      Found in Sources/Client/TelemetryClient+Search.swift - About 1 hr to fix

        Function sectionAction has 11 arguments (exceeds 4 allowed). Consider refactoring.
        Open

          public func sectionAction(section: MenuSection,
                                    action: SectionActionType,
                                    uuid: UUID? = nil,
                                    activeUser: UserKey? = nil,
                                    activeOrder: OrderID? = nil,
        Severity: Major
        Found in Sources/Client/TelemetryClient+Commercial.swift - About 1 hr to fix

          Function searchQuery has 11 arguments (exceeds 4 allowed). Consider refactoring.
          Open

            public func searchQuery(term: String,
                                    total: UInt32,
                                    uuid: UUID? = nil,
                                    activeUser: UserKey? = nil,
                                    activeOrder: OrderID? = nil,
          Severity: Major
          Found in Sources/Client/TelemetryClient+Search.swift - About 1 hr to fix

            Function productAction has 11 arguments (exceeds 4 allowed). Consider refactoring.
            Open

              public func productAction(product: ProductKey,
                                        action: ProductActionType,
                                        uuid: UUID? = nil,
                                        activeUser: UserKey? = nil,
                                        activeOrder: OrderID? = nil,
            Severity: Major
            Found in Sources/Client/TelemetryClient+Commercial.swift - About 1 hr to fix

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

                  return try self.service(apiKey).getOrder(GetOrder.Request.with { builder in
                    if isLocal {
                      builder.orderNumber = id
                    } else {
                      builder.orderID = id
              Severity: Major
              Found in Sources/Client/ShopClient.swift and 1 other location - About 1 hr to fix
              Sources/Client/ShopClient.swift on lines 620..634

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

              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

                  return try self.service(apiKey).getOrder(GetOrder.Request.with { builder in
                    if isLocal {
                      builder.orderNumber = id
                    } else {
                      builder.orderID = id
              Severity: Major
              Found in Sources/Client/ShopClient.swift and 1 other location - About 1 hr to fix
              Sources/Client/ShopClient.swift on lines 585..597

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

              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

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

                public func productImpression(product: ProductKey,
                                              uuid: UUID? = nil,
                                              activeUser: UserKey? = nil,
                                              activeOrder: OrderID? = nil,
                                              partner: PartnerCode? = nil,
              Severity: Major
              Found in Sources/Client/TelemetryClient+Commercial.swift - About 1 hr to fix

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

                  public func beginEnrollment(phone: PhoneNumber,
                                              name: PersonName,
                                              source: EnrollmentSource,
                                              channel: String? = nil,
                                              preOrder: Bool = false,
                Severity: Major
                Found in Sources/Client/ShopClient.swift - About 1 hr to fix

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

                    fileprivate func resolveCommercialContext(type: CommercialEvent,
                                                              section: MenuSection? = nil,
                                                              product: ProductKey? = nil,
                                                              activeUser: UserKey? = nil,
                                                              activeOrder: OrderID? = nil,
                  Severity: Major
                  Found in Sources/Client/TelemetryClient+Commercial.swift - About 1 hr to fix

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

                      public func sectionView(section: MenuSection,
                                              uuid: UUID? = nil,
                                              activeUser: UserKey? = nil,
                                              activeOrder: OrderID? = nil,
                                              partner: PartnerCode? = nil,
                    Severity: Major
                    Found in Sources/Client/TelemetryClient+Commercial.swift - About 1 hr to fix

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

                        public func productView(product: ProductKey,
                                                uuid: UUID? = nil,
                                                activeUser: UserKey? = nil,
                                                activeOrder: OrderID? = nil,
                                                partner: PartnerCode? = nil,
                      Severity: Major
                      Found in Sources/Client/TelemetryClient+Commercial.swift - About 1 hr to fix

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

                          public func orderAction(order: Order,
                                                  action: OrderActionType,
                                                  uuid: UUID? = nil,
                                                  activeUser: UserKey? = nil,
                                                  partner: PartnerCode? = nil,
                        Severity: Major
                        Found in Sources/Client/TelemetryClient+Commercial.swift - About 1 hr to fix

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

                            public func sectionImpression(section: MenuSection,
                                                          uuid: UUID? = nil,
                                                          activeUser: UserKey? = nil,
                                                          activeOrder: OrderID? = nil,
                                                          partner: PartnerCode? = nil,
                          Severity: Major
                          Found in Sources/Client/TelemetryClient+Commercial.swift - About 1 hr to fix

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

                                return try self.service(apiKey).submitOrder(SubmitOrder.Request.with { builder in
                                  builder.order = order
                                  builder.device = deviceName
                                  builder.location = LocationKey.with { builder in
                                    builder.code = locationCode
                            Severity: Major
                            Found in Sources/Client/ShopClient.swift and 1 other location - About 1 hr to fix
                            Sources/Client/ShopClient.swift on lines 666..675

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

                            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

                                return try self.service(apiKey).submitOrder(SubmitOrder.Request.with { builder in
                                  builder.order = order
                                  builder.device = deviceName
                                  builder.location = LocationKey.with { builder in
                                    builder.code = locationCode
                            Severity: Major
                            Found in Sources/Client/ShopClient.swift and 1 other location - About 1 hr to fix
                            Sources/Client/ShopClient.swift on lines 707..718

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

                            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

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

                              public func beginEnrollment(phone: PhoneNumber,
                                                          name: PersonName,
                                                          source: EnrollmentSource,
                                                          channel: String? = nil,
                                                          preOrder: Bool = false,
                            Severity: Major
                            Found in Sources/Client/ShopClient.swift - About 1 hr to fix
                              Severity
                              Category
                              Status
                              Source
                              Language