Showing 107 of 107 total issues

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

func (c Client) GetRepoChannelReleaseDir(repoName, group, optionalChannel string) (string, error) {
    channel, err := c.processRepoOptionalChannel(repoName, optionalChannel)
    if err != nil {
        return "", err
    }
Severity: Major
Found in client/pkg/client/client.go and 1 other location - About 1 hr to fix
client/pkg/client/client.go on lines 357..381

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

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

Method TufRepoRotator.Rotate has 65 lines of code (exceeds 50 allowed). Consider refactoring.
Open

func (rotator *TufRepoRotator) Rotate(logger hclog.Logger, now time.Time) error {
    var changedRoot, changedTargets, changedSnapshot, changedTimestamp bool

    logger.Debug("start rotating expiration timestamps and versions of TUF repository roles")

Severity: Minor
Found in server/pkg/publisher/tuf_repo_rotator.go - About 1 hr to fix

    Function updateCmd has 63 lines of code (exceeds 50 allowed). Consider refactoring.
    Open

    func updateCmd() *cobra.Command {
        var noSelfUpdate bool
        var autoclean bool
        var inBackground bool
        var backgroundStdoutFile string
    Severity: Minor
    Found in client/cmd/trdl/update.go - About 1 hr to fix

      Function NewMethodTemplateData has 63 lines of code (exceeds 50 allowed). Consider refactoring.
      Open

      func NewMethodTemplateData(name, path string, urlParameters []framework.OASParameter, methodDesc *framework.OASOperation, pathComponentSchema *framework.OASSchema) *MethodTemplateData {
          method := &MethodTemplateData{
              Name: name,
              Path: path,
          }
      Severity: Minor
      Found in server/pkg/gendocs/templates.go - About 1 hr to fix

        Function Paths has 63 lines of code (exceeds 50 allowed). Consider refactoring.
        Open

        func Paths() []*framework.Path {
            return []*framework.Path{
                {
                    Pattern:         "configure/trusted_pgp_public_key/?",
                    HelpSynopsis:    "Configure trusted PGP public keys",
        Severity: Minor
        Found in server/pkg/pgp/backend.go - About 1 hr to fix

          Method Manager.pathTaskLogRead has 61 lines of code (exceeds 50 allowed). Consider refactoring.
          Open

          func (m *Manager) pathTaskLogRead(ctx context.Context, req *logical.Request, fields *framework.FieldData) (*logical.Response, error) {
              offset := fields.Get(fieldNameOffset).(int)
              limit := fields.Get(fieldNameLimit).(int)
              uuid := fields.Get(fieldNameUUID).(string)
          
          
          Severity: Minor
          Found in server/pkg/tasks_manager/backend.go - About 1 hr to fix

            Method NonAtomicTufStore.WalkStagedTargets has a Cognitive Complexity of 27 (exceeds 20 allowed). Consider refactoring.
            Open

            func (store *NonAtomicTufStore) WalkStagedTargets(targetPathList []string, targetsFn tuf.TargetsWalkFunc) error {
                store.logger.Debug(fmt.Sprintf("-- NonAtomicTufStore.WalkStagedTargets %v", targetPathList))
            
                ctx := context.Background()
            
            
            Severity: Minor
            Found in server/pkg/publisher/non_atomic_tuf_store.go - About 1 hr 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 ValidatePublishConfig has 59 lines of code (exceeds 50 allowed). Consider refactoring.
            Open

            func ValidatePublishConfig(ctx context.Context, publisher publisher.Interface, publisherRepository publisher.RepositoryInterface, config *config.TrdlChannels, logger hclog.Logger) error {
                existingReleases, err := publisher.GetExistingReleases(ctx, publisherRepository)
                if err != nil {
                    return fmt.Errorf("error getting existing targets: %w", err)
                }
            Severity: Minor
            Found in server/path_publish.go - About 1 hr to fix

              Function buildReleaseArtifacts has 58 lines of code (exceeds 50 allowed). Consider refactoring.
              Open

              func buildReleaseArtifacts(ctx context.Context, tarWriter *nio.PipeWriter, gitRepo *git.Repository, fromImage string, runCommands []string, logger hclog.Logger) (error, func() error) {
                  cli, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation())
                  if err != nil {
                      return fmt.Errorf("unable to create docker client: %w", err), nil
                  }
              Severity: Minor
              Found in server/path_release.go - About 1 hr to fix

                Function useCmd has 58 lines of code (exceeds 50 allowed). Consider refactoring.
                Open

                func useCmd() *cobra.Command {
                    var noSelfUpdate bool
                    var shell string
                
                    cmd := &cobra.Command{
                Severity: Minor
                Found in client/cmd/trdl/use.go - About 1 hr to fix

                  Method Backend.Periodic has 56 lines of code (exceeds 50 allowed). Consider refactoring.
                  Open

                  func (b *Backend) Periodic(ctx context.Context, req *logical.Request) error {
                      entry, err := req.Storage.Get(ctx, lastPeriodicRunTimestampKey)
                      if err != nil {
                          return fmt.Errorf("unable to get key %q from storage: %w", lastPeriodicRunTimestampKey, err)
                      }
                  Severity: Minor
                  Found in server/periodic.go - About 1 hr to fix

                    Method Client.doSelfUpdate has 12 return statements (exceeds 4 allowed).
                    Open

                    func (c Client) doSelfUpdate(autocleanReleases bool) error {
                        channel, err := c.processRepoOptionalChannel(trdl.SelfUpdateDefaultRepo, "")
                        if err != nil {
                            if _, ok := err.(*RepositoryNotInitializedError); !ok {
                                return err
                    Severity: Major
                    Found in client/pkg/client/client.go - About 1 hr to fix

                      Method Manager.pathTaskLogRead has 12 return statements (exceeds 4 allowed).
                      Open

                      func (m *Manager) pathTaskLogRead(ctx context.Context, req *logical.Request, fields *framework.FieldData) (*logical.Response, error) {
                          offset := fields.Get(fieldNameOffset).(int)
                          limit := fields.Get(fieldNameLimit).(int)
                          uuid := fields.Get(fieldNameUUID).(string)
                      
                      
                      Severity: Major
                      Found in server/pkg/tasks_manager/backend.go - About 1 hr to fix

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

                        func cloneGitRepositoryBranch(url, gitBranch, username, password string) (*git.Repository, error) {
                            cloneGitOptions := trdlGit.CloneOptions{
                                BranchName:        gitBranch,
                                RecurseSubmodules: git.DefaultSubmoduleRecursionDepth,
                            }
                        Severity: Major
                        Found in server/path_publish.go and 1 other location - About 1 hr to fix
                        server/path_release.go on lines 222..241

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

                        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 cloneGitRepositoryTag(url, gitTag, username, password string) (*git.Repository, error) {
                            cloneGitOptions := trdlGit.CloneOptions{
                                TagName:           gitTag,
                                RecurseSubmodules: git.DefaultSubmoduleRecursionDepth,
                            }
                        Severity: Major
                        Found in server/path_release.go and 1 other location - About 1 hr to fix
                        server/path_publish.go on lines 309..328

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

                        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

                        Method Backend.Periodic has 11 return statements (exceeds 4 allowed).
                        Open

                        func (b *Backend) Periodic(ctx context.Context, req *logical.Request) error {
                            entry, err := req.Storage.Get(ctx, lastPeriodicRunTimestampKey)
                            if err != nil {
                                return fmt.Errorf("unable to get key %q from storage: %w", lastPeriodicRunTimestampKey, err)
                            }
                        Severity: Major
                        Found in server/periodic.go - About 1 hr to fix

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

                          func ForEachWorktreeFile(gitRepo *git.Repository, fileFunc func(path, link string, fileReader io.Reader, info os.FileInfo) error) error {
                              w, err := gitRepo.Worktree()
                              if err != nil {
                                  return fmt.Errorf("unable to get git repository worktree: %w", err)
                              }
                          Severity: Major
                          Found in server/pkg/git/repository.go - About 1 hr to fix

                            Method TufRepoRotator.Rotate has 10 return statements (exceeds 4 allowed).
                            Open

                            func (rotator *TufRepoRotator) Rotate(logger hclog.Logger, now time.Time) error {
                                var changedRoot, changedTargets, changedSnapshot, changedTimestamp bool
                            
                                logger.Debug("start rotating expiration timestamps and versions of TUF repository roles")
                            
                            
                            Severity: Major
                            Found in server/pkg/publisher/tuf_repo_rotator.go - About 1 hr to fix

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

                              func (c Client) GetChannelReleaseBinDir(group, channel string) (dir string, err error) {
                                  err = lockgate.WithAcquire(c.locker, c.channelLockName(group, channel), lockgate.AcquireOptions{Shared: true, Timeout: trdl.DefaultLockerTimeout}, func(_ bool) error {
                                      dir, _, err = c.findChannelReleaseBinDir(group, channel)
                                      return err
                                  })
                              Severity: Minor
                              Found in client/pkg/repo/bin_path.go and 1 other location - About 55 mins to fix
                              client/pkg/repo/dir_path.go on lines 8..15

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

                              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 Client) GetChannelReleaseDir(group, channel string) (dir string, err error) {
                                  err = lockgate.WithAcquire(c.locker, c.channelLockName(group, channel), lockgate.AcquireOptions{Shared: true, Timeout: trdl.DefaultLockerTimeout}, func(_ bool) error {
                                      dir, _, err = c.findChannelReleaseDir(group, channel)
                                      return err
                                  })
                              Severity: Minor
                              Found in client/pkg/repo/dir_path.go and 1 other location - About 55 mins to fix
                              client/pkg/repo/bin_path.go on lines 8..15

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

                              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

                              Severity
                              Category
                              Status
                              Source
                              Language