pkg/build/stage/full_dockerfile.go

Summary

Maintainability
F
5 days
Test Coverage
D
63%

Method FullDockerfileStage.dockerfileInstructionDependencies has a Cognitive Complexity of 64 (exceeds 20 allowed). Consider refactoring.
Open

func (s *FullDockerfileStage) dockerfileInstructionDependencies(ctx context.Context, giterminismManager giterminism_manager.Interface, resolvedDockerMetaArgsHash, resolvedDependenciesArgsHash map[string]string, dockerStageID int, cmd interface{}, isOnbuildInstruction, isBaseImageOnbuildInstruction bool) ([]string, []string, error) {
    var dependencies []string
    var onBuildDependencies []string

    resolveValueFunc := func(value string) (string, error) {
Severity: Minor
Found in pkg/build/stage/full_dockerfile.go - About 7 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

File full_dockerfile.go has 662 lines of code (exceeds 500 allowed). Consider refactoring.
Open

package stage

import (
    "bytes"
    "context"
Severity: Minor
Found in pkg/build/stage/full_dockerfile.go - About 5 hrs to fix

    Method FullDockerfileStage.FetchDependencies has a Cognitive Complexity of 49 (exceeds 20 allowed). Consider refactoring.
    Open

    func (s *FullDockerfileStage) FetchDependencies(ctx context.Context, c Conveyor, containerBackend container_backend.ContainerBackend, dockerRegistry docker_registry.GenericApiInterface) error {
        resolvedDependenciesArgsHash := ResolveDependenciesArgs(s.targetPlatform, s.dependencies, c)
    
        resolvedDockerMetaArgsHash, err := s.resolveDockerMetaArgs(resolvedDependenciesArgsHash)
        if err != nil {
    Severity: Minor
    Found in pkg/build/stage/full_dockerfile.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 FullDockerfileStage.GetDependencies has a Cognitive Complexity of 48 (exceeds 20 allowed). Consider refactoring.
    Open

    func (s *FullDockerfileStage) GetDependencies(ctx context.Context, c Conveyor, cb container_backend.ContainerBackend, prevImage, prevBuiltImage *StageImage, buildContextArchive container_backend.BuildContextArchiver) (string, error) {
        resolvedDependenciesArgsHash := ResolveDependenciesArgs(s.targetPlatform, s.dependencies, c)
    
        resolvedDockerMetaArgsHash, err := s.resolveDockerMetaArgs(resolvedDependenciesArgsHash)
        if err != nil {
    Severity: Minor
    Found in pkg/build/stage/full_dockerfile.go - About 4 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 FullDockerfileStage.dockerfileInstructionDependencies has 136 lines of code (exceeds 50 allowed). Consider refactoring.
    Open

    func (s *FullDockerfileStage) dockerfileInstructionDependencies(ctx context.Context, giterminismManager giterminism_manager.Interface, resolvedDockerMetaArgsHash, resolvedDependenciesArgsHash map[string]string, dockerStageID int, cmd interface{}, isOnbuildInstruction, isBaseImageOnbuildInstruction bool) ([]string, []string, error) {
        var dependencies []string
        var onBuildDependencies []string
    
        resolveValueFunc := func(value string) (string, error) {
    Severity: Major
    Found in pkg/build/stage/full_dockerfile.go - About 4 hrs to fix

      Method FullDockerfileStage.dockerfileInstructionDependencies has 23 return statements (exceeds 4 allowed).
      Open

      func (s *FullDockerfileStage) dockerfileInstructionDependencies(ctx context.Context, giterminismManager giterminism_manager.Interface, resolvedDockerMetaArgsHash, resolvedDependenciesArgsHash map[string]string, dockerStageID int, cmd interface{}, isOnbuildInstruction, isBaseImageOnbuildInstruction bool) ([]string, []string, error) {
          var dependencies []string
          var onBuildDependencies []string
      
          resolveValueFunc := func(value string) (string, error) {
      Severity: Major
      Found in pkg/build/stage/full_dockerfile.go - About 2 hrs to fix

        Method FullDockerfileStage.GetDependencies has 69 lines of code (exceeds 50 allowed). Consider refactoring.
        Open

        func (s *FullDockerfileStage) GetDependencies(ctx context.Context, c Conveyor, cb container_backend.ContainerBackend, prevImage, prevBuiltImage *StageImage, buildContextArchive container_backend.BuildContextArchiver) (string, error) {
            resolvedDependenciesArgsHash := ResolveDependenciesArgs(s.targetPlatform, s.dependencies, c)
        
            resolvedDockerMetaArgsHash, err := s.resolveDockerMetaArgs(resolvedDependenciesArgsHash)
            if err != nil {
        Severity: Minor
        Found in pkg/build/stage/full_dockerfile.go - About 1 hr to fix

          Method FullDockerfileStage.FetchDependencies has 68 lines of code (exceeds 50 allowed). Consider refactoring.
          Open

          func (s *FullDockerfileStage) FetchDependencies(ctx context.Context, c Conveyor, containerBackend container_backend.ContainerBackend, dockerRegistry docker_registry.GenericApiInterface) error {
              resolvedDependenciesArgsHash := ResolveDependenciesArgs(s.targetPlatform, s.dependencies, c)
          
              resolvedDockerMetaArgsHash, err := s.resolveDockerMetaArgs(resolvedDependenciesArgsHash)
              if err != nil {
          Severity: Minor
          Found in pkg/build/stage/full_dockerfile.go - About 1 hr to fix

            Method FullDockerfileStage.FetchDependencies has 14 return statements (exceeds 4 allowed).
            Open

            func (s *FullDockerfileStage) FetchDependencies(ctx context.Context, c Conveyor, containerBackend container_backend.ContainerBackend, dockerRegistry docker_registry.GenericApiInterface) error {
                resolvedDependenciesArgsHash := ResolveDependenciesArgs(s.targetPlatform, s.dependencies, c)
            
                resolvedDockerMetaArgsHash, err := s.resolveDockerMetaArgs(resolvedDependenciesArgsHash)
                if err != nil {
            Severity: Major
            Found in pkg/build/stage/full_dockerfile.go - About 1 hr to fix

              Function NewDockerRunArgs has 6 arguments (exceeds 4 allowed). Consider refactoring.
              Open

              func NewDockerRunArgs(dockerfile []byte, dockerfilePath, target, context string, contextAddFiles []string, buildArgs map[string]interface{}, addHost []string, network, ssh string) *DockerRunArgs {
              Severity: Minor
              Found in pkg/build/stage/full_dockerfile.go - About 45 mins to fix

                Method FullDockerfileStage.dockerfileOnBuildInstructionDependencies has 6 arguments (exceeds 4 allowed). Consider refactoring.
                Open

                func (s *FullDockerfileStage) dockerfileOnBuildInstructionDependencies(ctx context.Context, giterminismManager giterminism_manager.Interface, resolvedDockerMetaArgsHash, resolvedDependenciesArgsHash map[string]string, dockerStageID int, expression string, isBaseImageOnbuildInstruction bool) ([]string, []string, error) {
                Severity: Minor
                Found in pkg/build/stage/full_dockerfile.go - About 45 mins to fix

                  Avoid deeply nested control flow statements.
                  Open

                                      if err := logboek.Context(ctx).Default().LogProcess("Pulling base image %s", resolvedBaseName).DoError(func() error {
                                          return containerBackend.Pull(ctx, resolvedBaseName, container_backend.PullOpts{})
                                      }); err != nil {
                                          return err
                                      }
                  Severity: Major
                  Found in pkg/build/stage/full_dockerfile.go - About 45 mins to fix

                    Avoid deeply nested control flow statements.
                    Open

                                        if onBuild, err = getBaseImageOnBuildLocally(); err != nil {
                                            return err
                                        }
                    Severity: Major
                    Found in pkg/build/stage/full_dockerfile.go - About 45 mins to fix

                      Method FullDockerfileStage.dockerfileInstructionDependencies has 6 arguments (exceeds 4 allowed). Consider refactoring.
                      Open

                      func (s *FullDockerfileStage) dockerfileInstructionDependencies(ctx context.Context, giterminismManager giterminism_manager.Interface, resolvedDockerMetaArgsHash, resolvedDependenciesArgsHash map[string]string, dockerStageID int, cmd interface{}, isOnbuildInstruction, isBaseImageOnbuildInstruction bool) ([]string, []string, error) {
                      Severity: Minor
                      Found in pkg/build/stage/full_dockerfile.go - About 45 mins to fix

                        Function newFullDockerfileStage has 5 arguments (exceeds 4 allowed). Consider refactoring.
                        Open

                        func newFullDockerfileStage(dockerRunArgs *DockerRunArgs, dockerStages *DockerStages, contextChecksum *ContextChecksum, baseStageOptions *BaseStageOptions, dependencies []*config.Dependency) *FullDockerfileStage {
                        Severity: Minor
                        Found in pkg/build/stage/full_dockerfile.go - About 35 mins to fix

                          Method FullDockerfileStage.PrepareImage has 5 arguments (exceeds 4 allowed). Consider refactoring.
                          Open

                          func (s *FullDockerfileStage) PrepareImage(ctx context.Context, c Conveyor, cb container_backend.ContainerBackend, prevBuiltImage, stageImage *StageImage, buildContextArchive container_backend.BuildContextArchiver) error {
                          Severity: Minor
                          Found in pkg/build/stage/full_dockerfile.go - About 35 mins to fix

                            Function GenerateFullDockerfileStage has 5 arguments (exceeds 4 allowed). Consider refactoring.
                            Open

                            func GenerateFullDockerfileStage(dockerRunArgs *DockerRunArgs, dockerStages *DockerStages, contextChecksum *ContextChecksum, baseStageOptions *BaseStageOptions, dependencies []*config.Dependency) *FullDockerfileStage {
                            Severity: Minor
                            Found in pkg/build/stage/full_dockerfile.go - About 35 mins to fix

                              Method FullDockerfileStage.GetDependencies has 5 arguments (exceeds 4 allowed). Consider refactoring.
                              Open

                              func (s *FullDockerfileStage) GetDependencies(ctx context.Context, c Conveyor, cb container_backend.ContainerBackend, prevImage, prevBuiltImage *StageImage, buildContextArchive container_backend.BuildContextArchiver) (string, error) {
                              Severity: Minor
                              Found in pkg/build/stage/full_dockerfile.go - About 35 mins to fix

                                Method FullDockerfileStage.GetDependencies has 5 return statements (exceeds 4 allowed).
                                Open

                                func (s *FullDockerfileStage) GetDependencies(ctx context.Context, c Conveyor, cb container_backend.ContainerBackend, prevImage, prevBuiltImage *StageImage, buildContextArchive container_backend.BuildContextArchiver) (string, error) {
                                    resolvedDependenciesArgsHash := ResolveDependenciesArgs(s.targetPlatform, s.dependencies, c)
                                
                                    resolvedDockerMetaArgsHash, err := s.resolveDockerMetaArgs(resolvedDependenciesArgsHash)
                                    if err != nil {
                                Severity: Major
                                Found in pkg/build/stage/full_dockerfile.go - About 35 mins to fix

                                  There are no issues that match your filters.

                                  Category
                                  Status