docker/docker

View on GitHub
libnetwork/drivers/overlay/overlay.pb.go

Summary

Maintainability
F
6 days
Test Coverage

Method PeerRecord.Unmarshal has a Cognitive Complexity of 110 (exceeds 20 allowed). Consider refactoring.
Open

func (m *PeerRecord) Unmarshal(dAtA []byte) error {
    l := len(dAtA)
    iNdEx := 0
    for iNdEx < l {
        preIndex := iNdEx
Severity: Minor
Found in libnetwork/drivers/overlay/overlay.pb.go - About 1 day to fix

Cognitive Complexity

Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

A method's cognitive complexity is based on a few simple rules:

  • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
  • Code is considered more complex for each "break in the linear flow of the code"
  • Code is considered more complex when "flow breaking structures are nested"

Further reading

Function skipOverlay has a Cognitive Complexity of 54 (exceeds 20 allowed). Consider refactoring.
Open

func skipOverlay(dAtA []byte) (n int, err error) {
    l := len(dAtA)
    iNdEx := 0
    depth := 0
    for iNdEx < l {
Severity: Minor
Found in libnetwork/drivers/overlay/overlay.pb.go - About 5 hrs to fix

Cognitive Complexity

Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

A method's cognitive complexity is based on a few simple rules:

  • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
  • Code is considered more complex for each "break in the linear flow of the code"
  • Code is considered more complex when "flow breaking structures are nested"

Further reading

Method PeerRecord.Unmarshal has 143 lines of code (exceeds 50 allowed). Consider refactoring.
Open

func (m *PeerRecord) Unmarshal(dAtA []byte) error {
    l := len(dAtA)
    iNdEx := 0
    for iNdEx < l {
        preIndex := iNdEx
Severity: Major
Found in libnetwork/drivers/overlay/overlay.pb.go - About 4 hrs to fix

    Method PeerRecord.Unmarshal has 27 return statements (exceeds 4 allowed).
    Open

    func (m *PeerRecord) Unmarshal(dAtA []byte) error {
        l := len(dAtA)
        iNdEx := 0
        for iNdEx < l {
            preIndex := iNdEx
    Severity: Major
    Found in libnetwork/drivers/overlay/overlay.pb.go - About 2 hrs to fix

      Function skipOverlay has 76 lines of code (exceeds 50 allowed). Consider refactoring.
      Open

      func skipOverlay(dAtA []byte) (n int, err error) {
          l := len(dAtA)
          iNdEx := 0
          depth := 0
          for iNdEx < l {
      Severity: Major
      Found in libnetwork/drivers/overlay/overlay.pb.go - About 2 hrs to fix

        Function skipOverlay has 11 return statements (exceeds 4 allowed).
        Open

        func skipOverlay(dAtA []byte) (n int, err error) {
            l := len(dAtA)
            iNdEx := 0
            depth := 0
            for iNdEx < l {
        Severity: Major
        Found in libnetwork/drivers/overlay/overlay.pb.go - About 1 hr to fix

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

          func skipOverlay(dAtA []byte) (n int, err error) {
              l := len(dAtA)
              iNdEx := 0
              depth := 0
              for iNdEx < l {
          Severity: Major
          Found in libnetwork/drivers/overlay/overlay.pb.go and 4 other locations - About 6 hrs to fix
          api/types/plugins/logdriver/entry.pb.go on lines 672..749
          api/types/swarm/runtime/plugin.pb.go on lines 725..802
          libnetwork/agent.pb.go on lines 1085..1162
          libnetwork/networkdb/networkdb.pb.go on lines 3008..3085

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

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

                  case 3:
                      if wireType != 2 {
                          return fmt.Errorf("proto: wrong wireType = %d for field TunnelEndpointIP", wireType)
                      }
                      var stringLen uint64
          Severity: Major
          Found in libnetwork/drivers/overlay/overlay.pb.go and 25 other locations - About 2 hrs to fix
          api/types/plugins/logdriver/entry.pb.go on lines 389..420
          api/types/plugins/logdriver/entry.pb.go on lines 600..631
          api/types/swarm/runtime/plugin.pb.go on lines 408..439
          api/types/swarm/runtime/plugin.pb.go on lines 440..471
          api/types/swarm/runtime/plugin.pb.go on lines 608..639
          api/types/swarm/runtime/plugin.pb.go on lines 640..671
          libnetwork/agent.pb.go on lines 647..678
          libnetwork/agent.pb.go on lines 679..710
          libnetwork/agent.pb.go on lines 711..742
          libnetwork/agent.pb.go on lines 743..774
          libnetwork/agent.pb.go on lines 775..806
          libnetwork/agent.pb.go on lines 975..1006
          libnetwork/drivers/overlay/overlay.pb.go on lines 272..303
          libnetwork/drivers/overlay/overlay.pb.go on lines 304..335
          libnetwork/networkdb/networkdb.pb.go on lines 1891..1922
          libnetwork/networkdb/networkdb.pb.go on lines 2011..2042
          libnetwork/networkdb/networkdb.pb.go on lines 2043..2074
          libnetwork/networkdb/networkdb.pb.go on lines 2125..2156
          libnetwork/networkdb/networkdb.pb.go on lines 2176..2207
          libnetwork/networkdb/networkdb.pb.go on lines 2331..2362
          libnetwork/networkdb/networkdb.pb.go on lines 2451..2482
          libnetwork/networkdb/networkdb.pb.go on lines 2483..2514
          libnetwork/networkdb/networkdb.pb.go on lines 2515..2546
          libnetwork/networkdb/networkdb.pb.go on lines 2547..2578
          libnetwork/networkdb/networkdb.pb.go on lines 2721..2752

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

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

                  case 2:
                      if wireType != 2 {
                          return fmt.Errorf("proto: wrong wireType = %d for field EndpointMAC", wireType)
                      }
                      var stringLen uint64
          Severity: Major
          Found in libnetwork/drivers/overlay/overlay.pb.go and 25 other locations - About 2 hrs to fix
          api/types/plugins/logdriver/entry.pb.go on lines 389..420
          api/types/plugins/logdriver/entry.pb.go on lines 600..631
          api/types/swarm/runtime/plugin.pb.go on lines 408..439
          api/types/swarm/runtime/plugin.pb.go on lines 440..471
          api/types/swarm/runtime/plugin.pb.go on lines 608..639
          api/types/swarm/runtime/plugin.pb.go on lines 640..671
          libnetwork/agent.pb.go on lines 647..678
          libnetwork/agent.pb.go on lines 679..710
          libnetwork/agent.pb.go on lines 711..742
          libnetwork/agent.pb.go on lines 743..774
          libnetwork/agent.pb.go on lines 775..806
          libnetwork/agent.pb.go on lines 975..1006
          libnetwork/drivers/overlay/overlay.pb.go on lines 272..303
          libnetwork/drivers/overlay/overlay.pb.go on lines 336..367
          libnetwork/networkdb/networkdb.pb.go on lines 1891..1922
          libnetwork/networkdb/networkdb.pb.go on lines 2011..2042
          libnetwork/networkdb/networkdb.pb.go on lines 2043..2074
          libnetwork/networkdb/networkdb.pb.go on lines 2125..2156
          libnetwork/networkdb/networkdb.pb.go on lines 2176..2207
          libnetwork/networkdb/networkdb.pb.go on lines 2331..2362
          libnetwork/networkdb/networkdb.pb.go on lines 2451..2482
          libnetwork/networkdb/networkdb.pb.go on lines 2483..2514
          libnetwork/networkdb/networkdb.pb.go on lines 2515..2546
          libnetwork/networkdb/networkdb.pb.go on lines 2547..2578
          libnetwork/networkdb/networkdb.pb.go on lines 2721..2752

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

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

                  case 1:
                      if wireType != 2 {
                          return fmt.Errorf("proto: wrong wireType = %d for field EndpointIP", wireType)
                      }
                      var stringLen uint64
          Severity: Major
          Found in libnetwork/drivers/overlay/overlay.pb.go and 25 other locations - About 2 hrs to fix
          api/types/plugins/logdriver/entry.pb.go on lines 389..420
          api/types/plugins/logdriver/entry.pb.go on lines 600..631
          api/types/swarm/runtime/plugin.pb.go on lines 408..439
          api/types/swarm/runtime/plugin.pb.go on lines 440..471
          api/types/swarm/runtime/plugin.pb.go on lines 608..639
          api/types/swarm/runtime/plugin.pb.go on lines 640..671
          libnetwork/agent.pb.go on lines 647..678
          libnetwork/agent.pb.go on lines 679..710
          libnetwork/agent.pb.go on lines 711..742
          libnetwork/agent.pb.go on lines 743..774
          libnetwork/agent.pb.go on lines 775..806
          libnetwork/agent.pb.go on lines 975..1006
          libnetwork/drivers/overlay/overlay.pb.go on lines 304..335
          libnetwork/drivers/overlay/overlay.pb.go on lines 336..367
          libnetwork/networkdb/networkdb.pb.go on lines 1891..1922
          libnetwork/networkdb/networkdb.pb.go on lines 2011..2042
          libnetwork/networkdb/networkdb.pb.go on lines 2043..2074
          libnetwork/networkdb/networkdb.pb.go on lines 2125..2156
          libnetwork/networkdb/networkdb.pb.go on lines 2176..2207
          libnetwork/networkdb/networkdb.pb.go on lines 2331..2362
          libnetwork/networkdb/networkdb.pb.go on lines 2451..2482
          libnetwork/networkdb/networkdb.pb.go on lines 2483..2514
          libnetwork/networkdb/networkdb.pb.go on lines 2515..2546
          libnetwork/networkdb/networkdb.pb.go on lines 2547..2578
          libnetwork/networkdb/networkdb.pb.go on lines 2721..2752

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

          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

          func (this *PeerRecord) GoString() string {
              if this == nil {
                  return "nil"
              }
              s := make([]string, 0, 7)
          Severity: Major
          Found in libnetwork/drivers/overlay/overlay.pb.go and 2 other locations - About 1 hr to fix
          libnetwork/drivers/windows/overlay/overlay.pb.go on lines 79..90
          libnetwork/networkdb/networkdb.pb.go on lines 839..850

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

          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

          func (this *PeerRecord) String() string {
              if this == nil {
                  return "nil"
              }
              s := strings.Join([]string{`&PeerRecord{`,
          Severity: Major
          Found in libnetwork/drivers/overlay/overlay.pb.go and 2 other locations - About 1 hr to fix
          libnetwork/drivers/windows/overlay/overlay.pb.go on lines 175..186
          libnetwork/networkdb/networkdb.pb.go on lines 1602..1613

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

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

          func (m *PeerRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
              if deterministic {
                  return xxx_messageInfo_PeerRecord.Marshal(b, m, deterministic)
              } else {
                  b = b[:cap(b)]
          Severity: Major
          Found in libnetwork/drivers/overlay/overlay.pb.go and 15 other locations - About 45 mins to fix
          api/types/plugins/logdriver/entry.pb.go on lines 42..53
          api/types/plugins/logdriver/entry.pb.go on lines 116..127
          api/types/swarm/runtime/plugin.pb.go on lines 44..55
          api/types/swarm/runtime/plugin.pb.go on lines 120..131
          libnetwork/agent.pb.go on lines 87..98
          libnetwork/agent.pb.go on lines 204..215
          libnetwork/networkdb/networkdb.pb.go on lines 197..208
          libnetwork/networkdb/networkdb.pb.go on lines 254..265
          libnetwork/networkdb/networkdb.pb.go on lines 313..324
          libnetwork/networkdb/networkdb.pb.go on lines 379..390
          libnetwork/networkdb/networkdb.pb.go on lines 441..452
          libnetwork/networkdb/networkdb.pb.go on lines 506..517
          libnetwork/networkdb/networkdb.pb.go on lines 603..614
          libnetwork/networkdb/networkdb.pb.go on lines 669..680
          libnetwork/networkdb/networkdb.pb.go on lines 714..725

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

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

          func encodeVarintOverlay(dAtA []byte, offset int, v uint64) int {
              offset -= sovOverlay(v)
              base := offset
              for v >= 1<<7 {
                  dAtA[offset] = uint8(v&0x7f | 0x80)
          Severity: Major
          Found in libnetwork/drivers/overlay/overlay.pb.go and 4 other locations - About 35 mins to fix
          api/types/plugins/logdriver/entry.pb.go on lines 297..307
          api/types/swarm/runtime/plugin.pb.go on lines 307..317
          libnetwork/agent.pb.go on lines 485..495
          libnetwork/networkdb/networkdb.pb.go on lines 1376..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 107.

          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