From c505bd49b69970f4f8e1d4ae30933e1713d33d9b Mon Sep 17 00:00:00 2001 From: Svjatoslav Agejenko Date: Sun, 10 Jan 2021 00:38:45 +0200 Subject: [PATCH] updated project documentation --- doc/index.html | 150 ++++++++++--------------- doc/index.org | 54 +++------ usage examples/demo project/.gitignore | 3 +- 3 files changed, 75 insertions(+), 132 deletions(-) diff --git a/doc/index.html b/doc/index.html index 9bbe3f6..0a0c3ca 100644 --- a/doc/index.html +++ b/doc/index.html @@ -2,7 +2,7 @@ JavaInspect - Utility to visualize java software - + @@ -280,16 +280,10 @@ how to instuct Javainspect what to do.

After discovering application structure and optionally filtering out unimportant parts, JavaInspect produces GraphViz dot file that -describes data to be visualized. Then launches GraphViz to generate +describes data to be visualized. Then launches GraphViz to generate bitmap graph in PNG or SVG format.

-

-By default on your Desktop directory when operated in library mode or -current working directory when operated as standalone commandline -application. -

-

Notes:

@@ -435,21 +429,14 @@ Control code in general does the following:
  • Java reflection/classloaders does not provide mechanism for discovering all classes under given package. Therefore you need to -declare at least some classes to be added to the graph by: - +declare at least some classes to be added to the graph by manually +adding individual classes to the graph. For every class added to +the graph, GraphViz will recursively inspect it and add all +referecned classes to the graph as well.
  • Graphs easilly get very big and complex so optionally we filter -important code using classname wildcards patterns based blacklist -and/or whitelist. +important code using classname glob patterns based blacklist and/or +whitelist.
  • Optionally we can tune some rendering parameters like:
  • -
  • FEATURE: Replace internal java parser in package -eu.svjatoslav.inspector.java.methods with: https://javaparser.org/ +
  • FEATURE: Implement (or integrate existing java parser +https://javaparser.org/) to be able to produce code visualizations +based on source code (in addition to current reflection based +approach).
  • FEATURE: Integarte with PlantUML. @@ -746,6 +701,18 @@ project build/release process. +
    +

    7 See also

    +
    +

    +Similar or alternative solutions: +

    + +
    +

    Author: Svjatoslav Agejenko

    -

    Created: 2019-01-19 Sat 00:47

    +

    Created: 2021-01-10 P 00:37

    Emacs 26.1 (Org-mode 9.1.9)

    diff --git a/doc/index.org b/doc/index.org index e2a4f89..b831a37 100644 --- a/doc/index.org +++ b/doc/index.org @@ -50,13 +50,9 @@ how to instuct Javainspect what to do. After discovering application structure and optionally filtering out unimportant parts, JavaInspect produces GraphViz dot file that -describes data to be visualized. Then launches GraphViz to generate +describes data to be visualized. Then launches [[https://graphviz.org/][GraphViz]] to generate bitmap graph in PNG or SVG format. -By default on your Desktop directory when operated in library mode or -current working directory when operated as standalone commandline -application. - Notes: + JavaInspect is developed and tested so far only on GNU/Linux. + See: [[https://github.com/pahen/madge][Madge - similar tool for JavaScript]] @@ -145,20 +141,18 @@ Control code in general does the following: 1. Create graph object. 2. Java reflection/classloaders does not provide mechanism for discovering all classes under given package. Therefore you need to - declare at least some classes to be added to the graph by: - + Manually adding individual classes to the graph. - + and/or: Let GraphViz recursively scan and parse specified - directories with Java source code files to discover class names. - + For every class added to the graph, GraphViz will recursively - inspect it and add all referecned classes to the graph as well. + declare at least some classes to be added to the graph by manually + adding individual classes to the graph. For every class added to + the graph, GraphViz will recursively inspect it and add all + referecned classes to the graph as well. 3. Graphs easilly get very big and complex so optionally we filter - important code using classname wildcards patterns based blacklist - and/or whitelist. + important code using classname [[https://en.wikipedia.org/wiki/Glob_(programming)][glob]] patterns based blacklist and/or + whitelist. 4. Optionally we can tune some rendering parameters like: + Possibility to remove orphaned classes (classes with no references) from the graph. + Specify target directory for generated visualization - files. (Default is user desktop directory) + files. (Default is current directory) + Keep intermediate GraphViz dot file for later inspection. 5. Render graph. @@ -199,29 +193,7 @@ Result: - Generated DOT file: [[file:JavaInspect.dot][JavaInspect.dot]] - Generated PNG image: [[file:JavaInspect.png][JavaInspect.png]] -*** example 2: scan java code, apply filters -#+BEGIN_SRC java -// Create graph -final ClassGraph graph = new ClassGraph(); - -// Recursively scan current directory for Java source code and attempt -// to detect class names from there to be added to the graph. -graph.addProject("."); - -// Blacklist example classes from being shown on the graph -graph.blacklistClassPattern("eu.svjatoslav.inspector.java.structure.example.*"); - -// do not show single classes with no relationships on the graph -graph.hideOrphanedClasses(); - -// Produce bitmap image titled "JavaInspect full project.png" to the -// user Desktop directory. -graph.generateGraph("JavaInspect full project"); -#+END_SRC -Result: - - Generated PNG image: [[file:JavaInspect%20full%20project.png][JavaInspect full project.png]] - -*** example 3: GraphViz embedded in another project +*** example 2: GraphViz embedded in another project 1. Download project Sixth [[https://www2.svjatoslav.eu/gitweb/?p=sixth.git;a=snapshot;h=HEAD;sf=tgz][code snapshot]]. 2. Inspect and run *DataGraph.java*. @@ -234,7 +206,7 @@ Declare JavaInspect as dependency: eu.svjatoslav javainspect - 1.6 + 1.7 ... @@ -299,8 +271,10 @@ LOT of cool ideas could be implemented. For intstance: - PlantUML (TODO) - Interactive 3D visualization (TODO) -- FEATURE: Replace internal java parser in package - eu.svjatoslav.inspector.java.methods with: https://javaparser.org/ +- FEATURE: Implement (or integrate existing java parser + https://javaparser.org/) to be able to produce code visualizations + based on source code (in addition to current reflection based + approach). - FEATURE: Integarte with [[http://plantuml.com/class-diagram][PlantUML]]. diff --git a/usage examples/demo project/.gitignore b/usage examples/demo project/.gitignore index 44bfb57..49ea519 100644 --- a/usage examples/demo project/.gitignore +++ b/usage examples/demo project/.gitignore @@ -1,3 +1,4 @@ /.idea/ /target/ -/example.svg \ No newline at end of file +/example.svg +/*.iml \ No newline at end of file -- 2.20.1