goreduce

Reduce Go programs

  • 所有者: mvdan/goreduce
  • 平台:
  • 许可证: BSD 3-Clause "New" or "Revised" License
  • 分类:
  • 主题:
  • 喜欢:
    0
      比较:

Github星跟踪图

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

主要指标

概览
名称与所有者mvdan/goreduce
主编程语言Go
编程语言Go (语言数: 1)
平台
许可证BSD 3-Clause "New" or "Revised" License
所有者活动
创建于2017-01-21 16:46:24
推送于2024-03-19 13:53:55
最后一次提交2024-03-19 13:53:41
发布数0
用户参与
星数215
关注者数6
派生数7
提交数277
已启用问题?
问题数27
打开的问题数6
拉请求数2
打开的拉请求数0
关闭的拉请求数0
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?