platform/lambda/lambda.go

Summary

Maintainability
D
2 days
Test Coverage

File lambda.go has 793 lines of code (exceeds 500 allowed). Consider refactoring.
Open

// Package lambda implements the API Gateway & AWS Lambda platform.
package lambda

import (
    "bytes"
Severity: Major
Found in platform/lambda/lambda.go - About 1 day to fix

    Platform has 39 methods (exceeds 20 allowed). Consider refactoring.
    Open

    type Platform struct {
        config  *up.Config
        handler string
        zip     *bytes.Buffer
        events  event.Events
    Severity: Minor
    Found in platform/lambda/lambda.go - About 5 hrs to fix

      Method Platform.updateFunction has 61 lines of code (exceeds 50 allowed). Consider refactoring.
      Open

      func (p *Platform) updateFunction(c *lambda.Lambda, a *apigateway.APIGateway, up *s3manager.Uploader, region string, d up.Deploy) (version string, err error) {
          b := aws.String(p.getS3BucketName(region))
          k := aws.String(p.getS3Key(d.Stage))
      
          // upload
      Severity: Minor
      Found in platform/lambda/lambda.go - About 1 hr to fix

        Method Platform.createCerts has 57 lines of code (exceeds 50 allowed). Consider refactoring.
        Open

        func (p *Platform) createCerts() error {
            s := session.New(aws.NewConfig().WithRegion("us-east-1"))
            a := acm.New(s)
            var domains []string
        
        
        Severity: Minor
        Found in platform/lambda/lambda.go - About 1 hr to fix

          Method Platform.updateFunction has 10 return statements (exceeds 4 allowed).
          Open

          func (p *Platform) updateFunction(c *lambda.Lambda, a *apigateway.APIGateway, up *s3manager.Uploader, region string, d up.Deploy) (version string, err error) {
              b := aws.String(p.getS3BucketName(region))
              k := aws.String(p.getS3Key(d.Stage))
          
              // upload
          Severity: Major
          Found in platform/lambda/lambda.go - About 1 hr to fix

            Method Platform.createRole has 7 return statements (exceeds 4 allowed).
            Open

            func (p *Platform) createRole() error {
                s := session.New(aws.NewConfig())
                c := iam.New(s)
            
                name := p.roleName()
            Severity: Major
            Found in platform/lambda/lambda.go - About 45 mins to fix

              Method Platform.Deploy has 6 return statements (exceeds 4 allowed).
              Open

              func (p *Platform) Deploy(d up.Deploy) error {
                  regions := p.config.Regions
                  var g errgroup.Group
              
                  if err := p.createRole(); err != nil {
              Severity: Major
              Found in platform/lambda/lambda.go - About 40 mins to fix

                Method Platform.Build has 6 return statements (exceeds 4 allowed).
                Open

                func (p *Platform) Build() error {
                    start := time.Now()
                    p.zip = new(bytes.Buffer)
                
                    if err := p.injectProxy(); err != nil {
                Severity: Major
                Found in platform/lambda/lambda.go - About 40 mins to fix

                  Method Platform.DeleteStack has 6 return statements (exceeds 4 allowed).
                  Open

                  func (p *Platform) DeleteStack(region string, wait bool) error {
                      versions := resources.Versions{}
                  
                      for _, s := range p.config.Stages {
                          versions[s.Name] = "1"
                  Severity: Major
                  Found in platform/lambda/lambda.go - About 40 mins to fix

                    Method Platform.createFunction has 5 arguments (exceeds 4 allowed). Consider refactoring.
                    Open

                    func (p *Platform) createFunction(c *lambda.Lambda, a *apigateway.APIGateway, up *s3manager.Uploader, region string, d up.Deploy) (version string, err error) {
                    Severity: Minor
                    Found in platform/lambda/lambda.go - About 35 mins to fix

                      Method Platform.updateFunction has 5 arguments (exceeds 4 allowed). Consider refactoring.
                      Open

                      func (p *Platform) updateFunction(c *lambda.Lambda, a *apigateway.APIGateway, up *s3manager.Uploader, region string, d up.Deploy) (version string, err error) {
                      Severity: Minor
                      Found in platform/lambda/lambda.go - About 35 mins to fix

                        Method Platform.createFunction has 5 return statements (exceeds 4 allowed).
                        Open

                        func (p *Platform) createFunction(c *lambda.Lambda, a *apigateway.APIGateway, up *s3manager.Uploader, region string, d up.Deploy) (version string, err error) {
                            // ensure bucket exists
                            if err := p.createBucket(region); err != nil && !util.IsBucketExists(err) {
                                return "", errors.Wrap(err, "creating s3 bucket")
                            }
                        Severity: Major
                        Found in platform/lambda/lambda.go - About 35 mins to fix

                          Method Platform.createCerts has 5 return statements (exceeds 4 allowed).
                          Open

                          func (p *Platform) createCerts() error {
                              s := session.New(aws.NewConfig().WithRegion("us-east-1"))
                              a := acm.New(s)
                              var domains []string
                          
                          
                          Severity: Major
                          Found in platform/lambda/lambda.go - About 35 mins to fix

                            Function getCert has 5 return statements (exceeds 4 allowed).
                            Open

                            func getCert(certs []*acm.CertificateDetail, domain string) string {
                                // exact domain
                                for _, c := range certs {
                                    if *c.DomainName == domain {
                                        return *c.CertificateArn
                            Severity: Major
                            Found in platform/lambda/lambda.go - About 35 mins to fix

                              There are no issues that match your filters.

                              Category
                              Status