goreduce

Reduce Go programs

  • Owner: mvdan/goreduce
  • Platform:
  • License:: BSD 3-Clause "New" or "Revised" License
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

goreduce

Build Status

Reduce a program to its simplest form as long as it produces a compiler
error or any output (such as a panic) matching a regular expression.

go get -u mvdan.cc/goreduce

Example

func main() {
        a := []int{1, 2, 3}
        if true {
                a = append(a, 4)
        }
        a[1] = -2
        println(a[10])
}
goreduce -match 'index out of range' .
func main() {
        a := []int{}
        println(a[0])
}

For more usage information, see goreduce -h.

Design

  • The tool should be reproducible, giving the same output for an input
    program as long as external factors don't modify its behavior
  • The rules should be as simple and composable as possible
  • Rules should avoid generating changes that they can know won't compile

Rules

Removing, Before, After, ---------------, -------------------, -------------, statement, a; b, a or b, index, a[1], a, slice, a[:2], a or a[:], binary part, a + b, a && b, a or b, unary op, -a, !a, a, star, *a, a, parentheses, (a), a, if/else, if a { b } else c, b or c, defer, defer f(), f(), go, go f(), f(), basic value, 123, "foo", 0, "", composite value, T{a, b}, T{}, #### Inlining, Before, After, ---------------, -------------------, -------------, const, const c = 0; f(c), f(0), var, v := false; f(v), f(false), case, case x: a, a, block, { a }, a, simple call, f(), { body }, #### Resolving, Before, After, ---------------, -------------------, -------------, integer op, 2 * 3, 6, string op, "foo" + "bar", "foobar", slice, "foo"[1:], "oo", index, "foo"[0], 'f', builtin, len("foo"), 3

Main metrics

Overview
Name With Ownermvdan/goreduce
Primary LanguageGo
Program languageGo (Language Count: 1)
Platform
License:BSD 3-Clause "New" or "Revised" License
所有者活动
Created At2017-01-21 16:46:24
Pushed At2024-03-19 13:53:55
Last Commit At2024-03-19 13:53:41
Release Count0
用户参与
Stargazers Count215
Watchers Count6
Fork Count7
Commits Count277
Has Issues Enabled
Issues Count27
Issue Open Count6
Pull Requests Count2
Pull Requests Open Count0
Pull Requests Close Count0
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private