<html lang="en">
<head>
<title>JavaInspect - Utility to visualize java software</title>
-<!-- 2018-01-14 Sun 02:21 -->
+<!-- 2018-06-24 Sun 02:25 -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="generator" content="Org-mode">
<meta name="author" content="Svjatoslav Agejenko">
-<link href="https://bootswatch.com/4/darkly/bootstrap.min.css" rel="stylesheet">
-<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
-<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.1/js/bootstrap.min.js"></script>"
+<link href="https://bootswatch.com/3/darkly/bootstrap.min.css" rel="stylesheet">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/js/bootstrap.min.js"></script>
<style type="text/css">
footer {background-color: #111 !important;}
pre {background-color: #111; color: #ccc;}
<body>
<div id="content" class="container">
<div class="row"><div class="col-md-9"><h1 class="title">JavaInspect - Utility to visualize java software</h1>
-<hr >
-<ul class="org-ul">
-<li><a href="http://www2.svjatoslav.eu/gitweb/?p=javainspect.git;a=snapshot;h=HEAD;sf=tgz">download latest snapshot</a>
-</li>
-<li>This program is free software; you can redistribute it and/or modify
-it under the terms of version 3 of the <a href="https://www.gnu.org/licenses/lgpl.html">GNU Lesser General Public
-License</a> or later as published by the Free Software Foundation.
+<div id="outline-container-sec-1" class="outline-2">
+<h2 id="sec-1"><span class="section-number-2">1</span> General</h2>
+<div class="outline-text-2" id="text-1">
+<ul class="org-ul">
+<li>This program is free software: you can redistribute it and/or modify
+it under the terms of the <a href="https://www.gnu.org/licenses/lgpl.html">GNU Lesser General Public License</a> as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
</li>
<li>Program authors:
</li>
<li>Email: <a href="mailto://svjatoslav@svjatoslav.eu">mailto://svjatoslav@svjatoslav.eu</a>
</li>
+<li><a href="http://www.svjatoslav.eu/projects/">Other software projects hosted at svjatoslav.eu</a>
+</li>
</ul>
</li>
</li>
</ul>
</li>
+</ul>
+</div>
-<li><a href="http://www.svjatoslav.eu/programs.jsp">other applications hosted at svjatoslav.eu</a>
+<div id="outline-container-sec-1-1" class="outline-3">
+<h3 id="sec-1-1"><span class="section-number-3">1.1</span> Source code</h3>
+<div class="outline-text-3" id="text-1-1">
+<ul class="org-ul">
+<li><a href="http://www2.svjatoslav.eu/gitweb/?p=javainspect.git;a=snapshot;h=HEAD;sf=tgz">Download latest snapshot in TAR GZ format</a>
+</li>
+
+<li><a href="http://www2.svjatoslav.eu/gitweb/?p=javainspect.git;a=summary">Browse Git repository online</a>
+</li>
+
+<li>Clone Git repository using command:
+<pre class="example">
+git clone http://www2.svjatoslav.eu/git/javainspect.git
+</pre>
</li>
</ul>
+</div>
+</div>
+</div>
-<div id="outline-container-sec-1" class="outline-2">
-<h2 id="sec-1"><span class="section-number-2">1</span> General</h2>
-<div class="outline-text-2" id="text-1">
+<div id="outline-container-sec-2" class="outline-2">
+<h2 id="sec-2"><span class="section-number-2">2</span> Goal and operating principle</h2>
+<div class="outline-text-2" id="text-2">
<p>
Goal: simplify/speed up understanding the computer program code by
automatically visualizing its structure.
</p>
<p>
-JavaInspect can be used as a <a href="#sec-3-1">standalone commandline utility</a> as well as
-<a href="#sec-3-2">java library</a>. JavaInspect uses primarily Java built-in reflection to
+JavaInspect can be used as a <a href="#sec-4-1">standalone commandline utility</a> as well as
+<a href="#sec-4-2">java library</a>. JavaInspect uses primarily Java built-in reflection to
discover and visualize any part of Java program.
</p>
<p>
JavaInspect currently has no GUI, configuration files, embedded
-scripting support, direct Maven or Ant integration. See <a href="#sec-3">usage</a> to learn
+scripting support, direct Maven or Ant integration. See <a href="#sec-4">usage</a> to learn
how to instuct Javainspect what to do.
</p>
</div>
</div>
-<div id="outline-container-sec-2" class="outline-2">
-<h2 id="sec-2"><span class="section-number-2">2</span> Example graphs</h2>
-<div class="outline-text-2" id="text-2">
+<div id="outline-container-sec-3" class="outline-2">
+<h2 id="sec-3"><span class="section-number-2">3</span> Example graphs</h2>
+<div class="outline-text-2" id="text-3">
<ul class="org-ul">
<li>A very simple example:
</div>
</div>
-<div id="outline-container-sec-3" class="outline-2">
-<h2 id="sec-3"><a id="ID-2ad2889e-6c95-4662-b3f4-2c341fc74522" name="ID-2ad2889e-6c95-4662-b3f4-2c341fc74522"></a><span class="section-number-2">3</span> Usage</h2>
-<div class="outline-text-2" id="text-3">
+<div id="outline-container-sec-4" class="outline-2">
+<h2 id="sec-4"><a id="ID-2ad2889e-6c95-4662-b3f4-2c341fc74522" name="ID-2ad2889e-6c95-4662-b3f4-2c341fc74522"></a><span class="section-number-2">4</span> Usage</h2>
+<div class="outline-text-2" id="text-4">
<p>
JavaInspect can be controlled in 2 different ways:
</p>
<ul class="org-ul">
-<li><a href="#sec-3-1">as standalone commandline utility</a>
+<li><a href="#sec-4-1">as standalone commandline utility</a>
</li>
-<li><a href="#sec-3-2">as embedded Java library via Java API</a>
+<li><a href="#sec-4-2">as embedded Java library via Java API</a>
</li>
</ul>
</div>
-<div id="outline-container-sec-3-1" class="outline-3">
-<h3 id="sec-3-1"><a id="ID-acf1896a-74b4-4914-acf6-a77075e07f25" name="ID-acf1896a-74b4-4914-acf6-a77075e07f25"></a><span class="section-number-3">3.1</span> usage as commandline utility</h3>
-<div class="outline-text-3" id="text-3-1">
+<div id="outline-container-sec-4-1" class="outline-3">
+<h3 id="sec-4-1"><a id="ID-acf1896a-74b4-4914-acf6-a77075e07f25" name="ID-acf1896a-74b4-4914-acf6-a77075e07f25"></a><span class="section-number-3">4.1</span> usage as commandline utility</h3>
+<div class="outline-text-3" id="text-4-1">
<p>
To enable commandline support, (study and) execute script:
</p>
</p>
</div>
</div>
-<div id="outline-container-sec-3-2" class="outline-3">
-<h3 id="sec-3-2"><a id="ID-bbeeffc8-3767-440d-8d93-ec9124dd60ee" name="ID-bbeeffc8-3767-440d-8d93-ec9124dd60ee"></a><span class="section-number-3">3.2</span> usage via Java API</h3>
-<div class="outline-text-3" id="text-3-2">
+<div id="outline-container-sec-4-2" class="outline-3">
+<h3 id="sec-4-2"><a id="ID-bbeeffc8-3767-440d-8d93-ec9124dd60ee" name="ID-bbeeffc8-3767-440d-8d93-ec9124dd60ee"></a><span class="section-number-3">4.2</span> usage via Java API</h3>
+<div class="outline-text-3" id="text-4-2">
<p>
Requires that classes to be visualised are available in the classpath.
</p>
</div>
-<div id="outline-container-sec-3-2-1" class="outline-4">
-<h4 id="sec-3-2-1"><span class="section-number-4">3.2.1</span> example 1: individually picked objects</h4>
-<div class="outline-text-4" id="text-3-2-1">
+<div id="outline-container-sec-4-2-1" class="outline-4">
+<h4 id="sec-4-2-1"><span class="section-number-4">4.2.1</span> example 1: individually picked objects</h4>
+<div class="outline-text-4" id="text-4-2-1">
<p>
This example demonstrates generating of class graph from hand picked
classes and visualizing GraphViz itself.
<div class="org-src-container">
-<pre class="src src-java"><span style="color: #8C8C8C;">// </span><span style="color: #8C8C8C;">Create graph</span>
-<span style="color: #F92672;">final</span> <span style="color: #66D9EF;">ClassGraph</span> <span style="color: #FD971F;">graph</span> = <span style="color: #F92672;">new</span> <span style="color: #66D9EF;">ClassGraph</span>();
+<pre class="src src-java">// Create graph
+final ClassGraph graph = new ClassGraph();
-<span style="color: #8C8C8C;">// </span><span style="color: #8C8C8C;">Add some random object to the graph. GraphViz will detect Class from</span>
-<span style="color: #8C8C8C;">// </span><span style="color: #8C8C8C;">the object.</span>
+// Add some random object to the graph. GraphViz will detect Class from
+// the object.
graph.add(graph);
-<span style="color: #8C8C8C;">// </span><span style="color: #8C8C8C;">Also add some random class to the graph.</span>
-graph.add(Utils.<span style="color: #F92672;">class</span>);
+// Also add some random class to the graph.
+graph.add(Utils.class);
-<span style="color: #8C8C8C;">// </span><span style="color: #8C8C8C;">Keep intermediary GraphViz DOT file for reference.</span>
-graph.setKeepDotFile(<span style="color: #FF80F4;">true</span>);
+// Keep intermediary GraphViz DOT file for reference.
+graph.setKeepDotFile(true);
-<span style="color: #8C8C8C;">// </span><span style="color: #8C8C8C;">Produce bitmap image titled "JavaInspect.png" to the user Desktop</span>
-<span style="color: #8C8C8C;">// </span><span style="color: #8C8C8C;">directory</span>
-graph.generateGraph(<span style="color: #EEDC82;">"JavaInspect"</span>);
+// Produce bitmap image titled "JavaInspect.png" to the user Desktop
+// directory
+graph.generateGraph("JavaInspect");
</pre>
</div>
</p>
<div class="org-src-container">
-<pre class="src src-java"><span style="color: #F92672;">new</span> <span style="color: #66D9EF;">ClassGraph</span>().add(randomObject, RandomClass.<span style="color: #F92672;">class</span>)
- .setKeepDotFile(<span style="color: #FF80F4;">true</span>).generateGraph(<span style="color: #EEDC82;">"JavaInspect"</span>);
+<pre class="src src-java">new ClassGraph().add(randomObject, RandomClass.class)
+ .setKeepDotFile(true).generateGraph("JavaInspect");
</pre>
</div>
</div>
</div>
-<div id="outline-container-sec-3-2-2" class="outline-4">
-<h4 id="sec-3-2-2"><span class="section-number-4">3.2.2</span> example 2: scan java code, apply filters</h4>
-<div class="outline-text-4" id="text-3-2-2">
+<div id="outline-container-sec-4-2-2" class="outline-4">
+<h4 id="sec-4-2-2"><span class="section-number-4">4.2.2</span> example 2: scan java code, apply filters</h4>
+<div class="outline-text-4" id="text-4-2-2">
<div class="org-src-container">
-<pre class="src src-java"><span style="color: #8C8C8C;">// </span><span style="color: #8C8C8C;">Create graph</span>
-<span style="color: #F92672;">final</span> <span style="color: #66D9EF;">ClassGraph</span> <span style="color: #FD971F;">graph</span> = <span style="color: #F92672;">new</span> <span style="color: #66D9EF;">ClassGraph</span>();
+<pre class="src src-java">// Create graph
+final ClassGraph graph = new ClassGraph();
-<span style="color: #8C8C8C;">// </span><span style="color: #8C8C8C;">Recursively scan current directory for Java source code and attempt</span>
-<span style="color: #8C8C8C;">// </span><span style="color: #8C8C8C;">to detect class names from there to be added to the graph.</span>
-graph.addProject(<span style="color: #EEDC82;">"."</span>);
+// Recursively scan current directory for Java source code and attempt
+// to detect class names from there to be added to the graph.
+graph.addProject(".");
-<span style="color: #8C8C8C;">// </span><span style="color: #8C8C8C;">Blacklist example classes from being shown on the graph</span>
-graph.blacklistClassPattern(<span style="color: #EEDC82;">"eu.svjatoslav.inspector.java.structure.example.*"</span>);
+// Blacklist example classes from being shown on the graph
+graph.blacklistClassPattern("eu.svjatoslav.inspector.java.structure.example.*");
-<span style="color: #8C8C8C;">// </span><span style="color: #8C8C8C;">do not show single classes with no relationships on the graph</span>
+// do not show single classes with no relationships on the graph
graph.hideOrphanedClasses();
-<span style="color: #8C8C8C;">// </span><span style="color: #8C8C8C;">Produce bitmap image titled "JavaInspect full project.png" to the</span>
-<span style="color: #8C8C8C;">// </span><span style="color: #8C8C8C;">user Desktop directory.</span>
-graph.generateGraph(<span style="color: #EEDC82;">"JavaInspect full project"</span>);
+// Produce bitmap image titled "JavaInspect full project.png" to the
+// user Desktop directory.
+graph.generateGraph("JavaInspect full project");
</pre>
</div>
<p>
</div>
</div>
-<div id="outline-container-sec-3-2-3" class="outline-4">
-<h4 id="sec-3-2-3"><span class="section-number-4">3.2.3</span> example 3: GraphViz embedded in another project</h4>
-<div class="outline-text-4" id="text-3-2-3">
+<div id="outline-container-sec-4-2-3" class="outline-4">
+<h4 id="sec-4-2-3"><span class="section-number-4">4.2.3</span> example 3: GraphViz embedded in another project</h4>
+<div class="outline-text-4" id="text-4-2-3">
<ol class="org-ol">
<li>Download project Sixth <a href="http://www2.svjatoslav.eu/gitweb/?p=sixth.git;a=snapshot;h=HEAD;sf=tgz">code snapshot</a>.
</li>
</div>
</div>
-<div id="outline-container-sec-3-2-4" class="outline-4">
-<h4 id="sec-3-2-4"><span class="section-number-4">3.2.4</span> Embedding JavaInspect in your Maven project</h4>
-<div class="outline-text-4" id="text-3-2-4">
+<div id="outline-container-sec-4-2-4" class="outline-4">
+<h4 id="sec-4-2-4"><span class="section-number-4">4.2.4</span> Embedding JavaInspect in your Maven project</h4>
+<div class="outline-text-4" id="text-4-2-4">
<p>
Declare JavaInspect as dependency:
</p>
<div class="org-src-container">
-<pre class="src src-xml"><<span style="color: #A6E22E;">dependencies</span>>
+<pre class="src src-xml"><dependencies>
...
- <<span style="color: #A6E22E;">dependency</span>>
- <<span style="color: #A6E22E;">groupId</span>>eu.svjatoslav</<span style="color: #A6E22E;">groupId</span>>
- <<span style="color: #A6E22E;">artifactId</span>>javainspect</<span style="color: #A6E22E;">artifactId</span>>
- <<span style="color: #A6E22E;">version</span>>1.6</<span style="color: #A6E22E;">version</span>>
- </<span style="color: #A6E22E;">dependency</span>>
+ <dependency>
+ <groupId>eu.svjatoslav</groupId>
+ <artifactId>javainspect</artifactId>
+ <version>1.6</version>
+ </dependency>
...
-</<span style="color: #A6E22E;">dependencies</span>>
+</dependencies>
</pre>
</div>
</p>
<div class="org-src-container">
-<pre class="src src-xml"><<span style="color: #A6E22E;">repositories</span>>
+<pre class="src src-xml"><repositories>
...
- <<span style="color: #A6E22E;">repository</span>>
- <<span style="color: #A6E22E;">id</span>>svjatoslav.eu</<span style="color: #A6E22E;">id</span>>
- <<span style="color: #A6E22E;">name</span>>Svjatoslav repository</<span style="color: #A6E22E;">name</span>>
- <<span style="color: #A6E22E;">url</span>>http://www2.svjatoslav.eu/maven/</<span style="color: #A6E22E;">url</span>>
- </<span style="color: #A6E22E;">repository</span>>
+ <repository>
+ <id>svjatoslav.eu</id>
+ <name>Svjatoslav repository</name>
+ <url>http://www2.svjatoslav.eu/maven/</url>
+ </repository>
...
-</<span style="color: #A6E22E;">repositories</span>>
+</repositories>
</pre>
</div>
</div>
</div>
</div>
-<div id="outline-container-sec-4" class="outline-2">
-<h2 id="sec-4"><span class="section-number-2">4</span> Requirements</h2>
-<div class="outline-text-2" id="text-4">
+<div id="outline-container-sec-5" class="outline-2">
+<h2 id="sec-5"><span class="section-number-2">5</span> Requirements</h2>
+<div class="outline-text-2" id="text-5">
<p>
<a href="http://www.graphviz.org/">GraphViz</a> - shall be installed on the computer.
</p>
</div>
</div>
</div>
-<div id="outline-container-sec-5" class="outline-2">
-<h2 id="sec-5"><span class="section-number-2">5</span> TO DO</h2>
-<div class="outline-text-2" id="text-5">
+<div id="outline-container-sec-6" class="outline-2">
+<h2 id="sec-6"><span class="section-number-2">6</span> TO DO</h2>
+<div class="outline-text-2" id="text-6">
<p>
Note: Because this is side project (and I have many of them) I can
only contribute few hours per year at average. Any help is welcome. A
</div><div class="col-md-3"><nav id="table-of-contents">
<div id="text-table-of-contents" class="bs-docs-sidebar">
<ul class="nav">
-<li><a href="#sec-1">1. General</a></li>
-<li><a href="#sec-2">2. Example graphs</a></li>
-<li><a href="#sec-3">3. Usage</a>
+<li><a href="#sec-1">1. General</a>
+<ul class="nav">
+<li><a href="#sec-1-1">1.1. Source code</a></li>
+</ul>
+</li>
+<li><a href="#sec-2">2. Goal and operating principle</a></li>
+<li><a href="#sec-3">3. Example graphs</a></li>
+<li><a href="#sec-4">4. Usage</a>
<ul class="nav">
-<li><a href="#sec-3-1">3.1. usage as commandline utility</a></li>
-<li><a href="#sec-3-2">3.2. usage via Java API</a></li>
+<li><a href="#sec-4-1">4.1. usage as commandline utility</a></li>
+<li><a href="#sec-4-2">4.2. usage via Java API</a></li>
</ul>
</li>
-<li><a href="#sec-4">4. Requirements</a></li>
-<li><a href="#sec-5">5. TO DO</a></li>
+<li><a href="#sec-5">5. Requirements</a></li>
+<li><a href="#sec-6">6. TO DO</a></li>
</ul>
</div>
</nav>
</div></div></div>
<footer id="postamble" class="">
<div><p class="author">Author: Svjatoslav Agejenko</p>
-<p class="date">Created: 2018-01-14 Sun 02:21</p>
+<p class="date">Created: 2018-06-24 Sun 02:25</p>
<p class="creator"><a href="http://www.gnu.org/software/emacs/">Emacs</a> 25.1.1 (<a href="http://orgmode.org">Org-mode</a> 8.2.10)</p>
</div>
</footer>