This program is free software; you can redistribute it and/or modify
it under the terms of version 3 of the GNU Lesser General Public
-License or later as published by the Free Software Foundation.
+License or later as published by the Free Software Foundation.
+
Goal: simplify/speed up understanding the computer program code by
@@ -208,12 +247,14 @@ up with 2 solutions:
-
Add JavaInspect library in your project as a dependency.
+
Add JavaInspect library in your project as a dependency.
+
Create new Java project for the purpose visualizing your other
projects and include JavaInspect and your projecs binary artifacts
(Jar's) into new project classpath. Built binary Jar's (with no
source code) are sufficient because JavaInspect operates via
-reflection.
+reflection.
+
@@ -224,42 +265,42 @@ bitmap graph in PNG format. By default on your Desktop directory.
-Note: GraphViz is developed and tested so far only on GNU Linux.
+Note: GraphViz is developed and tested so far only on GNU/Linux.
Currently the only way to control JavaInspect is by using Java
@@ -273,35 +314,46 @@ product or project artifact I'm just willing to visualize.
Control code in general does the following:
-
Create graph object.
+
Create graph object.
+
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.
+
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.
+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.
-
+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.
+and/or whitelist.
+
Optionally we can tune some rendering parameters like:
Possibility to remove orphaned classes (classes with no
-references) from the graph.
+references) from the graph.
+
Specify target directory for generated visualization
-files. (Default is user desktop directory)
-
Keep intermediate GraphViz dot file for later inspection.
-
-
Render graph.
+files. (Default is user desktop directory)
+
+
Keep intermediate GraphViz dot file for later inspection.
+
+
+
+
Render graph.
+
-
-
3.1 example 1: individually picked objects
+
+
3.1 example 1: individually picked objects
This example demonstrates generating of class graph from hand picked
@@ -310,22 +362,22 @@ classes and visualizing GraphViz itself.
// Create graph
+finalClassGraphgraph = newClassGraph();
-// Add some random object to the graph. GraphViz will detect Class from
-// the object.
-graph.add(graph);
+// Add some random object to the graph. GraphViz will detect Class from
+// the object.
+graph.add(graph);
-// Also add some random class to the graph.
-graph.add(Utils.class);
+// Also add some random class to the graph.
+graph.add(Utils.class);
-// Keep intermediary GraphViz DOT file for reference.
-graph.setKeepDotFile(true);
+// Keep intermediary GraphViz DOT file for reference.
+graph.setKeepDotFile(true);
-// Produce bitmap image titled "JavaInspect.png" to the user Desktop
-// directory
-graph.generateGraph("JavaInspect");
+// Produce bitmap image titled "JavaInspect.png" to the user Desktop
+// directory
+graph.generateGraph("JavaInspect");
@@ -334,8 +386,8 @@ Note: if desired, more compact version of the above:
// Create graph
+finalClassGraphgraph = newClassGraph();
-// Recursively scan current directory for Java source code and attempt
-// to detect class names from there to be added to the graph.
-graph.addProject(".");
+// 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.*");
+// 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();
+// 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");
+// Produce bitmap image titled "JavaInspect full project.png" to the
+// user Desktop directory.
+graph.generateGraph("JavaInspect full project");
GraphViz - shall be installed on the computer.
@@ -450,35 +507,66 @@ On Ubuntu/Debian use:
-
-
6 TO DO
+
+
6 TO DO
BUG: Should not hide references if there are too many of them to classes if
referring classes are not visible anyway because of blacklist/whitelist rules.
-Basically reference counting should exclude not visible classes.
-
FEATURE: add dark theme
-
FEATURE: sort Class fields by alphabet
+Basically reference counting should exclude not visible classes.
+
+