gitee.com/mirrors/goreporter@v0.0.0-20180902115603-df1b20f7c5d0/linters/govet/govet.go (about)

     1  // Copyright 2017 The GoReporter Authors.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //    http://www.apache.org/licenses/LICENSE-2.0
     7  //
     8  // Unless required by applicable law or agreed to in writing, software
     9  // distributed under the License is distributed on an "AS IS" BASIS,
    10  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    11  // See the License for the specific language governing permissions and
    12  // limitations under the License.
    13  
    14  package govet
    15  
    16  import (
    17  	"bytes"
    18  	"os/exec"
    19  	"strings"
    20  )
    21  
    22  // GoVet if a function that will run command go tool vet,return all result of
    23  // warnning issues.
    24  func GoVet(packagePath []string) (goVetData []string, err error) {
    25  	cmd := exec.Command("go", append([]string{"tool", "vet"}, packagePath...)...)
    26  	var out, outerr bytes.Buffer
    27  	cmd.Stdout = &out
    28  	cmd.Stderr = &outerr
    29  	err = cmd.Run()
    30  	if err != nil {
    31  		goVetData = strings.Split(strings.TrimSuffix(outerr.String(), "\n"), "\n")
    32  		if len(goVetData) > 0 {
    33  			return goVetData, nil
    34  		} else {
    35  			return goVetData, err
    36  		}
    37  	}
    38  	goVetData = strings.Split(strings.TrimSuffix(out.String(), "\n"), "\n")
    39  	return goVetData, nil
    40  }