X-Git-Url: http://www2.svjatoslav.eu/gitweb/?p=javainspect.git;a=blobdiff_plain;f=doc%2Findex.org;fp=doc%2Findex.org;h=b831a37ee6c711f5c49268fd2fedf87794636ee0;hp=e2a4f89a52c2a4c4f0c88f8c8791d89d8f819cd6;hb=c505bd49b69970f4f8e1d4ae30933e1713d33d9b;hpb=c98cda3c339e0a3345884e17e7657301d285ca1f 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]].