gitee.com/wgliang/goreporter@v0.0.0-20180902115603-df1b20f7c5d0/linters/gofmt/gofmt.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 gofmt
    15  
    16  import (
    17  	"bytes"
    18  	"os/exec"
    19  	"strings"
    20  )
    21  
    22  // GoFmt if a function that will run command go fmt,return all result of
    23  // warnning issues.
    24  func GoFmt(packagePath []string) (goFmtData []string, err error) {
    25  	cmd := exec.Command("gofmt", append([]string{"-l"}, packagePath...)...)
    26  	var out, outerr bytes.Buffer
    27  	cmd.Stdout = &out
    28  	cmd.Stderr = &outerr
    29  	err = cmd.Run()
    30  	if err != nil {
    31  		return goFmtData, err
    32  	}
    33  	goFmtData = strings.Split(strings.TrimSuffix(out.String(), "\n"), "\n")
    34  	return goFmtData, nil
    35  }