Merge pull request #42 from dixonwille/feature/better-memory-alloc-for-slices

Allocate memory for known size slices
This commit is contained in:
golangci 2018-05-30 17:32:14 +03:00 committed by GitHub
commit 80a5ff2eff
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 65 additions and 16 deletions

View File

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

View File

@ -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",

View File

@ -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 != "" {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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