biter777/countries

View on GitHub
currencies.go

Summary

Maintainability
F
4 days
Test Coverage

File currencies.go has 1973 lines of code (exceeds 500 allowed). Consider refactoring.
Invalid

package countries

import (
    "encoding/json"
    "fmt"
Severity: Major
Found in currencies.go - About 4 days to fix

    Function CurrencyCodeByName has 345 lines of code (exceeds 50 allowed). Consider refactoring.
    Invalid

    func CurrencyCodeByName(name string) CurrencyCode { //nolint:gocyclo
        switch textPrepare(name) {
        case "AFN", "AFGHANI", "AFHANI":
            return CurrencyAFN
        case "ALL", "LEK":
    Severity: Major
    Found in currencies.go - About 1 day to fix

      Method CurrencyCode.String has 343 lines of code (exceeds 50 allowed). Consider refactoring.
      Invalid

      func (c CurrencyCode) String() string { //nolint:gocyclo
          switch c {
          case 840:
              return "US Dollar"
          case 978:
      Severity: Major
      Found in currencies.go - About 1 day to fix

        Method CurrencyCode.Alpha has 343 lines of code (exceeds 50 allowed). Consider refactoring.
        Invalid

        func (c CurrencyCode) Alpha() string { //nolint:gocyclo
            switch c {
            case 840:
                return "USD"
            case 978:
        Severity: Major
        Found in currencies.go - About 1 day to fix

          Method CurrencyCode.Digits has 341 lines of code (exceeds 50 allowed). Consider refactoring.
          Invalid

          func (c CurrencyCode) Digits() int { //nolint:gocyclo
              switch c {
              case CurrencyAFN:
                  return 0
              case CurrencyALL:
          Severity: Major
          Found in currencies.go - About 1 day to fix

            Method CurrencyCode.Countries has 337 lines of code (exceeds 50 allowed). Consider refactoring.
            Invalid

            func (c CurrencyCode) Countries() []CountryCode { //nolint:gocyclo
                switch c {
                case CurrencyAFN:
                    return []CountryCode{AFG}
                case CurrencyDZD:
            Severity: Major
            Found in currencies.go - About 1 day to fix

              Function AllCurrencies has 171 lines of code (exceeds 50 allowed). Consider refactoring.
              Invalid

              func AllCurrencies() []CurrencyCode {
                  return []CurrencyCode{
                      CurrencyAFN,
                      CurrencyALL,
                      CurrencyDZD,
              Severity: Major
              Found in currencies.go - About 5 hrs to fix

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

                func (c CurrencyCode) String() string { //nolint:gocyclo
                    switch c {
                    case 840:
                        return "US Dollar"
                    case 978:
                Severity: Major
                Found in currencies.go and 1 other location - About 2 days to fix
                currencies.go on lines 398..742

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

                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

                func (c CurrencyCode) Alpha() string { //nolint:gocyclo
                    switch c {
                    case 840:
                        return "USD"
                    case 978:
                Severity: Major
                Found in currencies.go and 1 other location - About 2 days to fix
                currencies.go on lines 49..393

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

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

                func (currency *Currency) Scan(src interface{}) error {
                    if currency == nil {
                        return fmt.Errorf("countries::Scan: Currency scan err: currency == nil")
                    }
                    switch src := src.(type) {
                Severity: Major
                Found in currencies.go and 5 other locations - About 45 mins to fix
                callcodes.go on lines 847..860
                capitals.go on lines 1072..1085
                countries.go on lines 5451..5464
                domains.go on lines 103..116
                regions.go on lines 97..110

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

                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