go-quickfix

Quick fix non-compiling well-typed Go source code e.g. "x declared and not used."

MIT License

Stars
31

= goquickfix image:https://github.com/motemen/go-quickfix/workflows/CI/badge.svg["CI Status", link="https://github.com/motemen/go-quickfix/actions"] image:https://pkg.go.dev/badge/github.com/motemen/go-quickfix["go.pkg.dev", link="https://pkg.go.dev/github.com/motemen/go-quickfix"] image:http://gocover.io/_badge/github.com/motemen/go-quickfix["Test Coverage", link="http://gocover.io/github.com/motemen/go-quickfix"]

The goquickfix command quick fixes Go source that is well typed but Go refuses to compile e.g. "x declared and not used".

== Installation

go get github.com/motemen/go-quickfix/cmd/goquickfix

== Usage

goquickfix [-w] [-revert] <path>...

Flags:
  -revert=false: try to revert possible quickfixes introduced by goquickfix
  -w=false: write result to (source) file instead of stdout

== Description

While coding, sometimes you may write a Go program that is completely well typed but go build (or run or test) refuses to build, like this:

[source,go]

package main

import ( "fmt" "log" )

func main() {
nums := []int{3, 1, 4, 1, 5}
for i, n := range nums {
fmt.Println(n)
}
}

The Go compiler will complain:

eg.go:5: imported and not used: "log"

Or

eg.go:9: i declared and not used

Do we have to bother to comment out the import line or remove the unused identifier one by one for the Go compiler? Of course no, goquickfix does the work instead of you.

Run

goquickfix -w eg.go

and you will get the source rewritten so that Go compiles it well without changing the semantics:

[source,go]

package main

import ( "fmt" _ "log" )

func main() {
nums := []int{3, 1, 4, 1, 5}
for i, n := range nums {
fmt.Println(n)
_ = i
}
}

Now you can go run or go test your code safely.

== TODO

  • -d option to show diffs
  • -hard=true option to remove erroneous code rather than adding new code