fzipp / gocyclo

Calculate cyclomatic complexities of functions in Go source code.
BSD 3-Clause "New" or "Revised" License
1.35k stars 80 forks source link

ignore generated code #9

Closed tamird closed 3 years ago

tamird commented 8 years ago

in CockroachDB we have a large amount of generated code, mostly from https://github.com/gogo/protobuf and yacc. Running gocyclo gives this:

$ gocyclo -top 10 .
645 parser (*sqlParserImpl).Parse sql/parser/yaccpar:156:1
233 roachpb (*RequestUnion).Unmarshal roachpb/api.pb.go:8930:1
233 roachpb (*ResponseUnion).Unmarshal roachpb/api.pb.go:9706:1
163 roachpb (*ErrorDetail).Unmarshal roachpb/errors.pb.go:2972:1
128 roachpb (*Transaction).Unmarshal roachpb/data.pb.go:2618:1
114 sql (*TableDescriptor).Unmarshal sql/structured.pb.go:1868:1
102 log (*LogEntry).Unmarshal util/log/log.pb.go:280:1
101 sql simplifyOneAndExpr sql/analyze.go:257:1
94 gossip (*Response).Unmarshal gossip/gossip.pb.go:796:1
93 gossip (*Request).Unmarshal gossip/gossip.pb.go:460:1

Of these, sql simplifyOneAndExpr sql/analyze.go:257 is the only hand-written function. To be useful, we need a way to teach gocyclo to ignore certain files, packages, or functions.

jgautheron commented 8 years ago

Just implemented an ignore flag for gocyclo.

$ gocyclo -ignore "yacc|\.pb\." .

Get it here.