nobreak

nobreak finds infinite for loop
Instruction
go install github.com/sivchari/nobreak/cmd/nobreak
Usage
package sandbox
func infiniteLoop() {
for { //"this `for statement` occurs infinite loop"
println("infinite loop")
}
}
func noCondInfiniteLoop() {
for i := 0; ; i++ { // "this `for statement` occurs infinite loop"
println(i)
}
}
func validLoop() {
for { // ok
println("no infinite loop")
break
}
for i := 0; i < 10; i++ { // ok
println(i)
}
for i := 0; ; i++ { // ok
println(i)
break
}
}
fish
go vet -vettool=(which nobreak) ./...
# command-line-arguments
sandbox/main.go:4:2: this `for statement` occurs infinite loop
sandbox/main.go:10:2: this `for statement` occurs infinite loop
bash
$ go vet -vettool=`which nobreak` ./...
# command-line-arguments
sandbox/main.go:4:2: this `for statement` occurs infinite loop
sandbox/main.go:10:2: this `for statement` occurs infinite loop
CI
CircleCI
- run:
name: Install nobreak
command: go get github.com/sivchari/nobreak
- run:
name: Run nobreak
command: go vet -vettool=`which nobreak` ./...
GitHub Actions
- name: Install nobreak
run: go get github.com/sivchari/nobreak
- name: Run nobreak
run: go vet -vettool=`which nobreak` ./...