cloudfoundry/cf-k8s-controllers

View on GitHub

Showing 22 of 26 total issues

Function main has a Cognitive Complexity of 111 (exceeds 20 allowed). Consider refactoring.
Open

func main() {
    var metricsAddr string
    var enableLeaderElection bool
    var probeAddr string

Severity: Minor
Found in controllers/main.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 main has 395 lines of code (exceeds 50 allowed). Consider refactoring.
Open

func main() {
    var metricsAddr string
    var enableLeaderElection bool
    var probeAddr string

Severity: Major
Found in controllers/main.go - About 1 day to fix

    Method AppWorkloadToStatefulsetConverter.Convert has 133 lines of code (exceeds 50 allowed). Consider refactoring.
    Open

    func (r *AppWorkloadToStatefulsetConverter) Convert(appWorkload *korifiv1alpha1.AppWorkload) (*appsv1.StatefulSet, error) {
        envs := appWorkload.Spec.Env
    
        fieldEnvs := []corev1.EnvVar{
            {
    Severity: Major
    Found in statefulset-runner/controllers/appworkload_to_stset.go - About 4 hrs to fix

      File app.go has 548 lines of code (exceeds 500 allowed). Consider refactoring.
      Open

      package handlers
      
      import (
          "context"
          "errors"
      Severity: Minor
      Found in api/handlers/app.go - About 3 hrs to fix

        App has 25 methods (exceeds 20 allowed). Consider refactoring.
        Open

        type App struct {
            serverURL        url.URL
            appRepo          CFAppRepository
            dropletRepo      CFDropletRepository
            processRepo      CFProcessRepository
        Severity: Minor
        Found in api/handlers/app.go - About 2 hrs to fix

          Method ProcessStats.FetchStats has 69 lines of code (exceeds 50 allowed). Consider refactoring.
          Open

          func (a *ProcessStats) FetchStats(ctx context.Context, authInfo authorization.Info, processGUID string) ([]PodStatsRecord, error) {
              processRecord, err := a.processRepo.GetProcess(ctx, authInfo, processGUID)
              if err != nil {
                  return nil, err
              }
          Severity: Minor
          Found in api/actions/process_stats.go - About 1 hr to fix

            Function ForApp has 68 lines of code (exceeds 50 allowed). Consider refactoring.
            Open

            func ForApp(responseApp repositories.AppRecord, baseURL url.URL) AppResponse {
                return AppResponse{
                    Name:      responseApp.Name,
                    GUID:      responseApp.GUID,
                    State:     string(responseApp.State),
            Severity: Minor
            Found in api/presenter/app.go - About 1 hr to fix

              Method RoleRepo.CreateRole has 58 lines of code (exceeds 50 allowed). Consider refactoring.
              Open

              func (r *RoleRepo) CreateRole(ctx context.Context, authInfo authorization.Info, role CreateRoleMessage) (RoleRecord, error) {
                  userClient, err := r.userClientFactory.BuildClient(authInfo)
                  if err != nil {
                      return RoleRecord{}, fmt.Errorf("failed to build user client: %w", err)
                  }
              Severity: Minor
              Found in api/repositories/role_repository.go - About 1 hr to fix

                Method DuplicateValidator.ValidateUpdate has 52 lines of code (exceeds 50 allowed). Consider refactoring.
                Open

                func (v DuplicateValidator) ValidateUpdate(ctx context.Context, logger logr.Logger, namespace string, oldObj, obj UniqueClientObject) error {
                    if oldObj.UniqueName() == obj.UniqueName() {
                        return nil
                    }
                
                
                Severity: Minor
                Found in controllers/webhooks/duplicate_validator.go - About 1 hr to fix

                  Function ForDroplet has 51 lines of code (exceeds 50 allowed). Consider refactoring.
                  Open

                  func ForDroplet(dropletRecord repositories.DropletRecord, baseURL url.URL) DropletResponse {
                      toReturn := DropletResponse{
                          GUID:      dropletRecord.GUID,
                          CreatedAt: formatTimestamp(&dropletRecord.CreatedAt),
                          UpdatedAt: formatTimestamp(dropletRecord.UpdatedAt),
                  Severity: Minor
                  Found in api/presenter/droplet.go - About 1 hr to fix

                    Function ForBuild has 51 lines of code (exceeds 50 allowed). Consider refactoring.
                    Open

                    func ForBuild(buildRecord repositories.BuildRecord, baseURL url.URL) BuildResponse {
                        toReturn := BuildResponse{
                            GUID:            buildRecord.GUID,
                            CreatedAt:       formatTimestamp(&buildRecord.CreatedAt),
                            UpdatedAt:       formatTimestamp(buildRecord.UpdatedAt),
                    Severity: Minor
                    Found in api/presenter/build.go - About 1 hr to fix

                      Function NewApp has 9 arguments (exceeds 5 allowed). Consider refactoring.
                      Open

                          serverURL url.URL,
                          appRepo CFAppRepository,
                          dropletRepo CFDropletRepository,
                          processRepo CFProcessRepository,
                          routeRepo CFRouteRepository,
                      Severity: Major
                      Found in api/handlers/app.go - About 1 hr to fix

                        Function SetupIndexWithManager has 13 return statements (exceeds 8 allowed).
                        Open

                        func SetupIndexWithManager(mgr manager.Manager) error {
                            err := mgr.GetFieldIndexer().IndexField(context.Background(), new(korifiv1alpha1.CFRoute), IndexRouteDestinationAppName, routeDestinationAppNameIndexFn)
                            if err != nil {
                                return err
                            }
                        Severity: Major
                        Found in controllers/controllers/shared/index.go - About 55 mins to fix

                          Method Client.Push has 12 return statements (exceeds 8 allowed).
                          Open

                          func (c Client) Push(ctx context.Context, creds Creds, repoRef string, zipReader io.Reader, tags ...string) (string, error) {
                              tmpFile, err := os.CreateTemp(os.TempDir(), "sourceimg-%s")
                              if err != nil {
                                  return "", fmt.Errorf("failed to create a temp file for image: %w", err)
                              }
                          Severity: Major
                          Found in tools/image/client.go - About 50 mins to fix

                            Function NewRoleRepo has 7 arguments (exceeds 5 allowed). Consider refactoring.
                            Open

                                userClientFactory authorization.UserK8sClientFactory,
                                spaceRepo *SpaceRepo,
                                authorizedInChecker AuthorizedInChecker,
                                namespacePermissions *authorization.NamespacePermissions,
                                rootNamespace string,
                            Severity: Major
                            Found in api/repositories/role_repository.go - About 45 mins to fix

                              Function NewPackage has 7 arguments (exceeds 5 allowed). Consider refactoring.
                              Open

                                  serverURL url.URL,
                                  packageRepo CFPackageRepository,
                                  appRepo CFAppRepository,
                                  dropletRepo CFDropletRepository,
                                  imageRepo ImageRepository,
                              Severity: Major
                              Found in api/handlers/package.go - About 45 mins to fix

                                Method ImageRepository.UploadSourceImage has 6 arguments (exceeds 5 allowed). Consider refactoring.
                                Open

                                func (r *ImageRepository) UploadSourceImage(ctx context.Context, authInfo authorization.Info, imageRef string, srcReader io.Reader, spaceGUID string, tags ...string) (string, error) {
                                Severity: Minor
                                Found in api/repositories/image_repository.go - About 35 mins to fix

                                  Function NewRoute has 6 arguments (exceeds 5 allowed). Consider refactoring.
                                  Open

                                      serverURL url.URL,
                                      routeRepo CFRouteRepository,
                                      domainRepo CFDomainRepository,
                                      appRepo CFAppRepository,
                                      spaceRepo CFSpaceRepository,
                                  Severity: Minor
                                  Found in api/handlers/route.go - About 35 mins to fix

                                    Function NewStateCollector has 6 arguments (exceeds 5 allowed). Consider refactoring.
                                    Open

                                        appRepo shared.CFAppRepository,
                                        domainRepo shared.CFDomainRepository,
                                        processRepo shared.CFProcessRepository,
                                        routeRepo shared.CFRouteRepository,
                                        serviceInstanceRepo shared.CFServiceInstanceRepository,
                                    Severity: Minor
                                    Found in api/actions/manifest/state_collector.go - About 35 mins to fix

                                      Function NewApplier has 6 arguments (exceeds 5 allowed). Consider refactoring.
                                      Open

                                          appRepo shared.CFAppRepository,
                                          domainRepo shared.CFDomainRepository,
                                          processRepo shared.CFProcessRepository,
                                          routeRepo shared.CFRouteRepository,
                                          serviceInstanceRepo shared.CFServiceInstanceRepository,
                                      Severity: Minor
                                      Found in api/actions/manifest/applier.go - About 35 mins to fix
                                        Severity
                                        Category
                                        Status
                                        Source
                                        Language