Bläddra i källkod

build.go: add gometalinter to lint runs

GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/3085
Lars K.W. Gohlke 9 år sedan
förälder
incheckning
b78bfc0a43
1 ändrade filer med 38 tillägg och 1 borttagningar
  1. 38 1
      build.go

+ 38 - 1
build.go

@@ -224,6 +224,12 @@ func main() {
 		lint(".")
 		lint("./cmd/...")
 		lint("./lib/...")
+		if isGometalinterInstalled() {
+			dirs := []string{".", "./cmd/...", "./lib/..."}
+			gometalinter("deadcode", dirs, "test/util.go")
+			gometalinter("structcheck", dirs)
+			gometalinter("varcheck", dirs)
+		}
 
 	default:
 		log.Fatalf("Unknown command %q", cmd)
@@ -281,6 +287,7 @@ func setup() {
 	runPrint("go", "get", "-v", "github.com/axw/gocov/gocov")
 	runPrint("go", "get", "-v", "github.com/AlekSi/gocov-xml")
 	runPrint("go", "get", "-v", "bitbucket.org/tebeka/go2xunit")
+	runPrint("go", "get", "-v", "github.com/alecthomas/gometalinter")
 }
 
 func test(pkgs ...string) {
@@ -862,7 +869,6 @@ func vet(dirs ...string) {
 		// A genuine error exit from the vet tool.
 		log.Fatal(err)
 	}
-
 }
 
 func lint(pkg string) {
@@ -911,3 +917,34 @@ func exitStatus(err error) int {
 
 	return -1
 }
+
+func isGometalinterInstalled() bool {
+	if _, err := runError("gometalinter", "--disable-all"); err != nil {
+		log.Println("gometalinter is not installed")
+		return false
+	}
+	return true
+}
+
+func gometalinter(linter string, dirs []string, excludes ...string) {
+	params := []string{"--disable-all"}
+	params = append(params, fmt.Sprintf("--deadline=%ds", 60))
+	params = append(params, "--enable="+linter)
+
+	for _, exclude := range excludes {
+		params = append(params, "--exclude="+exclude)
+	}
+
+	for _, dir := range dirs {
+		params = append(params, dir)
+	}
+
+	bs, err := runError("gometalinter", params...)
+
+	if len(bs) > 0 {
+		log.Printf("%s", bs)
+	}
+	if err != nil {
+		log.Printf("%v", err)
+	}
+}