Skip to content

Allocate memory for known size slices #42

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
May 30, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion pkg/golinters/deadcode.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
6 changes: 5 additions & 1 deletion pkg/golinters/dupl.go
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
6 changes: 5 additions & 1 deletion pkg/golinters/errcheck.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 != "" {
Expand Down
5 changes: 4 additions & 1 deletion pkg/golinters/gas.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
5 changes: 4 additions & 1 deletion pkg/golinters/goconst.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
7 changes: 5 additions & 2 deletions pkg/golinters/gocyclo.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

}

res = append(res, result.Issue{
Expand Down
5 changes: 4 additions & 1 deletion pkg/golinters/golint.go
Original file line number Diff line number Diff line change
Expand Up @@ -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{
Expand Down
5 changes: 4 additions & 1 deletion pkg/golinters/govet.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
5 changes: 4 additions & 1 deletion pkg/golinters/ineffassign.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
5 changes: 4 additions & 1 deletion pkg/golinters/interfacer.go
Original file line number Diff line number Diff line change
Expand Up @@ -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{
Expand Down
5 changes: 4 additions & 1 deletion pkg/golinters/maligned.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
5 changes: 4 additions & 1 deletion pkg/golinters/megacheck.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
5 changes: 4 additions & 1 deletion pkg/golinters/structcheck.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
6 changes: 5 additions & 1 deletion pkg/golinters/unconvert.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
5 changes: 4 additions & 1 deletion pkg/golinters/varcheck.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down