diff --git a/pkg/golinters/deadcode.go b/pkg/golinters/deadcode.go
index a5edf9bc..c7a16609 100644
--- a/pkg/golinters/deadcode.go
+++ b/pkg/golinters/deadcode.go
@@ -24,7 +24,11 @@ func (d Deadcode) Run(ctx context.Context, lintCtx *Context) ([]result.Issue, er
 		return nil, err
 	}
 
-	var res []result.Issue
+	if len(issues) == 0 {
+		return nil, nil
+	}
+
+	res := make([]result.Issue, 0, len(issues))
 	for _, i := range issues {
 		res = append(res, result.Issue{
 			Pos:        i.Pos,
diff --git a/pkg/golinters/dupl.go b/pkg/golinters/dupl.go
index 0355886a..dafd4fdb 100644
--- a/pkg/golinters/dupl.go
+++ b/pkg/golinters/dupl.go
@@ -25,7 +25,11 @@ func (d Dupl) Run(ctx context.Context, lintCtx *Context) ([]result.Issue, error)
 		return nil, err
 	}
 
-	var res []result.Issue
+	if len(issues) == 0 {
+		return nil, nil
+	}
+
+	res := make([]result.Issue, 0, len(issues))
 	for _, i := range issues {
 		dupl := fmt.Sprintf("%s:%d-%d", i.To.Filename(), i.To.LineStart(), i.To.LineEnd())
 		text := fmt.Sprintf("%d-%d lines are duplicate of %s",
diff --git a/pkg/golinters/errcheck.go b/pkg/golinters/errcheck.go
index 03c3442f..5695ba22 100644
--- a/pkg/golinters/errcheck.go
+++ b/pkg/golinters/errcheck.go
@@ -25,7 +25,11 @@ func (e Errcheck) Run(ctx context.Context, lintCtx *Context) ([]result.Issue, er
 		return nil, err
 	}
 
-	var res []result.Issue
+	if len(issues) == 0 {
+		return nil, nil
+	}
+
+	res := make([]result.Issue, 0, len(issues))
 	for _, i := range issues {
 		var text string
 		if i.FuncName != "" {
diff --git a/pkg/golinters/gas.go b/pkg/golinters/gas.go
index 3e9243ad..ccf5edc4 100644
--- a/pkg/golinters/gas.go
+++ b/pkg/golinters/gas.go
@@ -33,8 +33,11 @@ func (lint Gas) Run(ctx context.Context, lintCtx *Context) ([]result.Issue, erro
 
 	analyzer.ProcessProgram(lintCtx.Program)
 	issues, _ := analyzer.Report()
+	if len(issues) == 0 {
+		return nil, nil
+	}
 
-	var res []result.Issue
+	res := make([]result.Issue, 0, len(issues))
 	for _, i := range issues {
 		text := fmt.Sprintf("%s: %s", i.RuleID, i.What) // TODO: use severity and confidence
 		var r result.Range
diff --git a/pkg/golinters/goconst.go b/pkg/golinters/goconst.go
index 9113801f..241709bd 100644
--- a/pkg/golinters/goconst.go
+++ b/pkg/golinters/goconst.go
@@ -32,8 +32,11 @@ func (lint Goconst) Run(ctx context.Context, lintCtx *Context) ([]result.Issue,
 
 		goconstIssues = append(goconstIssues, issues...)
 	}
+	if len(goconstIssues) == 0 {
+		return nil, nil
+	}
 
-	var res []result.Issue
+	res := make([]result.Issue, 0, len(goconstIssues))
 	for _, i := range goconstIssues {
 		textBegin := fmt.Sprintf("string %s has %d occurrences", formatCode(i.Str, lintCtx.Cfg), i.OccurencesCount)
 		var textEnd string
diff --git a/pkg/golinters/gocyclo.go b/pkg/golinters/gocyclo.go
index 63fa1d47..e54fc0dc 100644
--- a/pkg/golinters/gocyclo.go
+++ b/pkg/golinters/gocyclo.go
@@ -24,15 +24,18 @@ func (g Gocyclo) Run(ctx context.Context, lintCtx *Context) ([]result.Issue, err
 	for _, f := range lintCtx.ASTCache.GetAllValidFiles() {
 		stats = gocycloAPI.BuildStats(f.F, f.Fset, stats)
 	}
+	if len(stats) == 0 {
+		return nil, nil
+	}
 
 	sort.Slice(stats, func(i, j int) bool {
 		return stats[i].Complexity > stats[j].Complexity
 	})
 
-	var res []result.Issue
+	res := make([]result.Issue, 0, len(stats))
 	for _, s := range stats {
 		if s.Complexity <= lintCtx.Settings().Gocyclo.MinComplexity {
-			continue
+			break //Break as the stats is already sorted from greatest to least
 		}
 
 		res = append(res, result.Issue{
diff --git a/pkg/golinters/golint.go b/pkg/golinters/golint.go
index a5c22d9e..19048d58 100644
--- a/pkg/golinters/golint.go
+++ b/pkg/golinters/golint.go
@@ -53,8 +53,11 @@ func (g Golint) lintFiles(minConfidence float64, filenames ...string) ([]result.
 	if err != nil {
 		return nil, fmt.Errorf("can't lint files %s: %s", filenames, err)
 	}
+	if len(ps) == 0 {
+		return nil, nil
+	}
 
-	var issues []result.Issue
+	issues := make([]result.Issue, 0, len(ps)) //This is worst case
 	for _, p := range ps {
 		if p.Confidence >= minConfidence {
 			issues = append(issues, result.Issue{
diff --git a/pkg/golinters/govet.go b/pkg/golinters/govet.go
index 0c1fdeda..229ea283 100644
--- a/pkg/golinters/govet.go
+++ b/pkg/golinters/govet.go
@@ -27,8 +27,11 @@ func (g Govet) Run(ctx context.Context, lintCtx *Context) ([]result.Issue, error
 		}
 		govetIssues = append(govetIssues, issues...)
 	}
+	if len(govetIssues) == 0 {
+		return nil, nil
+	}
 
-	var res []result.Issue
+	res := make([]result.Issue, 0, len(govetIssues))
 	for _, i := range govetIssues {
 		res = append(res, result.Issue{
 			Pos:        i.Pos,
diff --git a/pkg/golinters/ineffassign.go b/pkg/golinters/ineffassign.go
index 5be1ed3d..51e666d2 100644
--- a/pkg/golinters/ineffassign.go
+++ b/pkg/golinters/ineffassign.go
@@ -20,8 +20,11 @@ func (Ineffassign) Desc() string {
 
 func (lint Ineffassign) Run(ctx context.Context, lintCtx *Context) ([]result.Issue, error) {
 	issues := ineffassignAPI.Run(lintCtx.Paths.Files)
+	if len(issues) == 0 {
+		return nil, nil
+	}
 
-	var res []result.Issue
+	res := make([]result.Issue, 0, len(issues))
 	for _, i := range issues {
 		res = append(res, result.Issue{
 			Pos:        i.Pos,
diff --git a/pkg/golinters/interfacer.go b/pkg/golinters/interfacer.go
index 8f9cfdd8..e55942b1 100644
--- a/pkg/golinters/interfacer.go
+++ b/pkg/golinters/interfacer.go
@@ -27,8 +27,11 @@ func (lint Interfacer) Run(ctx context.Context, lintCtx *Context) ([]result.Issu
 	if err != nil {
 		return nil, err
 	}
+	if len(issues) == 0 {
+		return nil, nil
+	}
 
-	var res []result.Issue
+	res := make([]result.Issue, 0, len(issues))
 	for _, i := range issues {
 		pos := lintCtx.SSAProgram.Fset.Position(i.Pos())
 		res = append(res, result.Issue{
diff --git a/pkg/golinters/maligned.go b/pkg/golinters/maligned.go
index dc93453e..3e0f8198 100644
--- a/pkg/golinters/maligned.go
+++ b/pkg/golinters/maligned.go
@@ -20,8 +20,11 @@ func (Maligned) Desc() string {
 
 func (m Maligned) Run(ctx context.Context, lintCtx *Context) ([]result.Issue, error) {
 	issues := malignedAPI.Run(lintCtx.Program)
+	if len(issues) == 0 {
+		return nil, nil
+	}
 
-	var res []result.Issue
+	res := make([]result.Issue, 0, len(issues))
 	for _, i := range issues {
 		text := fmt.Sprintf("struct of size %d bytes could be of size %d bytes", i.OldSize, i.NewSize)
 		if lintCtx.Settings().Maligned.SuggestNewOrder {
diff --git a/pkg/golinters/megacheck.go b/pkg/golinters/megacheck.go
index e2dee9ca..f9141d79 100644
--- a/pkg/golinters/megacheck.go
+++ b/pkg/golinters/megacheck.go
@@ -41,8 +41,11 @@ func (m Megacheck) Desc() string {
 func (m Megacheck) Run(ctx context.Context, lintCtx *Context) ([]result.Issue, error) {
 	issues := megacheckAPI.Run(lintCtx.Program, lintCtx.LoaderConfig, lintCtx.SSAProgram,
 		m.StaticcheckEnabled, m.GosimpleEnabled, m.UnusedEnabled)
+	if len(issues) == 0 {
+		return nil, nil
+	}
 
-	var res []result.Issue
+	res := make([]result.Issue, 0, len(issues))
 	for _, i := range issues {
 		res = append(res, result.Issue{
 			Pos:        i.Position,
diff --git a/pkg/golinters/structcheck.go b/pkg/golinters/structcheck.go
index d8b98e21..3f015f8d 100644
--- a/pkg/golinters/structcheck.go
+++ b/pkg/golinters/structcheck.go
@@ -20,8 +20,11 @@ func (Structcheck) Desc() string {
 
 func (s Structcheck) Run(ctx context.Context, lintCtx *Context) ([]result.Issue, error) {
 	issues := structcheckAPI.Run(lintCtx.Program, lintCtx.Settings().Structcheck.CheckExportedFields)
+	if len(issues) == 0 {
+		return nil, nil
+	}
 
-	var res []result.Issue
+	res := make([]result.Issue, 0, len(issues))
 	for _, i := range issues {
 		res = append(res, result.Issue{
 			Pos:        i.Pos,
diff --git a/pkg/golinters/unconvert.go b/pkg/golinters/unconvert.go
index 5a40f319..768967fb 100644
--- a/pkg/golinters/unconvert.go
+++ b/pkg/golinters/unconvert.go
@@ -19,7 +19,11 @@ func (Unconvert) Desc() string {
 
 func (lint Unconvert) Run(ctx context.Context, lintCtx *Context) ([]result.Issue, error) {
 	positions := unconvertAPI.Run(lintCtx.Program)
-	var res []result.Issue
+	if len(positions) == 0 {
+		return nil, nil
+	}
+
+	res := make([]result.Issue, 0, len(positions))
 	for _, pos := range positions {
 		res = append(res, result.Issue{
 			Pos:        pos,
diff --git a/pkg/golinters/varcheck.go b/pkg/golinters/varcheck.go
index 7377b401..35d89999 100644
--- a/pkg/golinters/varcheck.go
+++ b/pkg/golinters/varcheck.go
@@ -20,8 +20,11 @@ func (Varcheck) Desc() string {
 
 func (v Varcheck) Run(ctx context.Context, lintCtx *Context) ([]result.Issue, error) {
 	issues := varcheckAPI.Run(lintCtx.Program, lintCtx.Settings().Varcheck.CheckExportedFields)
+	if len(issues) == 0 {
+		return nil, nil
+	}
 
-	var res []result.Issue
+	res := make([]result.Issue, 0, len(issues))
 	for _, i := range issues {
 		res = append(res, result.Issue{
 			Pos:        i.Pos,