marx-saul / go_pure

A static analysis tool for go-lang that ensure some designated functions are pure.
MIT License
1 stars 0 forks source link

Review by tenntenn #2

Open tenntenn opened 4 years ago

tenntenn commented 4 years ago

https://github.com/marx-saul/go_pure/blob/master/go_pure.go#L13 https://github.com/marx-saul/go_pure/blob/master/go_pure.go#L26 使用しないものは消しておく

https://github.com/marx-saul/go_pure/blob/master/go_pure.go#L16-L18 ドキュメントをちゃんと書く

https://github.com/marx-saul/go_pure/blob/master/go_pure.go#L52-L53 標準出力に出すんではなく、エラーとして返した方が良いです。

https://github.com/marx-saul/go_pure/blob/master/go_pure.go#L98 result = result && checkIdent(pass, node, fd, dict)とするか、無駄にast.Inspectが実行されないようにfalseを返すなどして、resultfalseになったあとに無駄にcheckIdentが呼び出され無いようにしたほうがよい。

https://github.com/marx-saul/go_pure/blob/master/go_pure.go#L122 プレーンテキストで出した方が良いです。

https://github.com/marx-saul/go_pure/blob/master/go_pure.go#L145 https://github.com/marx-saul/go_pure/blob/master/go_pure.go#L167 elseは不要です。

https://github.com/marx-saul/go_pure/blob/master/go_pure.go#L26-L34 Factをうまく使うと良さそうですね。

tenntenn commented 4 years ago

【コメント】 関数の純粋性という面白いテーマを扱っていて面白かったです。ast.Ident構造体のObjフィールドを使った分岐は私はあんまりやったことがないので勉強になりました。