cloudfoundry/korifi

View on GitHub

Showing 17 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

      App has 26 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 3 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

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

                  serverURL url.URL,
                  appRepo CFAppRepository,
                  dropletRepo CFDropletRepository,
                  processRepo CFProcessRepository,
                  processStatsFetcher ProcessStats,
              Severity: Major
              Found in api/handlers/app.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 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

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

                        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 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 NewOrg has 6 arguments (exceeds 5 allowed). Consider refactoring.
                            Open

                            func NewOrg(apiBaseURL url.URL, orgRepo CFOrgRepository, domainRepo CFDomainRepository, requestValidator RequestValidator, userCertificateExpirationWarningDuration time.Duration, defaultDomainName string) *Org {
                            Severity: Minor
                            Found in api/handlers/org.go - About 35 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

                                Method CFRouteValidator.ValidateUpdate has 9 return statements (exceeds 8 allowed).
                                Open

                                func (v *CFRouteValidator) ValidateUpdate(ctx context.Context, oldObj, obj runtime.Object) (admission.Warnings, error) {
                                    route, ok := obj.(*korifiv1alpha1.CFRoute)
                                    if !ok {
                                        return nil, apierrors.NewBadRequest(fmt.Sprintf("expected a CFRoute but got a %T", obj))
                                    }
                                Severity: Major
                                Found in controllers/webhooks/networking/cfroute_validator.go - About 35 mins to fix
                                  Severity
                                  Category
                                  Status
                                  Source
                                  Language