github.com/serversong/goreporter@v0.0.0-20200325104552-3cfaf44fd178/engine/strategy_simplecode.go (about) 1 package engine 2 3 import ( 4 "strconv" 5 "strings" 6 7 "github.com/360EntSecGroup-Skylar/goreporter/linters/simplecode" 8 "github.com/360EntSecGroup-Skylar/goreporter/utils" 9 ) 10 11 type StrategySimpleCode struct { 12 Sync *Synchronizer `inject:""` 13 } 14 15 func (s *StrategySimpleCode) GetName() string { 16 return "Simple" 17 } 18 19 func (s *StrategySimpleCode) GetDescription() string { 20 return "All golang code hints that can be optimized and give suggestions for changes." 21 } 22 23 func (s *StrategySimpleCode) GetWeight() float64 { 24 return 0.05 25 } 26 27 func (s *StrategySimpleCode) Compute(parameters StrategyParameter) (summaries *Summaries) { 28 summaries = NewSummaries() 29 30 simples := simplecode.Simple(parameters.AllDirs, parameters.ExceptPackages) 31 sumProcessNumber := int64(10) 32 processUnit := utils.GetProcessUnit(sumProcessNumber, len(simples)) 33 for _, simpleTip := range simples { 34 simpleTips := strings.Split(simpleTip, ":") 35 if len(simpleTips) == 4 { 36 packageName := utils.PackageNameFromGoPath(simpleTips[0]) 37 line, _ := strconv.Atoi(simpleTips[1]) 38 erroru := Error{ 39 LineNumber: line, 40 ErrorString: utils.AbsPath(simpleTips[0]) + ":" + strings.Join(simpleTips[1:], ":"), 41 } 42 summaries.Lock() 43 if summarie, ok := summaries.Summaries[packageName]; ok { 44 summarie.Errors = append(summarie.Errors, erroru) 45 summaries.Summaries[packageName] = summarie 46 } else { 47 summarie := Summary{ 48 Name: packageName, 49 Errors: make([]Error, 0), 50 } 51 summarie.Errors = append(summarie.Errors, erroru) 52 summaries.Summaries[packageName] = summarie 53 } 54 summaries.Unlock() 55 } 56 if sumProcessNumber > 0 { 57 s.Sync.LintersProcessChans <- processUnit 58 sumProcessNumber = sumProcessNumber - processUnit 59 } 60 } 61 62 return summaries 63 } 64 65 func (s *StrategySimpleCode) Percentage(summaries *Summaries) float64 { 66 summaries.RLock() 67 defer summaries.RUnlock() 68 return utils.CountPercentage(len(summaries.Summaries)) 69 }