Code Monkey home page Code Monkey logo

gpcg's Introduction

monkukui

Trophy

monkukui

Languages

monkukui

Stats

 monkukui

Streak

monkukui

gpcg's People

Contributors

monkukui avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

gpcg's Issues

レビュー

バイナリファイル入れない

リポジトリにバイナリファイル入れるのやめておきましょう

スコープが広すぎる

https://github.com/monkukui/gpt/blob/master/gpt.go#L24 この変数のスコープが広いかなと思いました。
この変数使わずに、 libPath が空ならエラーを返すとかでいいのでは?

関数の使い方

https://github.com/monkukui/gpt/blob/master/gpt.go#L299
これ個人的には string を返す方が好みです

一時ファイルの作り方

https://golang.org/pkg/io/ioutil/#TempFile ここらへんを見るといい気がする

ライブラリ内で import しているのもをまとめてコード生成,重複削除も

WHY

現状,ライブラリ内では import できない(は?)

WHAT

処理の流れは以下の通りある.

  • a/lib 以下のファイルを全部見て,インポート文を map[string]struct{}{} に入れていく
  • a.go のインポート文も map[string][struct]{}{} に入れる
  • package main を出力
  • map[string]struct{}{} 内の import 文を全て出力
  • a.go の package と import を除く全てを出力
  • a/lib 以下のファイルの package と import を除く全てを出力

この PR でやらないこと

  • 実際に使用するライブラリだけを持ってくる
  • ライブラリが他のライブラリを参照していたら,それもよしなに持ってくる(最小全域木を求めるために Union Find を使う,など)

名前が衝突しないように rename する

WHY

関数や構造体は,異なるパッケージ間なら同じ名前で定義しても良い.
コードを一つにまとめるとき,同じ名前の関数が複数定義されてしまう恐れがある.

_<パッケージ名>_ + <関数名> に rename すれば,必ず名前が一意に定まる.

type UnionFind struct{ par []int }

type _lib_UnionFind struct{ par []int }

に置換される

検出もれ

panic: interface conversion: ast.Expr is *ast.StarExpr, not *ast.Ident

ざっと見ていること

[nits] 文字を比較するときの方法

https://github.com/monkukui/gpt/blob/master/gpt_test.go#L39 ここ
https://golang.org/pkg/bytes/#Equal を使うと良さそう

[nits] nil チェック

https://github.com/monkukui/gpt/blob/master/gpt.go#L66
まあ絶対nilになることはないけれどチェックしたほうがいいかも

[must] 決め打ちのファイルパスを変える

https://github.com/monkukui/gpt/blob/master/gpt.go#L47
https://github.com/monkukui/gpt/blob/master/gpt.go#L82
analysis に乗っかっている意味があんまりなさそうなので、普通のコマンドラインツールとして作成したほうがいいかもしれないですね

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.