Giter Site home page Giter Site logo

jig's People

Contributors

caramelopardalis avatar dependabot-preview[bot] avatar dependabot-support avatar dependabot[bot] avatar haljik avatar hc0208 avatar irof avatar masuda220 avatar mdstoy avatar miyohide avatar numamino avatar orekyuu avatar sammy7th avatar takesection avatar yoshiyoshifujii avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jig's Issues

Gradleプラグインを作る

gradleタスクで出力できるようにする

クラスパスやディレクトリが問題にならなくなるはず。

大きい画像の制限

メモリさえ許容すれば巨大な画像は作れるが、開いたところで見れたものじゃない。
出力するのに時間がかかって固まってるように見えるのも問題。
制限するかどうか。

webアプリを作る

どっかからソースを拾ってきて図が1つ表示できるもの

デザインとかログインとかは何もかも別対応

メソッドシグネチャをリフレクションではなくソースコードかバイトコードから出す

今のところ、クラスを読んでリフレクションでMethodから出力している。
この形だと依存するクラスを全て読まないと落ちてしまい、以下のような問題がある。

  • マルチモジュールプロジェクトの場合に target.class がjar-hellのような感じになる。
  • 7d29811 のような暫定対処が必要になっている。

https://javaparser.org
http://spoon.gforge.inria.fr
http://asm.ow2.org/

情報の信頼性を考えればバイトコードで行きたいところだけれど、用途を考えればソースコードを読む方があってるかもしれない。

主要クラス図を作る

それっぽいものが出るところまでがスコープ

  • クラスの依存
    • jdepsでいけそう
  • 主要の判別
    • 依存の量による重み付け?
    • アノテーション?
  • 主要じゃないものの扱い
    • 主要にまとめる(消しちゃうと依存が見えなくなる)

MyBatisを使用部の制約を明示する

MyBatisを使用してMapperインタフェースからSQLを取得しているところは、動作しない条件がいくつか存在する。回避できないものを明示する。

以下はメモ。

  • Mapperインタフェースが未知のクラスに依存している場合にNoClassDefFoundErrorになる
    • ログ出力はして、出力は続行できるようにはしてる。

JDK10でビルドエラー

java.nio.file.FileSystemNotFoundException
	at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.getFileSystem(ZipFileSystemProvider.java:169)
	at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.getPath(ZipFileSystemProvider.java:155)
	at java.base/java.nio.file.Paths.get(Paths.java:143)
	at jig.infrastructure.mybatis.MyBatisSqlResolver.resolve(MyBatisSqlResolver.java:72)

Excel出力する

TSVで出してるのはExcelに貼るしか用途がない。
Excelで出せていい。

RepositoryのCRUD出力

MyBatis専用機能。

@Repository の場合に、CRUDと使用しているっぽいテーブルを出力する。

まずはストレートなものだけ出してみる。
MyBatisのXMLが構造化されているものなどをどうするかは後で考える。

事前事後条件のコード化

DbCのやり方。assert文はちょっとね。
javadocに書くライブラリが昔あったが、今どうなってるかを確認する。

  • 事前条件←これのわかりやすさ、伝えやすさが重要
  • 事後条件 ←べつにいい
  • 不変条件 ←これもまあいい

クラス名の表記:完全修飾からミニマム修飾に変える

classリストのクラス名の完全修飾名が冗長

*.service
*.domain.[model|basic]

までの修飾は、非表示にしたい。
service, domain.model も非表示

その他のアイデア

完全修飾名は、オプションで表示する(デフォルトは、表示しない)
完全修飾名と最少修飾名を2つのカラムに出力し、使う側がカラムの非表示などの対応をする

対象テーブルの抽出方法の改善

現在、SQLから対象テーブルの抜き出しは正規表現で行なっている。
見づらいし、他の方法を考える。

JSqlParser

ある程度のSQLは対応できるが、以下の事象があって厳しい。

  • カラム名にが入っているとTokenMgrErrorになる。
  • SQLに #{...} が入っているとTokenMgrErrorになる。
  • SELECT EXISTS(SELECT * FROM HOGE) がJSQLParserExceptionになる。

TokenMgrErrorになるものは事前に使用できる文字に置換すれば対応できるが、EXISTSは回避方法が思い浮かばない。

処理時間の計測とか

手動で確認しているが、そこそこ大きなプロジェクトを対象に自動実行させたい。

依存パッケージがない場合の出し方

依存がないパッケージは表示されない
全部独立したパッケージだと何も出せなくて落ちる → f094b8f で落ちなくなった(空っぽの画像が出る)

依存がなくてもパッケージがあれば出したいところ

jdepsをやめる

結局ASMでクラス全部よんでも十分いけそうだし、以下の問題もあるので、jdepsやめて技術スタックを減らす。

  • 実行環境にJDKが必要になっている
  • JDK9以降で現状のまま動かないのがわかっている

機能要求モデルを作る

それっぽいものが出るところまでがスコープ

テストのアノテーションかドキュメントとテスト間の依存でいけそう

Java9,10に対応する

  • 実行時に --add-modules java.xml.bind が要る。

以下は #37 で片付く。

  • compile files("${System.getProperty('java.home')}/../lib/tools.jar") は意味がない。
    jdepsは jdk.jdeps.jmod になり、指定自体が不要。
  • java9でビルドすると tools.jar がアーカイブに入らず、このjarをjava8で java -jar するとjdepsのクラスロードに失敗する。
    java -cp package-diagram-cli.jar:{...}/tools.jar org.springframework.boot.loader.JarLauncher の形でならば実行可。( tools.jar がアーカイブに含まれるの自体が問題)
  • jdepsの出力フォーマットが変わる。バージョンで読み方を変えるか、-dotoutputした方を読むか。

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.