package gorules
// We always need this import.
import "github.com/quasilyte/go-ruleguard/dsl"
// helloWorld is a *named rules group*.
// It has only 1 simple rule inside and its name is "helloWorld".
// The *rules group* signature is fixed.
func helloWorld(m dsl.Matcher) {
// A chain that starts with Match() and ends with Report() call called a *rule*.
// Therefore, a minimal *rule* consists of Match+Report call.
//
// Match() matches the AST using the gogrep pattern string;
// Report() prints the specified message when this rule is matched.
m.Match(`fmt.Println("Hello, world")`).Report("found hello world")
}
package main
import "fmt"
func main() {
fmt.Println("Hello, world")
}
Notes:
-c 0 argument makes the ruleguard print one context line in its output (line 6 in this example)-rules argument accepts a ruleguard rules source (always rules.go in out examples)Match() argument is a github.com/mvdan/gogrep pattern stringpackage gorules; it can't be other packagedsl package documentation is a common source of the most answers