fix golint err

This commit is contained in:
jichangjun 2020-07-26 18:15:35 +08:00
parent 51dad73b05
commit 2814fe9d4f
3 changed files with 23 additions and 11 deletions

View File

@ -39,7 +39,9 @@ import (
) )
var ( var (
ErrCoverPkgFailed = errors.New("fail to inject code to project") // ErrCoverPkgFailed represents the error that fails to inject the package
ErrCoverPkgFailed = errors.New("fail to inject code to project")
// ErrCoverListFailed represents the error that fails to list package dependencies
ErrCoverListFailed = errors.New("fail to list package dependencies") ErrCoverListFailed = errors.New("fail to list package dependencies")
) )
@ -94,6 +96,7 @@ type Package struct {
DepsErrors []*PackageError `json:"DepsErrors,omitempty"` // errors loading dependencies DepsErrors []*PackageError `json:"DepsErrors,omitempty"` // errors loading dependencies
} }
// ModulePublic represents the package info of a module
type ModulePublic struct { type ModulePublic struct {
Path string `json:",omitempty"` // module path Path string `json:",omitempty"` // module path
Version string `json:",omitempty"` // module version Version string `json:",omitempty"` // module version
@ -109,6 +112,7 @@ type ModulePublic struct {
Error *ModuleError `json:",omitempty"` // error loading module Error *ModuleError `json:",omitempty"` // error loading module
} }
// ModuleError represents the error loading module
type ModuleError struct { type ModuleError struct {
Err string // error text Err string // error text
} }
@ -200,7 +204,7 @@ func Execute(args, newGopath, target, mode, agentPort, center string) error {
// Some internal package have same parent dir or import path // Some internal package have same parent dir or import path
// Cache all vars by internal parent dir for all child internal counter vars // Cache all vars by internal parent dir for all child internal counter vars
cacheCover := AddCacheCover(pkg, inPkgCover) cacheCover := addCacheCover(pkg, inPkgCover)
if v, ok := tc.CacheCover[cacheCover.Package.Dir]; ok { if v, ok := tc.CacheCover[cacheCover.Package.Dir]; ok {
for cVar, val := range v.Vars { for cVar, val := range v.Vars {
cacheCover.Vars[cVar] = val cacheCover.Vars[cVar] = val
@ -211,7 +215,7 @@ func Execute(args, newGopath, target, mode, agentPort, center string) error {
} }
// Cache all internal vars to internal parent package // Cache all internal vars to internal parent package
inCover := CacheInternalCover(inPkgCover) inCover := cacheInternalCover(inPkgCover)
if v, ok := internalPkgCache[cacheCover.Package.Dir]; ok { if v, ok := internalPkgCache[cacheCover.Package.Dir]; ok {
v = append(v, inCover) v = append(v, inCover)
internalPkgCache[cacheCover.Package.Dir] = v internalPkgCache[cacheCover.Package.Dir] = v
@ -417,7 +421,7 @@ func declareCacheVars(in *PackageCover) map[string]*FileVar {
return vars return vars
} }
func CacheInternalCover(in *PackageCover) *PackageCover { func cacheInternalCover(in *PackageCover) *PackageCover {
c := &PackageCover{} c := &PackageCover{}
vars := declareCacheVars(in) vars := declareCacheVars(in)
c.Package = in.Package c.Package = in.Package
@ -425,7 +429,7 @@ func CacheInternalCover(in *PackageCover) *PackageCover {
return c return c
} }
func AddCacheCover(pkg *Package, in *PackageCover) *PackageCover { func addCacheCover(pkg *Package, in *PackageCover) *PackageCover {
c := &PackageCover{} c := &PackageCover{}
sum := sha256.Sum256([]byte(pkg.ImportPath)) sum := sha256.Sum256([]byte(pkg.ImportPath))
h := fmt.Sprintf("%x", sum[:6]) h := fmt.Sprintf("%x", sum[:6])
@ -458,7 +462,7 @@ type codeBlock struct {
coverageCount int // number of times the block is covered coverageCount int // number of times the block is covered
} }
//convert profile to CoverageList struct // CovList converts profile to CoverageList struct
func CovList(f io.Reader) (g CoverageList, err error) { func CovList(f io.Reader) (g CoverageList, err error) {
scanner := bufio.NewScanner(f) scanner := bufio.NewScanner(f)
scanner.Scan() // discard first line scanner.Scan() // discard first line
@ -475,7 +479,7 @@ func CovList(f io.Reader) (g CoverageList, err error) {
return return
} }
// covert profile file to CoverageList struct // ReadFileToCoverList coverts profile file to CoverageList struct
func ReadFileToCoverList(path string) (g CoverageList, err error) { func ReadFileToCoverList(path string) (g CoverageList, err error) {
f, err := ioutil.ReadFile(path) f, err := ioutil.ReadFile(path)
if err != nil { if err != nil {
@ -538,13 +542,14 @@ func (g *CoverageList) append(c *Coverage) {
*g = append(*g, *c) *g = append(*g, *c)
} }
// sort CoverageList with filenames // Sort sorts CoverageList with filenames
func (g CoverageList) Sort() { func (g CoverageList) Sort() {
sort.SliceStable(g, func(i, j int) bool { sort.SliceStable(g, func(i, j int) bool {
return g[i].Name() < g[j].Name() return g[i].Name() < g[j].Name()
}) })
} }
// TotalPercentage returns the total percentage of coverage
func (g CoverageList) TotalPercentage() string { func (g CoverageList) TotalPercentage() string {
ratio, err := g.TotalRatio() ratio, err := g.TotalRatio()
if err == nil { if err == nil {
@ -553,6 +558,7 @@ func (g CoverageList) TotalPercentage() string {
return "N/A" return "N/A"
} }
// TotalRatio returns the total ratio of covered statements
func (g CoverageList) TotalRatio() (ratio float32, err error) { func (g CoverageList) TotalRatio() (ratio float32, err error) {
var total Coverage var total Coverage
for _, c := range g { for _, c := range g {
@ -586,6 +592,7 @@ func (c *Coverage) Percentage() string {
return "N/A" return "N/A"
} }
// Ratio calculates the ratio of statements in a profile
func (c *Coverage) Ratio() (ratio float32, err error) { func (c *Coverage) Ratio() (ratio float32, err error) {
if c.NAllStmts == 0 { if c.NAllStmts == 0 {
err = fmt.Errorf("[%s] has 0 statement", c.Name()) err = fmt.Errorf("[%s] has 0 statement", c.Name())

View File

@ -13,6 +13,7 @@
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
package prow package prow
import ( import (

View File

@ -19,11 +19,12 @@ package qiniu
import ( import (
"encoding/json" "encoding/json"
"fmt" "fmt"
log "github.com/sirupsen/logrus"
"os" "os"
"path" "path"
"sort" "sort"
"strconv" "strconv"
log "github.com/sirupsen/logrus"
) )
const ( const (
@ -33,10 +34,10 @@ const (
// ArtifactsDirName is the name of directory defined in prow to store test artifacts // ArtifactsDirName is the name of directory defined in prow to store test artifacts
ArtifactsDirName = "artifacts" ArtifactsDirName = "artifacts"
//default prow coverage file //PostSubmitCoverProfile represents the default output coverage file generated in prow environment
PostSubmitCoverProfile = "filtered.cov" PostSubmitCoverProfile = "filtered.cov"
//default to save changed file related coverage profile //ChangedProfileName represents the default changed coverage profile based on files changed in Pull Request
ChangedProfileName = "changed-file-profile.cov" ChangedProfileName = "changed-file-profile.cov"
) )
@ -106,16 +107,19 @@ func FindBaseProfileFromQiniu(qc *Client, prowJobName, covProfileName string) ([
return qc.ReadObject(profilePath) return qc.ReadObject(profilePath)
} }
// Artifacts prepresents the rule to store test artifacts in prow
type Artifacts struct { type Artifacts struct {
Directory string Directory string
ProfileName string ProfileName string
ChangedProfileName string // create temporary to save changed file related coverage profile ChangedProfileName string // create temporary to save changed file related coverage profile
} }
// ProfilePath returns a full path for profile
func (a *Artifacts) ProfilePath() string { func (a *Artifacts) ProfilePath() string {
return path.Join(a.Directory, a.ProfileName) return path.Join(a.Directory, a.ProfileName)
} }
// CreateChangedProfile creates a profile in order to store the most related files based on Github Pull Request
func (a *Artifacts) CreateChangedProfile() *os.File { func (a *Artifacts) CreateChangedProfile() *os.File {
if a.ChangedProfileName == "" { if a.ChangedProfileName == "" {
log.Fatalf("param Artifacts.ChangedProfileName should not be empty") log.Fatalf("param Artifacts.ChangedProfileName should not be empty")