Skip to content

hcoles/highwheel

Repository files navigation

Build Status

Highwheel

Highwheel is a tool to detect and visualise class and package cycles in Java code.

It differs from other tools such as

In that it generates visualisations of the detected cycles and provides much more data about the detected dependencies.

To make it easier to make headway when working with legacy code, Highwheel also breaks down large cycles into their smaller elemental sub-cycles for easier comprehension.

Cycles are detected using tarjen's algorithm.

As fixing package cycles often involves moving classes between packages highwheel also reports unit tests that look to have been left the wrong package when their testee is moved ( for maven only in latest snapshot ).

Documentation

TODO

But briefly

Maven

Analyse a single project, or a each module within a multi-module project individually.

mvn org.pitest:highwheel-maven:analyse 

Analyse a multi-module project as a single component

mvn -DparentOnly=true org.pitest:highwheel-maven:analyse 

By default assumes that your package names match your group id. If not can supply a filter using Glob syntax.

mvn -DclassFilter=com.bigcompany.* org.pitest:highwheel-maven:analyse 

All options can of course be configured in your pom.xml.

Seperate goal dumps decompiled bytecode to disk

mvn org.pitest:highwheel-bytecode:asmDump

Ant

Create a task and pass in an analysisPath and filter

<taskdef name="highwheel" classname="org.pitest.highwheel.ant.AnalyseTask" classpathref="<path to jar>"/>

<target name="highwheel" depends="compile">
  <highwheel analysisPathRef="code.path" filter="com.example.*"/>
</target>

About

Tool to detect and visualise class and package cycles

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages